commit 11ae3629b29edcb41343158a3e06530a608efb11 Author: byeongwook.choi Date: Mon Sep 21 13:23:37 2026 +0900 Initial commit: ABAP indexing pipeline (ingest, parser, summarize, index, query, wiki) Co-Authored-By: Claude Fable 5.1 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..4ba6270 --- /dev/null +++ b/.env.example @@ -0,0 +1,28 @@ +# DB — 기본 SQLite. PostgreSQL 전환 시 (ASSUMPTIONS.md 참고): +# DATABASE_URL=postgresql://abap:abap@localhost:5432/abap_index +#DATABASE_URL=sqlite:///./data/index.db + +# LLM (Stage 3 요약) — OpenAI 호환 엔드포인트 +# 키가 없으면 비워두고 SUMMARIZE_BACKEND=file 로 두면 된다 (프롬프트를 data/llm_jobs/ 에 +# 쌓아두고 사람·에이전트가 채우는 방식 — README "Stage 3 을 LLM 키 없이 돌리기" 참고) +LLM_BASE_URL= +LLM_API_KEY= +LLM_MODEL=glm-5.2 +# 동시 호출 수. 올리면 429 가 늘어나므로 아래 재시도 설정과 함께 조정한다. +LLM_CONCURRENCY=4 +LLM_MAX_RETRIES=5 +LLM_BACKOFF_BASE=2.0 +LLM_BACKOFF_MAX=60.0 +LLM_TIMEOUT_S=180 + +# /ingest 가 뒤이어 돌리는 요약의 백엔드: api | file | off +SUMMARIZE_BACKEND=api + +# 임베딩 — 모델 미정(계획서 §10). 비워두면 벡터 검색 비활성(FTS만) +EMBED_BASE_URL= +EMBED_API_KEY= +EMBED_MODEL= + +# 질의 API 서버 +INDEX_HOST=127.0.0.1 +INDEX_PORT=8100 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..16772d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +.env +__pycache__/ +*.pyc +.pytest_cache/ +data/raw/ +data/normalized/ +data/parsed/ +data/summaries/ +data/index.db* +eval/results/ +# 위키: programs/·packages/·concepts/ 는 커밋(사람 교정 대상). 로직 조각은 프로그램 문서 안의 섹션. +wiki/_review.md +.venv/ +data/llm_jobs/ +abap_indexing.egg-info/ diff --git a/ASSUMPTIONS.md b/ASSUMPTIONS.md new file mode 100644 index 0000000..4538749 --- /dev/null +++ b/ASSUMPTIONS.md @@ -0,0 +1,71 @@ +# ASSUMPTIONS — 계획서 §10 미결사항에 대한 진행 가정 + +계획서(§11.7)에 따라, 미결 사항은 가정을 두고 진행하고 여기에 기록한다. + +## 1. DB: PostgreSQL 대신 SQLite 로 시작 (계획서 §2 와 다름) + +- **가정/사유**: 개발 장비에 PostgreSQL 이 없고, 임베딩 모델이 미정이라 pgvector 가 아직 + 필요하지 않다. SQLite + FTS5 로 키워드/2-gram 검색은 충분히 동작한다. +- **전환 경로**: `index/schema_postgres.sql` 에 계획서 §6.1 원안(pgvector, tsvector) 유지. + `DATABASE_URL` 을 postgresql:// 로 바꾸고 `index/db.py` 에 pg 백엔드를 추가하면 된다 + (현재는 sqlite:// 만 구현 — pg URL 지정 시 명시적 에러). +- 전량(1만 본) 적재 후 성능 문제가 보이면 그 시점에 전환한다. + +## 2. 임베딩 모델 미정 → 벡터 검색 보류 + +- GLM 계열 임베딩 API 사용 가능 여부 미확인. 확정 전까지 `search_programs` 는 + FTS(단어 + 한글 2-gram) + **용어 사전 동의어 확장** + LIKE 로만 동작한다. +- 동의어 확장은 원질의와 **분리된 2단 검색**이다(`query/expand.py`). `fts_or` 가 토큰과 2-gram 을 + 전부 OR 로 잇는 재현율 편향 구조라, 동의어를 같은 식에 섞으면 정밀도가 더 나빠진다. + 동의어 히트는 `EXPANDED_WEIGHT` 감쇠를 받고 `matched_by='동의어 확장'` 으로 표시된다. +- **이 감쇠 계수는 아직 측정으로 정하지 않았다** — 정답셋(수정사항 7번)이 필요하다. +- `EMBED_*` 환경변수와 `index/embed.py` 어댑터 자리는 확보. 모델 확정 시 + 요약 텍스트 임베딩 → 하이브리드(RRF) 로 확장한다. + +## 3. GLM-5.2 인터페이스 / 키 미확보 상태의 실행 경로 + +- OpenAI 호환(`/chat/completions`, `response_format: json_object`)으로 가정 + (`summarize/llm_client.py`). +- **키가 없어도 Stage 3 을 돌릴 수 있다** (2026-09-16 추가). 백엔드 3종: + - `api` — 환경변수 키로 호출. 429/5xx 는 지수 백오프로 재시도한다(`Retry-After` 존중). + - `file` — 프롬프트를 `data/llm_jobs/.prompt.md` 로 내놓고 `.response.json` 을 기다린다. + 사람이 채워도 되고 코딩 에이전트가 프롬프트를 읽고 채워도 된다. `summarize/jobs.py` CLI 가 + 목록·조회·**스키마 검증 저장**을 돕는다. 프롬프트 id 는 내용 해시라 재실행해도 같은 파일을 가리킨다. + - `fake` — 스키마만 맞는 더미. 파이프라인 배선 검증용이며 **품질 검증이 아니다**. +- 무료 티어(OpenRouter `z-ai/glm-5.2:free`)로 시도한 이력이 `llm_usage_log` 에 남아 있고 + 실패 원인은 전부 429 였다. 재시도가 없던 탓에 unit 이 `failed` 로 굳었다 — 지금은 재시도한다. +- 프로그램 요약은 unit 프롬프트의 문맥이므로 **요약이 먼저 확정돼야** unit 프롬프트를 내놓는다. + (요약이 나중에 채워지면 unit 프롬프트 내용이 달라져 같은 unit 을 두 번 답해야 한다.) + +## 4. 전역 클래스/펑션그룹 소스 미수집 + +- `zcl_fi_common` 등은 호출 그래프에서 외부 노드(external_name)로만 표시. + +## 5. 테이블 정보(DD02T/DD03L) / T-Code(TSTC) 미확보 + +- `ddic_table`, `ddic_field`, `tcode` 테이블은 스키마만 존재. 데이터 확보 시 적재. + +## 6. 소스 파일 단위 + +- 수집 파일 1개 = 프로그램 1개(MAIN_PROGRAM) 로 가정. 배열로 여러 프로그램이 오는 + 형식이 발견되면 `ingest/normalize.py` 의 classify 를 확장한다. + +## 7. 재수집/증분 + +- 전체 재수집 후 해시 비교 방식으로 가정. `program.source_hash` 가 같으면 스킵, + 다르면 구조 재적재 + `summary_status='stale'` 마킹(요약 재생성 대상). + +## 8. unit 단위 증분은 v2 + +- 현재 로더는 프로그램 단위로 삭제 후 재적재. 해시가 같은 unit 의 요약·로직 조각은 + unit_id 가 동일하므로 재적재 후에도 보존된다(그 외 unit 의 조각은 삭제 → 재추출). + +## 9. 인덱스 단위 = LLM 이 골라낸 로직 조각 (2026-09-16 구조 변경) + +- 계획서의 "unit 마다 요약 하나" 대신, LLM 이 unit 코드를 읽고 **의미 있는 로직 조각**을 + 0개 이상 골라내 각각 설명을 붙인다. 의미 없는 코드(선언·초기화·ALV 설정 …)는 인덱스에서 버린다. +- LLM 에게 코드를 보여주는 창은 파서 unit(300줄 초과 시 sub_chunks 창)이고, 프로그램 요약을 + 문맥으로 함께 준다. 근거·대안 비교는 `docs/logic-chunk-design.md`. +- 조각의 줄 번호는 first_line 앵커로 검증·보정하고, 테이블·호출은 파서로 다시 뽑는다. +- 얇은 unit 색인(이름·주석·한 줄 요약)은 남겨 버려진 코드도 unit 이름으로는 도달 가능하게 한다. +- 조각의 크기 기준(3~80줄), 버리는 코드의 범위는 프롬프트 규칙이며 파일럿 결과로 조정한다. diff --git a/KakaoTalk_20190618_000251838.png b/KakaoTalk_20190618_000251838.png new file mode 100644 index 0000000..8103280 Binary files /dev/null and b/KakaoTalk_20190618_000251838.png differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..9016a91 --- /dev/null +++ b/README.md @@ -0,0 +1,164 @@ +# abap-indexing + +ABAP 소스코드 인덱싱 서버. 약 1만 본의 ABAP 프로그램 소스와 프로그램 메타정보를 +정규화 → 구조 파싱 → (LLM 로직 조각 추출) → 인덱싱하고, 질의 API 를 제공한다. +계획서: `ABAP_INDEXING_PLAN.md` (Downloads), 진행 가정: `ASSUMPTIONS.md`. + +**조각의 코드 원문은 로직만이고, 붙여넣는 데 필요한 선언(정의부)은 따로 수집한다** — ABAP 은 +내부테이블·스트럭처를 TOP 에 선언하므로 로직만 복사하면 컴파일되지 않는다. +쓸지 말지는 붙여넣는 쪽 LLM 이 정한다. → `docs/definition-block-design.md` + +**인덱스의 1차 단위는 로직 조각(logic chunk)** 이다. 파서가 자른 FORM/METHOD 는 LLM 에게 코드를 +나눠 보여주는 창이고, LLM 이 그 안에서 업무적으로 의미 있는 조각(특정 SQL, DB 갱신, BAPI 호출, +집계 LOOP …)을 골라내 설명을 붙인다. 의미 없는 코드는 인덱스에서 버린다. → `docs/logic-chunk-design.md` + +**소비자**: `opencode-be` 레포의 OpenCode 커스텀 툴(`.opencode/tool/_index_client.ts`)이 +이 서버의 HTTP API 를 호출한다 (기본 `http://127.0.0.1:8100`). + +## 파이프라인 + +``` +data/raw/*.txt (수집 JSON) + → python -m ingest.normalize # Stage 1: 줄바꿈 아티팩트 제거, 프로그램/인클루드 파일화 + → python -m parser.run # Stage 2: unit·참조·데이터플로우·호출그래프·정의부 (LLM 없이) + → python -m index.loader # Stage 4: SQLite(FTS5) 적재 + → python -m summarize.runner # Stage 3: 프로그램 요약 → unit 별 로직 조각 추출 + → python -m wiki_out.run --all # OKF v0.2 위키 (프로그램 문서 + tables/functions 엔티티) + → python -m query.api # Stage 5: 질의 API :8100 + → python -m eval.run_eval # Stage 6: recall / 조각 적중 / 추적 평가 +``` + +## 설치 / 실행 + +```bash +python -m venv .venv && .venv/Scripts/python -m pip install -e ".[dev]" # Linux/mac: .venv/bin/python +cp .env.example .env +# data/raw/ 에 수집 파일(ZFI01.txt, ZFIR10070.txt 형식) 배치 +python -m ingest.normalize && python -m parser.run && python -m index.loader +python -m query.api # 127.0.0.1:8100 +``` + +테스트: `python -m pytest` (샘플 데이터가 있으면 §4.6 실측 검증 포함) + +파서나 색인 로직을 바꿨으면 소스가 그대로라도 재적재가 필요하다: +`python -m index.loader --force` +(정의부를 처음 붙이는 기존 DB 도 `python -m parser.run && python -m index.loader --force` 한 번이 필요하다 — +`declaration` 테이블은 빈 채로 만들어지고 재적재 때 채워진다.) + +### 서버가 코드 변경을 반영하지 않을 때 + +`/dashboard` 와 `/wiki-viewer` 는 **템플릿(html)을 요청마다 다시 읽지만**, 파이썬 모듈은 +프로세스에 캐시된다(`sys.modules`). 그래서 CSS·JS 를 고치면 새로고침만으로 보이지만 +`wiki_out/viewer.py` 같은 **파이썬 코드를 고치면 서버를 다시 띄워야** 한다. +(실제로 조각 내비게이션을 추가했는데 사이드바가 계속 0 으로 보인 적이 있다.) + +- 개발 중에는 자동 재시작: `python -m query.api --reload` +- 낡았는지 확인: `GET /health` 의 `started_at` 이 코드 수정 시각보다 이전인지 본다 + +## Stage 3 을 LLM 키 없이 돌리기 + +`--llm file` 은 프롬프트를 `data/llm_jobs/` 에 파일로 내놓고 응답 파일을 기다린다. +사람이 채워도 되고, 코딩 에이전트가 프롬프트를 읽고 채워도 된다. + +```bash +python -m summarize.runner --llm file --program ZFIR10070 --limit 3 # 1) 프롬프트 내놓기 +python -m summarize.jobs list --pending # 2) 대기 목록 +python -m summarize.jobs show # 프롬프트 읽기 +python -m summarize.jobs answer --file answer.json # 3) 응답 저장(스키마 검증) +python -m summarize.runner --llm file --program ZFIR10070 --limit 3 # 4) 같은 명령 → 적재 +``` + +프로그램 요약은 unit 프롬프트의 **문맥**이므로 먼저 답해야 한다 — 요약이 대기 중이면 그 프로그램의 +unit 프롬프트는 나오지 않는다(요약이 채워진 뒤 프롬프트 내용이 달라져 두 번 답하게 되는 것을 막는다). + +백엔드 3종: `--llm api`(환경변수 키) / `--llm file`(키 불필요) / `--llm fake`(배선 검증용 더미). +`/ingest` 가 뒤이어 돌리는 요약의 백엔드는 `SUMMARIZE_BACKEND=api|file|off` 로 고른다. +큐 현황은 `GET /summaries/jobs` 또는 `python -m summarize.jobs stats`. + +## 결과를 다른 PC 로 가져가기 + +### 방법 A — 단일 HTML 스냅샷 (파이썬·서버 불필요) + +```bash +python -m wiki_out.viewer # → data/wiki-viewer.html (약 1.2 MB) +python -m query.dashboard # → data/dashboard.html (약 1.4 MB) +``` + +데이터가 파일 안에 박히므로 **그 파일 하나만 복사해 브라우저로 열면** 된다. +로직 조각의 소스 원문과 자연어 설명, 테이블·펑션 문서, 관측소 수치가 모두 들어 있다. +외부 스크립트·이미지를 받지 않으며, 웹폰트는 못 받아도 시스템 한글 글꼴로 폴백한다(폐쇄망 가능). + +안 되는 것: 조각 **검색**(`/search/logic`)과 `trace_variable`·`get_call_graph`·`get_table_usage` +같은 구조 도구. 이건 DB 질의라 서버가 필요하다 (뷰어 사이드바의 문서 검색은 동작). + +### 방법 B — 인덱스째로 옮기기 (전체 기능) + +가져갈 것은 **소스 + `data/index.db` + `wiki/`** 뿐이다 (합쳐 약 14 MB). + +``` +config/ ingest/ parser/ index/ summarize/ query/ wiki_out/ eval/ docs/ +pyproject.toml +data/index.db ← 조각·요약·심볼·호출그래프 + 인클루드 소스 원문까지 전부 들어있다 +wiki/ ← 사람 교정본이 있으면 함께 (없으면 재생성 가능) +``` + +`data/normalized/`·`data/parsed/`·`data/llm_jobs/`는 **가져갈 필요 없다** — 재생성 가능하고, +조각의 소스 원문은 `include.code` 로 DB 안에 있다. 새 PC 에서: + +```bash +python -m venv .venv && .venv/Scripts/python -m pip install -e ".[dev]" +python -m query.api # 관측소·뷰어·검색 API 전부 동작 +python -m wiki_out.run --all # (선택) 위키 재생성 — DB 만으로 된다 +``` + +실측 검증: 위 최소 세트만 복사한 디렉토리에서 위키 재생성(283건 검증 통과)·스냅샷 생성· +`search_logic`·`get_table_usage`·`trace_variable`·서버 기동이 모두 정상 동작했다. + +## API + +| Method | Path | 설명 | +|---|---|---| +| GET | `/health` | 상태 + 적재 통계 | +| GET | `/search/logic?q=&top_k=&program=&kind=` | **로직 조각 검색** — 자연어 로직 질의의 1차 진입점. 프로그램 단위로 묶어 반환 | +| GET | `/summaries/jobs` | LLM 키 없이 돌릴 때의 프롬프트 대기 큐 | +| GET | `/chunks/{chunk_id}` | 조각 메타 + 코드 원문 + **정의부**(붙여넣기용 선언, `?decls=false` 로 끔). chunk_id 의 `#` 은 `%23` 으로 인코딩 | +| GET | `/programs/{name}/declarations?scope=` | 프로그램의 선언 카탈로그 (정의부) | +| GET | `/programs/{name}/chunks?unit_id=` | 프로그램(또는 unit)의 조각 목록 | +| GET | `/search/programs?q=&top_k=` | 프로그램 검색 — 이름·타이틀 기반 얇은 색인 (FTS + 한글 2-gram) | +| GET | `/search/units?q=&program=` | unit 검색 — 이름·주석·한 줄 요약 기반 얇은 색인 | +| GET | `/programs/{name}/summary` | 프로그램 요약(LLM) + 구조 요약(파서, 조각 목록 포함) | +| GET | `/programs/{name}/source` | 정규화된 전체 소스 (opencode-be 의 fetch_abap 용) | +| GET | `/programs/{name}/units/{unit}/code` | unit 코드 원문(400줄 상한) + 요약 + 정의부 | +| GET | `/programs/{name}/trace/{symbol}` | 변수 선언 + 쓰기 지점 (via_perform 재귀 전개, 깊이 5) | +| GET | `/programs/{name}/call-graph?unit=` | 호출 그래프 | +| GET | `/programs/{name}/who-calls/{unit}` | 역참조 | +| GET | `/tables/{name}/usage` | 테이블 읽기/쓰기 프로그램·unit | + +오류: 404(존재하지 않는 프로그램/심볼 — 유사 후보를 detail 에 포함), 503(DB 오류). + +## 원칙 (계획서) + +- **사실은 파서가, 해석은 LLM이** — tables/calls/writes 는 파서 결과가 항상 우선. 조각의 줄 번호도 + first_line 앵커로 검증하고, 조각의 테이블·호출은 파서로 다시 뽑는다. +- **코드 원문은 로직, 선언은 정의부로 분리.** 조각에는 로직만 담아 검색 품질을 지키고, 붙여넣을 때 + 필요한 선언은 `declaration` 테이블에서 의존까지 묶어 따로 조립한다 (index/decls.py). + 인덱스는 재료와 분류만 넘기고, 쓸지 말지는 붙여넣는 쪽이 정한다. +- **인덱스 단위는 LLM 이 골라낸 로직 조각.** 파서의 문법 단위(FORM/METHOD/FUNCTION/MODULE/이벤트 블록)는 + LLM 에게 보여주는 창이자 조각의 컨테이너다. 프로그램 요약을 먼저 만들어 문맥으로 붙인다. +- 모든 산출물은 코드 해시에 묶여 증분 처리 (unit code_hash 가 같으면 조각 보존). +- 요약·태그·키워드는 한국어 우선 + SAP 영어 용어·객체명 병기. + +## 현재 상태 / 남은 일 + +- Stage 1·2·4·5·6 동작. 샘플 14본(문장 24,578) 실측: **미인식 문장 30건(0.12%)**, 프로그램별 최대 0.46% + (프로그램 하나만 보면 안 된다 — `tests/test_parser_fieldsymbol.py` 가 전체를 잰다) +- Stage 3(로직 조각 추출): 구조 완료. **LLM 키 없이 `--llm file` 로 실행 가능** (위 참고) +- 임베딩/벡터 검색: 모델 미정으로 보류 — FTS(+2-gram, 동의어 확장)만 사용 중 +- DB: SQLite 기본. PostgreSQL 전환 스키마는 `index/schema_postgres.sql` +- **보강 과제 10건 중 9건 반영 완료** — 판정·적용 내역은 `docs/수정사항-적용.md` + (1 색인 반영 / 3 텍스트 심볼 FTS / 4 용어 사전 질의 확장 / 6 중복 조각 복제 / + 8 엔티티 위키·계층 index / 10 병렬 실행 + 429 백오프. 2·5·9 는 이미 완료·무효) +- **남은 일: 7번 정답셋 확대.** 개발자 질의 50~100개를 받아 recall@10/MRR 을 재고 베이스라인과 + 비교해야 한다. 이게 없으면 위 검색 변경들의 정밀도 효과를 검증할 수 없다 + (튜닝 대상 값: `query/expand.py` 의 `EXPANDED_WEIGHT`, `MAX_SYNONYMS`, 2단 검색 보충 조건) +- 프로세스 위키 페이지("입고 처리는 세 경로")는 reduce 단계가 필요해 조각 데이터가 쌓인 뒤로 보류 diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config/domain_glossary.yaml b/config/domain_glossary.yaml new file mode 100644 index 0000000..48e33b3 --- /dev/null +++ b/config/domain_glossary.yaml @@ -0,0 +1,31 @@ +# 질의 확장용 도메인 용어 사전 초기 시드 (계획서 §5.6) +# 형식 — 용어: [동의어/관련 테이블/T-Code ...] +# +# 이 사전은 두 곳에서 같이 쓰인다 (config/glossary.py): +# 1) query/expand.py — 검색 질의 확장 ("입고"로 물어도 GR·MSEG·101 로 색인된 문서를 찾는다) +# 2) wiki_out/run.py — concepts/ 위키 문서 생성 +# 양방향으로 동작한다: 대표어로도, 동의어 중 아무거나로도 질의가 걸린다. +총계정원장: [G/L, GL, 원장, ACDOCA, ACDOCT, SKAT, FAGLL03, FS10N] +전표: [회계전표, BKPF, BSEG, ACDOCA, FB03] +반제: [클리어링, 미결정리, BSIS, BSAS, F-03, F.13] +제조원가: [원가계산, CO-PC, 오더결산, COEP, COSS, CKMLHD, KKS1, KO88] +코스트센터: [CCTR, CSKS, KSB1] +회계단위: [회사코드, BUKRS, T001] +계정과목: [계정, RACCT, SAKNR, SKA1, SKAT] +사업영역: [BUSA, GSBER] +기능영역: [FAREA, RFAREA] +손익: [P/L, 손익계산서, GVTYP] +잔액: [기말잔액, 이월, HSL, BALANCE] +# MM — 샘플에 ZMMR* 프로그램이 있어 함께 시드한다 (계속 확장 대상) +입고: [GR, Goods Receipt, 101, MSEG, MKPF, MB51, MIGO] +출고: [GI, Goods Issue, 201, 261, MSEG, MB1A] +자재: [품목, 자재마스터, MATNR, MARA, MAKT, MM03] +자재문서: [물자문서, MBLNR, MKPF, MSEG, MB51] +구매오더: [PO, Purchase Order, EBELN, EKKO, EKPO, ME23N] +구매요청: [PR, Purchase Requisition, BANFN, EBAN, ME53N] +재고: [재고수량, LABST, MARD, MBEW, MMBE] +이동유형: [BWART, 이동타입, movement type] +플랜트: [WERKS, 사업장, T001W] +저장위치: [LGORT, 창고, T001L] +공급업체: [벤더, LIFNR, LFA1, XK03] +송장: [인보이스, Invoice, RBKP, RSEG, MIRO] diff --git a/config/glossary.py b/config/glossary.py new file mode 100644 index 0000000..b8d9c51 --- /dev/null +++ b/config/glossary.py @@ -0,0 +1,67 @@ +"""도메인 용어 사전 로더 (계획서 §5.6, 수정사항 4번). + +`config/domain_glossary.yaml` 은 의존성을 늘리지 않으려고 YAML 파서 없이 읽는다. +지원 형식은 한 줄 리스트뿐이다: + + 총계정원장: [G/L, GL, 원장, ACDOCA, SKAT, FAGLL03] + +질의 확장(query/expand.py)과 concepts 위키 생성(wiki_out/run.py)이 같은 사전을 쓰도록 +로딩을 여기로 모았다 (이전에는 wiki_out/run.py 안에 인라인 정규식으로만 있었다). +""" +from __future__ import annotations + +import re +from functools import lru_cache +from pathlib import Path + +from .settings import ROOT + +# "용어: [동의어, 동의어]" — 주석(#)·빈 줄·중첩 키(tags:)는 건너뛴다 +GLOSSARY_LINE = re.compile(r"^([^#:\s][^:]*):\s*\[(.*)\]\s*$") + +DEFAULT_PATH = ROOT / "config" / "domain_glossary.yaml" + + +def parse_glossary(text: str) -> dict[str, list[str]]: + """사전 텍스트 → {대표어: [동의어...]}""" + out: dict[str, list[str]] = {} + for line in text.splitlines(): + m = GLOSSARY_LINE.match(line.strip()) + if not m: + continue + term = m.group(1).strip() + syns = [t.strip() for t in m.group(2).split(",") if t.strip()] + if term: + out[term] = syns + return out + + +@lru_cache(maxsize=4) +def load_glossary(path: Path | None = None) -> dict[str, list[str]]: + p = path or DEFAULT_PATH + if not p.exists(): + return {} + return parse_glossary(p.read_text(encoding="utf-8")) + + +@lru_cache(maxsize=4) +def synonym_map(path: Path | None = None) -> dict[str, list[str]]: + """양방향 동의어 맵 — 대표어로도, 동의어로도 질의가 들어올 수 있다. + + "입고" → [GR, MSEG, 101 …] 뿐 아니라 "GR" → [입고, MSEG …] 도 성립해야 한다. + 키는 대문자 정규화(한글은 그대로)해 비교한다. + """ + glossary = load_glossary(path) + groups: list[set[str]] = [{term, *syns} for term, syns in glossary.items()] + out: dict[str, list[str]] = {} + for group in groups: + for member in group: + key = member.upper() + others = [m for m in group if m.upper() != key] + if not others: + continue + bucket = out.setdefault(key, []) + for o in others: + if o not in bucket: + bucket.append(o) + return out diff --git a/config/settings.py b/config/settings.py new file mode 100644 index 0000000..e271b75 --- /dev/null +++ b/config/settings.py @@ -0,0 +1,57 @@ +"""전역 설정. 모든 외부 접점(LLM/임베딩/DB/서버)은 환경변수로만 결정한다.""" +from pathlib import Path + +from pydantic_settings import BaseSettings, SettingsConfigDict + +ROOT = Path(__file__).resolve().parent.parent + + +class Settings(BaseSettings): + model_config = SettingsConfigDict(env_file=ROOT / ".env", env_file_encoding="utf-8", extra="ignore") + + # DB — 기본은 SQLite(개발/폐쇄망 무의존). PostgreSQL 전환은 ASSUMPTIONS.md 참고. + database_url: str = f"sqlite:///{ROOT / 'data' / 'index.db'}" + + # LLM (Stage 3 요약) — OpenAI 호환 엔드포인트 가정 + llm_base_url: str = "" + llm_api_key: str = "" + llm_model: str = "glm-5.2" + # 요약 배치의 동시 LLM 호출 수. DB 쓰기는 메인 스레드에 남기고 호출만 병렬로 돈다. + llm_concurrency: int = 4 + llm_timeout_s: int = 180 + # 429/5xx 재시도 — 동시성을 올리면 429 가 늘어나므로 백오프와 같이 써야 한다 + llm_max_retries: int = 5 + llm_backoff_base: float = 2.0 + llm_backoff_max: float = 60.0 + # /ingest 가 뒤이어 돌리는 요약의 백엔드: + # api — 환경변수 키로 호출 (키가 유효할 때) + # file — 프롬프트를 data/llm_jobs/ 에 쌓아두고 사람·에이전트가 채운다 (키 불필요) + # off — 자동 요약을 하지 않는다 (배치로만 돌린다) + summarize_backend: str = "api" + + # 임베딩 — 모델 미정(§10). 비워두면 벡터 검색 비활성(FTS만 사용). + embed_base_url: str = "" + embed_api_key: str = "" + embed_model: str = "" + + # 질의 서비스 + index_host: str = "127.0.0.1" + index_port: int = 8100 + + # 데이터 디렉토리 + data_raw: Path = ROOT / "data" / "raw" + data_normalized: Path = ROOT / "data" / "normalized" + data_parsed: Path = ROOT / "data" / "parsed" + data_summaries: Path = ROOT / "data" / "summaries" + # file 백엔드의 프롬프트/응답 큐 — LLM 키 없이 요약을 돌리는 입구 (summarize/jobs.py) + data_llm_jobs: Path = ROOT / "data" / "llm_jobs" + + # 위키 (계획서 v4 §5.7 — OKF v0.2 출력, 의미 검색의 1차 대상) + wiki_dir: Path = ROOT / "wiki" + # 위키 검색 백엔드: qmd | pg (M3.5 파일럿으로 확정 — 계획서 §6.5) + # "pg" 는 내장 DB 검색 경로를 뜻함. 현 구현은 SQLite FTS5 (ASSUMPTIONS.md §1). + wiki_search_backend: str = "pg" + qmd_url: str = "http://127.0.0.1:8181" + + +settings = Settings() diff --git a/config/tag_vocab.yaml b/config/tag_vocab.yaml new file mode 100644 index 0000000..13fbdd3 --- /dev/null +++ b/config/tag_vocab.yaml @@ -0,0 +1,40 @@ +# 허용 업무 태그 초기 시드 (계획서 §5.6) — 첫 300본 요약 후 proposed_tags 집계로 확장 +tags: + # FI + - 전표 + - 총계정원장 + - 계정잔액 + - 반제 + - 자동반제 + - 미결관리 + - 결산 + - 월별비교 + - 채권관리 + - 채무관리 + - 지급처리 + - 세금계산서 + - 부가세 + - 원천세 + - 고정자산 + - 예산관리 + - 자금관리 + - 인사연동 + - 급여전기 + - 경비처리 + # CO + - 제조원가 + - 표준원가 + - 오더결산 + - 차이분석 + - 배부 + - 코스트센터 + - 수익성분석 + - 내부오더 + # 공통 + - 인터페이스 + - 배치작업 + - 마스터관리 + - 권한관리 + - 리포트 + - 대사작업 + - 마감작업 diff --git a/docs/ABAP_전처리_파이프라인_v0.1.pptx b/docs/ABAP_전처리_파이프라인_v0.1.pptx new file mode 100644 index 0000000..18ca325 Binary files /dev/null and b/docs/ABAP_전처리_파이프라인_v0.1.pptx differ diff --git a/docs/ABAP_전처리_파이프라인_v0.2.pptx b/docs/ABAP_전처리_파이프라인_v0.2.pptx new file mode 100644 index 0000000..869b358 Binary files /dev/null and b/docs/ABAP_전처리_파이프라인_v0.2.pptx differ diff --git a/docs/AI_Portal_아키텍처_v0.91.pptx b/docs/AI_Portal_아키텍처_v0.91.pptx new file mode 100644 index 0000000..b14117c Binary files /dev/null and b/docs/AI_Portal_아키텍처_v0.91.pptx differ diff --git a/docs/definition-block-design.md b/docs/definition-block-design.md new file mode 100644 index 0000000..80d4e62 --- /dev/null +++ b/docs/definition-block-design.md @@ -0,0 +1,113 @@ +# 정의부(declaration) 수집 설계 — 2026-09-21 + +## 왜 필요한가 + +이 인덱스의 최종 용도는 **비슷한 로직을 새로 짤 때 기존 코드를 찾아 복사해 오는 것**이다. +그런데 인덱스에 담긴 조각(logic_chunk)의 코드 원문은 **로직만**이다. ABAP 은 내부테이블·스트럭처· +상수·필드심볼을 TOP 인클루드나 FORM 머리에 따로 선언하므로, 로직만 복사해 붙여넣으면 +`GT_LOAD 는 선언되지 않았습니다` 류의 문법 오류가 난다. + +그래서 **정의부를 인덱싱 시점에 따로 수집**한다. 조각 코드에는 계속 로직만 둔다(검색 품질을 +지키기 위해서다 — 선언 수백 줄이 조각에 섞이면 조각의 뜻이 흐려진다). + +수집한 정의부를 **쓸지 말지는 판단하지 않는다.** 붙여넣는 쪽의 LLM 이 정한다: +이미 같은 선언이 있으면 버리고, 이름이 겹치면 바꾸고, 타입만 빌려 쓰기도 한다. +인덱스는 "이 조각을 가져가려면 이것들이 함께 필요하다"는 **재료와 분류**만 정확히 넘긴다. + +## 무엇을 수집하는가 + +`parser/declarations.py` 가 선언 문장을 **붙여넣을 수 있는 한 문장 단위**로 잘라 `declaration` +테이블에 넣는다 (`index/db.py`). + +| 항목 | 내용 | +|---|---| +| kind | data / types / constants / tables / field-symbol / parameter / select-option / ranges / type-pool / controls / class / macro | +| scope | `global`(TOP·공용 인클루드) / `unit`(FORM·METHOD 머리의 로컬 선언) | +| code | **선언 원문** — 체인 항목이면 헤드를 다시 붙이고 `,` 를 `.` 로 닫아 유효한 문장으로 만든다 | +| depends | 이 선언이 참조하는 다른 이름 (`LIKE GT_DATA` → GT_DATA, `TYPE TABLE OF TY_X` → TY_X) | + +세 가지가 핵심이다. + +1. **`BEGIN OF … END OF` 는 한 덩어리다.** 업무 프로그램의 내부테이블은 거의 전부 이 형태다 + (`DATA : BEGIN OF GT_UPLOAD OCCURS 0, … END OF GT_UPLOAD.`). `parser/dataflow.py` 의 심볼 + 추출은 이걸 건너뛰지만(추적에는 이름만 필요하다), 정의부에는 반드시 통째로 있어야 한다. +2. **체인 항목도 혼자 설 수 있어야 한다.** `DATA: a TYPE i,\n b TYPE i.` 의 `b` 만 잘라내면 + `b TYPE i.` 라 붙여넣을 수 없다 → `DATA:\n b TYPE i.` 로 헤드를 복원한다. + 이를 위해 `parser/statements.py` 가 체인 전개 시 **항목별 줄 범위**를 기록한다. +3. **로컬 클래스·매크로도 정의부다.** `CLASS lcl_x DEFINITION … ENDCLASS`, `DEFINE … END-OF-DEFINITION` + 은 unit 통째를 한 건으로 담는다. + +## 조각 → 정의부 조립 (`index/decls.py`) + +1. 조각 코드의 식별자를 모은다 (파서 토크나이저 · 문장 단위) +2. `declaration` 에서 찾는다 — **unit 로컬 먼저, 없으면 전역** +3. 찾은 선언의 `depends` 를 **재귀로** 끌어온다 (`LT_DATA LIKE GT_DATA` → GT_DATA) +4. 의존이 먼저 오도록(post-order) 정렬해 `declaration_code` 한 덩어리로 만든다 + +결과는 네 갈래로 분류해 넘긴다. + +| 필드 | 뜻 | 붙여넣는 쪽이 할 일 | +|---|---|---| +| `declarations` / `declaration_code` | 함께 가야 하는 선언 원문 | 있으면 버리거나, 이름을 바꿔 쓰거나, 그대로 넣는다 | +| `declaration_external_refs` | DDIC 사전 객체 (BKPF, LVC_T_FCAT …) | 가져갈 게 없다. 대상 시스템에 있는지만 본다 | +| `declaration_params` | 이 조각이 쓰는 FORM 파라미터 | 호출 측에서 넘어오는 값이다 | +| `declaration_unresolved` | 변수처럼 생겼는데 선언을 못 찾은 이름 | 수집 안 된 인클루드·함수 인터페이스일 수 있다 | + +### 판정에서 가른 두 가지 + +- **`LIKE BSEG-WRBTR` 은 작업영역이 아니다.** 사전에서 타입만 빌려 쓰는 것이라 + TOP 의 `TABLES: BSEG.` 를 딸려 보내면 안 된다. 반면 `bseg-wrbtr = 100.` 처럼 **작업영역을 + 실제로 쓰면** 그 선언이 필요하다. 그래서 참조를 컴포넌트까지 보존해 둘을 구분한다. +- **호출문의 형식 파라미터는 변수가 아니다.** `CALL FUNCTION 'X' EXPORTING i_bukrs = gv_bukrs` + 의 `i_bukrs` 와 `EXCEPTIONS no_rate_found` 는 호출 대상의 인터페이스다. 이름만 보면 변수와 + 구분되지 않아(둘 다 `I_`/`NO_`) 문장 구조로 걸러낸다. + +### 저장하지 않고 읽을 때 계산한다 + +조각↔선언 대응은 `logic_chunk` 에 캐시하지 않는다. `declaration` 과 조각 코드만 있으면 +결정론적으로 다시 나오므로, 캐시하면 조각 재추출·선언 변경과 엇갈려 따로 늙기만 한다. +조각 하나당 수십 줄을 토큰화하는 비용이라 조회 경로에서 충분히 싸다. + +## 실측 (샘플 55본 / 조각 3,212건, 2026-09-21) + +- 선언 18,049건 수집 (data 11.7k · constants 1.7k · field-symbol 1.0k · tables 1.0k · type-pool 488 · macro 295 · class 91 …) +- 조각의 **79%** 가 정의부를 갖는다 (평균 3.5건, 최대 21건). + 나머지 21%는 호출·제어·메시지처럼 프로그램 선언을 쓰지 않는 조각이다. +- 선언을 못 찾은 이름이 남은 조각 **3%** — DDIC 테이블(J_1BBRANCH), 함수 인터페이스 파라미터, + 화면 필드가 대부분이다. + +### 곁가지로 고친 파서 버그 3건 + +정의부를 조립하면서 "선언이 없다"고 새어 나온 이름들을 좇아가 드러난 것들이다. + +1. `CLASS lcl_x DEFINITION DEFERRED.` 를 블록으로 열어 **그 뒤 인클루드 전체를 CLASS_DEF 하나로 + 삼켰다** (ENDCLASS 가 없다). ZCO_ALV 의 선언 수십 건이 통째로 사라져 있었다. +2. FORM 시그니처의 파라미터를 **첫 개만** 잡았다 (`USING p_date LIKE x p_days LIKE y` 에서 + TYPE/LIKE 를 만나면 멈췄다). +3. `PARAMETER`(단수형)를 선언 키워드로 몰랐다 — 미인식 문장 123건 → 3건. + +## API + +| Method | Path | 정의부 관련 | +|---|---|---| +| GET | `/chunks/{chunk_id}` | `declarations`, `declaration_code`, `declaration_external_refs`, `declaration_params`, `declaration_unresolved` (끄려면 `?decls=false`) | +| GET | `/programs/{name}/units/{unit}/code` | 같은 필드 (unit 통째로 가져갈 때) | +| GET | `/programs/{name}/declarations?scope=global\|unit` | 프로그램의 선언 카탈로그 | + +## 위키에서의 표시 + +원문은 프로그램 문서의 `## 정의부` 섹션에 **한 번만** 싣는다 (인클루드별, 전역 선언 전체 + +조각이 실제로 쓰는 unit 로컬 선언). 조각 쪽에는 이름만 두고 그 항목으로 가는 **문서 내 링크**를 건다. + +```markdown +- 정의부(복사 시 함께 필요): [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`C_X`](#decl-zficom-213-c_x) +… +#### GT_LOAD — data · L6-L56 {#decl-zfic0020top-6-gt_load} +``` + +`{#id}` 는 제목에 앵커를 다는 표기이고, 뷰어(`wiki_out/viewer.html`)가 이걸 `id` 로 바꿔 +눌러서 이동하게 만든다(이동 후 1.4초 강조). **뷰어 전용 기능이 아니다** — 마크다운으로 읽으면 +링크 텍스트가 곧 선언 이름이라 LLM 에게는 지금까지와 똑같이 읽히고, 앵커는 무시된다. + +링크와 앵커가 어긋나면 조용히 죽으므로 짝을 테스트로 묶어 뒀다 +(`tests/test_wiki_out.py::test_chunk_links_to_declaration`). 실측 11,051개 링크 / 깨진 링크 0개. diff --git a/docs/logic-chunk-design.md b/docs/logic-chunk-design.md new file mode 100644 index 0000000..1407b55 --- /dev/null +++ b/docs/logic-chunk-design.md @@ -0,0 +1,91 @@ +# 로직 조각(logic chunk) 추출 설계 — 2026-09-16 구조 변경 + +## 결정 + +인덱스의 단위를 **파서가 자른 unit(FORM/METHOD/FUNCTION/MODULE/이벤트)** 에서 +**LLM 이 골라낸 로직 조각(logic chunk)** 으로 바꾼다. + +- 파서 unit 은 더 이상 인덱스 단위가 아니다. LLM 에게 코드를 **나눠 보여주는 창(window)** 이자, + 조각의 위치를 설명하는 **컨테이너** 역할만 남는다. +- LLM 은 unit 코드를 읽고 업무적으로 의미 있는 로직 조각(특정 SQL, DB 갱신, BAPI 호출, + 집계 LOOP, 검증 …)을 0개 이상 골라내 각각에 자연어 설명을 붙인다. +- 의미 없는 코드(선언, 초기화, ALV 필드카탈로그, 화면 속성 …)는 조각으로 만들지 않는다 → 인덱스에서 버려진다. +- 조각의 설명·키워드가 검색(chunk_fts)의 1차 대상이다. + +## 왜 프로그램 전체가 아니라 unit 하나씩 보여주는가 + +| 관점 | 프로그램 전체 1회 | unit 창 + 프로그램 요약 문맥 (채택) | +|---|---|---| +| 긴 코드에서의 추출 품질 | 수천 줄에서 뒤쪽을 대충 봄 | 200~300줄 단위라 안정적 | +| 줄 번호 확정 | 어려움 | 창 안이라 매칭 쉬움 | +| 증분 비용 | 한 줄 수정에도 전체 재실행 | 바뀐 unit 만 | +| unit 을 가로지르는 로직 | 잡을 수 있음 | **프로그램 요약(main_flow) 이 담당** | + +그래서 2단계로 간다. + +1. **프로그램 요약** — 구조 사실(이벤트 흐름, unit 목록, 테이블, 외부 호출, 텍스트 심볼, 이벤트 블록 코드)로 + `ProgramSummary` 를 만든다. 코드가 바뀌면(`summary_status='stale'`) 다시 만든다. +2. **unit 별 조각 추출** — 프로그램 요약 + unit 코드(줄번호 포함) + 파서 힌트(DB 접근·호출 줄)를 주고 + `UnitExtraction { unit_purpose_ko, chunks[] }` 를 받는다. + 300줄을 넘는 unit 은 파서의 `sub_chunks`(최상위 IF/LOOP 경계) 창으로 나눠 여러 번 호출한다. + +## 사실은 파서가, 해석은 LLM 이 — 조각 단위에서의 적용 + +- **줄 번호**: LLM 이 준 `line_start/line_end` 는 `first_line`(시작 줄 코드 원문)과 대조해 확정한다. + 어긋나면 unit 안에서 그 줄을 찾아 보정하고, 못 찾으면 조각을 버린다(`dropped`). +- **테이블/호출**: 조각 코드 범위를 파서(`split_statements` + `extract_refs`)로 다시 돌려 + `tables_read/tables_write/calls` 를 채운다. LLM 이 쓴 값은 쓰지 않는다. +- **해시**: 조각 코드의 sha256 을 `code_hash` 로 저장한다. unit 의 code_hash 가 같으면 재적재 시 조각을 보존한다. + +## 스키마 (index/db.py) + +``` +logic_chunk(chunk_id PK = #C, program, include, unit_id, seq, + line_start, line_end, code_hash, kind, purpose_ko, purpose_en, + keywords_ko, keywords_en, sap_objects, tables_read, tables_write, calls (JSON), + confidence, prompt_version, extracted_at) +chunk_fts(chunk_id, program, purpose, keywords, objects, bigrams) -- FTS5 +unit.summary_json = {purpose_ko(한 줄), chunk_count, covered_lines, coverage} -- 얇은 unit 색인 +unit.summary_status = none | done | failed (done 이면서 chunk_count=0 = 의미 조각 없음) +program.summary_json = ProgramSummary, program.text_symbols_json +``` + +`kind` 어휘: sql_select, db_write, fm_call(BAPI/FM/RFC), aggregation(내부테이블 집계·가공), +validation(검증·권한), calculation, output(ALV·화면·파일·메일), interface, control_flow, other + +## 검색 (query/tools.py) + +- `search_logic(q)` → chunk_fts 검색 → **프로그램 단위로 묶어** 반환(프로그램 요약 + 조각 목록). +- `search_units`/`search_programs` 는 얇은 색인으로 유지 — 버려진 코드도 unit 이름·주석·한 줄 요약으로는 도달 가능. +- `get_chunk(chunk_id)` → 메타 + 코드 원문. + +## 정의부 — 조각을 붙여넣을 때 필요한 선언 + +조각 코드에는 **로직만** 둔다. 선언을 섞으면 조각의 뜻이 흐려지고 검색이 나빠진다. +대신 `declaration` 테이블에 선언 원문을 따로 모아 두고, 조각을 꺼낼 때 그 조각이 쓰는 선언을 +의존까지 묶어 조립해 함께 준다 (`get_chunk` → `declaration_code`). +→ `docs/definition-block-design.md` + +## 위키 (wiki_out) + +- units/ 문서 생성 중단. 프로그램 문서 안에 `## 로직 조각` 섹션(조각마다 H3, resource 줄 범위)으로 넣는다. + → 1만 프로그램 × 수십 unit 파일 문제 해소. +- OKF frontmatter 에 `x-chunk-count` 추가. + +## 평가 (eval) + +- 질문 유형 `logic` 추가: `expected` = `[{program, line_from, line_to}]`. + 조각 검색 상위 10개 중 프로그램이 같고 줄 범위가 겹치면 적중. + +## 남은 일 (구조 변경 뒤 10개 보강 과제와 연결) + +2026-09-16 에 9건 반영 완료 — 판정·적용 내역은 `docs/수정사항-적용.md`. + +- ✅ 조각 키워드·요약을 program_fts 에 반영(과제 1) — `index/loader.py:refresh_program_fts` +- ✅ 텍스트 심볼 FTS 반영(과제 3) — `index/db.py:text_symbol_phrases` +- ✅ 용어 사전 질의 확장(과제 4) — `query/expand.py` (2단 검색) +- ✅ 중복 조각 해시 묶기(과제 6) — `summarize/runner.py:clone_unit_chunks` (줄 평행이동 포함) +- ✅ 병렬 실행(과제 10) — 프롬프트 조립/호출/저장 3단 분리 + 429 백오프 +- ✅ 엔티티 위키 + 계층 index.md(과제 8) — `wiki_out/entities.py` +- ⏸ **정답셋 확대(과제 7)** — 남은 유일한 과제. 이게 없으면 위 검색 변경의 정밀도를 검증할 수 없다. +- ⏸ 프로세스 페이지(과제 8 후반) — 프로그램을 가로지르는 reduce 단계. 조각이 쌓인 뒤 판단. diff --git a/docs/okf-version.md b/docs/okf-version.md new file mode 100644 index 0000000..6877f44 --- /dev/null +++ b/docs/okf-version.md @@ -0,0 +1,39 @@ +# OKF 스펙 버전 고정 기록 (계획서 v4 §10.11) + +- **채택 버전**: OKF v0.2 +- **확인일**: 2026-08-26 +- **원문**: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md +- (v0.1: 2026-06-12 공개 / v0.2: 2026-07-25 — 신뢰 필드 추가) + +## 확인된 스펙 요지 + +- 필수 필드는 `type` 하나. 권장: `title`, `description`, `resource`, `tags`. +- 신뢰/수명 필드(선택): `generated: {by, at}`, `verified: [{by, at}]`(단일 매핑도 1원소 리스트로 해석), + `sources`(provenance), `status: draft|stable|deprecated`(기본 stable), `stale_after`. +- actor 표기: 에이전트/도구 `/`, 사람 `human:`, 프로세스 `process:`. +- **확장 필드 자유** — 소비자는 미지 키를 보존해야 하고, 없는 선택 필드 때문에 거부하면 안 됨. +- 예약 파일: 번들 루트 `index.md`(매니페스트, `okf_version: "0.2"` frontmatter), `log.md`. + → 구 계획(v3)의 `okf.yaml` 매니페스트는 **index.md 로 대체**. +- 링크: 표준 마크다운 링크. `/` 로 시작하면 번들 루트 상대(권장 — 문서 이동에 안정적). + +## 계획서 x- 필드 → v0.2 표준 필드 매핑 (확정) + +| 구 계획(v3) | 채택(v4) | 비고 | +|---|---|---| +| `x-human-edited: true` | `verified: { by: "human:", at: }` | 사람이 검토·수정 후 저장할 때 추가. merge.py 는 구 규약도 하위호환 인식 | +| (없음) | `generated: { by: "abap-indexing/<모델>", at: ... }` | 생성 주체. 요약 전 구조 문서는 `abap-indexing/parser` | +| 재검토 필요 표시 | `status: draft` + `wiki/_review.md` | 코드 해시 변경 시 merge.py 가 설정 | +| `x-confidence`, `x-prompt-version`, `x-program` 등 사실 필드 | **x- 확장 유지** | 표준에 대응 없음 — 스펙이 확장 키를 허용 | +| `okf.yaml` | `index.md` (예약 파일) | wiki_out/okf_writer.py `write_manifest` | + +## 구현 위치 + +- 출력: `wiki_out/okf_writer.py` / 병합: `wiki_out/merge.py` / 검증: `python -m wiki_out.validate` +- frontmatter 의 관리 대상(배치가 갱신하는) 필드는 `merge.MANAGED_KEYS` — 모두 한 줄 YAML 로 emit. + +## 2026-09-16 변경 — 문서 단위 + +- unit 별 개별 문서(`units/`, `type: abap-unit`)는 생성하지 않는다. +- LLM 이 골라낸 로직 조각은 프로그램 문서(`type: abap-program`) 안의 `## 로직 조각` 섹션이다. + 조각마다 resource 는 `abap:///#L-L` 형식으로 본문에 적는다. +- 확장 필드 `x-chunk-count` 추가. 설계 근거는 `docs/logic-chunk-design.md`. diff --git a/docs/run-record.md b/docs/run-record.md new file mode 100644 index 0000000..0852b0f --- /dev/null +++ b/docs/run-record.md @@ -0,0 +1,67 @@ +# 실행 기록 — 어느 모델이 무엇을 만들었나 + +다른 모델로 같은 작업을 다시 돌려 비교하기 위한 기록이다. 비교 기준선(baseline)은 아래 상태다. + +## 모델 + +| 범위 | 모델 | +|---|---| +| **인덱싱 파이프라인 본체** (Stage 1~6: 정규화 · 파서 · 적재 · 요약/조각 추출 · 질의 API · 위키/뷰어) | **Fable 5.1** | +| 정의부(declaration) 수집·조립 기능 (2026-09-21, `docs/definition-block-design.md`) | Opus 5 (1M context, `claude-opus-5[1m]`) | + +이 저장소에 있는 것의 **거의 전부는 Fable 5.1 이 만들었다.** 정의부 작업은 그 위에 얹은 한 기능이다. + +## 기준선 지표 (2026-09-21 기준) + +샘플 55본으로 전 단계를 돌린 결과다. 재실행 결과를 여기에 대보면 된다. + +| 항목 | 값 | +|---|---| +| 프로그램 / unit / 문장 | 55 · 6,296 · 95,401 | +| 파서 미인식 문장 | 3건 (0.003%) | +| 로직 조각 (LLM 추출) | 3,212건 | +| 선언(정의부) | 18,049건 — 조각의 79%가 정의부를 가짐 (평균 3.5건) | +| 위키 | 프로그램 55 · 테이블 160 · 펑션 119 · 개념 23 · T-code 17 | +| 테스트 | 99 passed / 6 skipped (6건은 ZFIR10070 정규화 산출물이 없어 skip) | +| index.db | 약 43 MB | + +## 재실행할 때 주의 + +- **이 저장소 상태 위에서 같은 프롬프트를 돌리면 비교가 안 된다.** 결과물(코드·위키·DB)이 이미 + 있어서 다음 모델은 "무엇을 만들어야 하는지"를 읽고 시작하게 된다. 같은 출발선에서 재려면 + 변경 전 상태를 따로 떠 두고 거기서 돌려야 한다 (이 저장소는 git 관리가 아니다). +- Stage 3(조각 추출)은 LLM 호출이라 **모델이 바뀌면 조각의 개수·경계·설명이 달라진다.** + Stage 1·2·4(정규화·파서·적재)는 LLM 없이 결정론적이므로 코드가 같으면 결과도 같아야 한다. + 즉 모델 비교가 실제로 갈리는 지점은 **코드를 어떻게 짜는가**와 **조각 추출 품질**이다. +- 조각 추출을 다시 돌릴 거면 `PROMPT_VERSION`(summarize/runner.py)과 `.env` 의 모델 설정을 + 함께 기록해 둘 것 — 그게 없으면 나중에 어느 조각이 어느 모델 산출인지 구분되지 않는다. + +## GLM 5.2 비용 실측 (2026-09-21) + +비교 실행 대상은 OpenRouter `z-ai/glm-5.2`. 전체 실행은 **잔액 부족(402)** 으로 못 돌렸고, +실제 프롬프트 5건을 GLM 5.2 로 직접 호출해 단가를 쟀다 (총 $0.024 소요). + +| 측정값 | 결과 | +|---|---| +| 문자/토큰 (한국어+ABAP 혼합) | 1.97 ~ 2.1 | +| 호출 1회 (프롬프트 3.1k~5.1k자) | 입력 1,643~2,577 토큰 / 출력 130~1,639 토큰 | +| 그중 **추론(reasoning) 토큰** | 출력의 58~68% — GLM 5.2 는 추론 모델이라 비용의 큰 몫 | +| 프롬프트 1,000자당 비용 | $0.00071 (관측 범위 $0.0005~$0.0012) | +| 단가 | 입력 $0.6496/M · 출력 $2.0416/M | + +이 단가를 현재 코퍼스의 **실제 프롬프트 5,642건(23.3M자)** 에 적용한 예측: + +| 범위 | 비용 | +|---|---| +| 프로그램 1본 (중앙값 120호출·446k자) | **$0.32** (범위 $0.22~$0.52) | +| 현재 코퍼스 55본 전체 | **$16.5** (범위 $11.6~$27.0) | +| $10 으로 가능한 양 | **프로그램 약 32본** / LLM 호출 약 3,400회 | + +- 호출 수는 파서가 정하므로(unit 수) 모델이 바뀌어도 같다. 달라지는 건 토큰 단가와 추론 길이다. +- 추론 길이 편차가 커서 범위가 넓다(같은 크기 프롬프트에서 출력 130~1,639 토큰). +- 더 싼 슬러그 환산: `z-ai/glm-4.7` 약 $12.5, `z-ai/glm-5.3-flash` 약 $2.4 (같은 코퍼스 전체). +- `summarize/llm_client.py` 가 `max_tokens` 를 안 보낸다. OpenRouter 는 최대 출력 기준으로 + 선결제 견적을 잡으므로 잔액이 적으면 402 가 난다. 추론 폭주 방어도 겸해 상한을 두는 게 좋다. + +실행용 폴더: `C:\EdgeCenter\abap-indexing-glm52` (코드 + data/raw 만 복사, Stage 1·2·4 완료, +ZFIR10070 1본 적재 = unit 122·문장 1,756). 키만 채우면 Stage 3 부터 바로 돌릴 수 있다. diff --git a/docs/검색기술비교_및_프로젝트방향.pptx b/docs/검색기술비교_및_프로젝트방향.pptx new file mode 100644 index 0000000..866020e Binary files /dev/null and b/docs/검색기술비교_및_프로젝트방향.pptx differ diff --git a/docs/수정사항-적용.md b/docs/수정사항-적용.md new file mode 100644 index 0000000..56612e8 --- /dev/null +++ b/docs/수정사항-적용.md @@ -0,0 +1,182 @@ + +# 수정사항 10건 검토·적용 기록 (2026-09-16) + +원본: `수정사항.txt`. 이 파일은 **2026-09-16 구조 변경(로직 조각 도입) 이전** 기준으로 작성돼 +일부 항목은 이미 해소된 상태였다. 항목별 판정과 적용 내용을 남긴다. + +| # | 항목 | 판정 | 적용 | +|---|---|---|---| +| 1 | LLM 요약이 검색 색인에 미반영 | 부분 유효 | ✅ 적용 | +| 2 | 프로그램 단위 요약 미생성 | **이미 완료** | 코드 변경 없음 | +| 3 | 텍스트 심볼 치환 | 프롬프트 완료 / FTS 미반영 | ✅ FTS 반영 | +| 4 | 용어 사전이 질의 확장에 미사용 | 유효 | ✅ 적용 | +| 5 | keywords_en · sap_objects 필드 없음 | **이미 완료** | 코드 변경 없음 | +| 6 | 중복 프로그램 처리 없음 | 유효 | ✅ 적용 | +| 7 | 정답셋 4문항 | 유효 | ⏸ **범위 제외** (사용자 지시) | +| 8 | 엔티티·프로세스 위키 페이지 없음 | 유효 | ✅ 엔티티 적용 / 프로세스 보류 | +| 9 | unit 문서 70만 파일 문제 | **구조 변경으로 해소** | 무효 | +| 10 | 요약 병렬 실행 없음 | 유효 | ✅ 적용 | + +## 이미 완료였던 항목 (2·5·9) + +- **2번** — `summarize/runner.py:ensure_program_summary()` 가 `ProgramSummary` 를 만들어 + `program.summary_json` 에 저장하고, `UNIT_PROMPT` 에 `program_purpose` · `main_flow` · + `key_internal_tables` 를 문맥으로 주입한다. DB 에 요약이 0건이었던 것은 미구현이 아니라 + OpenRouter 무료 티어의 **429 Too Many Requests** 로 실행이 실패해서였다 (`unit.summary_error` 6건 전부 429). +- **5번** — `schemas.LogicChunk` 에 `purpose_en` · `keywords_ko` · `keywords_en` · `sap_objects` 가 + 모두 있고 프롬프트가 명시적으로 요구한다. +- **9번** — `units/` 문서 생성은 중단됐다. 로직 조각은 프로그램 문서 안의 H3/H4 섹션이다. + 원본 파일의 "units/ 를 git 제외로 둔 것은 좋은 완화책" 서술은 현재 상태와 맞지 않는다 + (`.gitignore` 에 `units` 항목이 없고 디렉토리도 없다). + +## 적용 내용 + +### 1번 — 요약을 검색 색인에 반영 + +구조 변경으로 `chunk_fts` 가 신설돼 조각의 `purpose`/`keywords`/`objects` 는 이미 색인되고 있었고, +`extract_unit` 도 요약 후 `unit_fts` 를 갱신하고 있었다. 남아 있던 두 구멍만 막았다. + +- **적재 시점 `unit_fts.purpose` 의 장식 문자** — `index/loader.py` 가 `header_comment` 를 날것으로 + 넣어 1,177행 중 **867행이 `'----------------'`** 이었다. `clean_comment()` 를 적용해 0행으로. + - `clean_comment` 를 `query/tools.py` → `index/db.py` 로 이동 (loader 가 써야 하는데 + `index → query` 는 의존 역방향). `query.tools.clean_comment` 이름은 하위호환으로 유지. +- **`program_fts` 가 타이틀·패키지명뿐** — `business_purpose_ko` / `main_flow` / `keywords_ko` / + `keywords_en` / `business_tags` / `sap_module` / `related_tcodes` / 조각 키워드 / 조각 SAP 객체 / + 테이블명 / 텍스트 심볼을 색인에 넣었다. + - **색인을 두 테이블로 나눴다**: `program_fts`(이름·타이틀·패키지) + `program_desc_fts`(서술). + 한 행에 몰아넣었더니 회귀가 났다 — bm25 는 **행 전체 길이로 정규화**하므로 요약이 붙어 + 길어진 행이 타이틀만 있는 짧은 행보다 낮게 나온다. 실측으로 타이틀이 정확히 `"총계정원장 조회"`인 + ZFIR10070 이 `"총계정원장 조회하는 프로그램"` 질의에서 **1위 → 33위**로 밀렸다 + (행 길이 1,872자 vs 40자). 컬럼 가중치로는 해결되지 않는다(정규화는 행 단위). + 나누면 각 테이블 안 행 길이가 비슷해지고, 서술 히트는 `_DESC_WEIGHT=0.6` 으로 **더해질 뿐** + 이름·타이틀 일치를 밀어내지 않는다. 회귀 테스트: + `tests/test_dedupe_parallel.py::test_long_summary_does_not_outrank_title_match` + - 세 FTS 모두 `rank`(모든 컬럼 가중치 1) 대신 **가중 bm25**(`index/db.py:bm25_rank`)를 쓴다. + - FTS5 는 컬럼 추가가 불가하므로 `index/db.py:_migrate_fts()` 가 컬럼 구성 변화를 감지해 + DROP→재생성한다 (전부 파생 데이터라 안전). + - `refresh_program_fts(con, program)` 단건 경로를 추가했다. 전량 재구축을 `/ingest` 마다 돌리면 + 1만 본에서 O(N²) 가 된다. + - 검색 결과의 `reason` 이 근거를 구분한다: `이름/타이틀 일치` > `키워드 일치` > `요약 일치` > `동의어 확장`. + +### 3번 — 텍스트 심볼을 FTS 에 반영 + +- `index/db.py:text_symbol_phrases()` — 코드 범위에 등장하는 `TEXT-nnn` 을 한국어 원문으로 치환. +- 조각 저장 시 `chunk_fts.keywords` / `bigrams` 에, 프로그램 색인에는 `program_fts.purpose` 에 넣는다. +- 결과: `"계정코드를 입력하세요"`, `"회계단위 간편선택"` 같은 **화면 문구로도** 검색된다 (LLM 무관). + +### 4번 — 용어 사전 질의 확장 + +- `config/glossary.py` — 사전 로딩을 한 곳으로 모았다. 기존에는 `wiki_out/run.py` 안에 + 인라인 정규식으로만 있어 검색 쪽에서 쓸 수 없었다. **양방향 동의어 맵**을 만든다 + (`입고`→`GR/MSEG/101` 뿐 아니라 `GR`→`입고/MSEG` 도 성립). +- `query/expand.py` — **2단 검색**. 원질의로 먼저 찾고, 결과가 `top_k` 미만일 때만 동의어 식으로 + 보충하며 점수에 `EXPANDED_WEIGHT=0.35` 감쇠를 걸고 `matched_by='동의어 확장'` 으로 표시한다. + - 동의어를 원질의와 같은 OR 버킷에 섞지 않은 이유: `fts_or` 는 토큰과 한글 2-gram 을 전부 OR 로 + 이어 이미 재현율 편향이다. 여기에 동의어까지 같은 가중치로 넣으면 `"총계정원장"` 질의가 + `"원장"` 2-gram 하나로 걸린 문서와 동일 점수가 된다. +- `config/domain_glossary.yaml` 에 MM 섹션(입고·출고·자재·구매오더·이동유형 …)을 시드했다. + 기존 사전이 FI 전용이라 원본 파일이 예로 든 "입고 → GR/101" 이 실제로는 동작하지 않았다. + +### 6번 — 중복 unit 조각 복제 + +- `summarize/runner.py:_dedupe_plan()` + `clone_unit_chunks()`. +- `code_hash` 가 같은 unit 은 **대표 1건만 LLM 에 보내고** 나머지는 조각을 복제한다. + 이번 배치 밖에서 이미 추출된 동일 코드 unit 이 있으면 **LLM 호출 0회**로 복제한다. +- **줄 번호 평행이동이 핵심이다** — 코드는 같아도 include 안 위치가 달라 + `target.line_start - rep.line_start` 만큼 밀어야 한다. 테스트가 복제된 줄 범위의 코드 원문이 + 대표와 동일한지 확인한다. +- 실측(샘플 14본): 중복 그룹 108개 / unit 287개 → **LLM 호출 179회(62%) 절감 가능**. +- `--no-dedupe` 로 끌 수 있다. + +### 8번 — 엔티티 위키 페이지 + +- `wiki_out/entities.py` — `tables/` `functions/` `tcodes/` 를 `table_ref` · `call_edge` 에서 + **LLM 없이 결정론적으로** 생성. 실측 산출: 테이블 146건, 펑션 94건. + - `tables/.md` — 읽는 프로그램 / 쓰는 프로그램 / unit 단위 사용 지점 + - `functions/.md` — 호출 프로그램 / 호출 지점 / RFC 여부 + - `tcodes/` — `tcode` 테이블 미확보로 현재 0건 (데이터가 들어오면 그대로 생성됨) + - 프로그램당 파일이 아니라 **엔티티당 파일**이라 9번의 파일 수 폭발이 재발하지 않는다. +- `index.md` 를 계층 진입점으로 재작성 — **SAP 모듈 → 패키지 → 프로그램**. + 모듈은 요약의 `sap_module`, 요약 전에는 `Z<모듈><번호>` 관행에서 추정한다. +- **프로세스 페이지는 보류.** 프로그램을 가로지르는 reduce 단계가 필요하고, 조각 데이터가 + 실제로 쌓인 뒤에 판단하는 게 맞다 (원본 파일도 "별도 작업"으로 인정). + +### 10번 — 병렬 실행 + +- `llm_concurrency` 가 **선언만 있고 읽는 코드가 없는 죽은 설정**이었다. 실제로 연결했다. +- sqlite 커넥션은 스레드 간 공유가 안 되므로 3단으로 갈랐다: + `build_unit_prompts()` (DB 읽기, 메인) → `_run_calls_parallel()` (LLM 호출, 워커) → + `finish_unit()` (검증·저장, 메인). +- **동시성만 올리면 429 가 늘어난다.** `OpenAICompatClient.complete_json` 에 429/5xx 지수 백오프 + 재시도(`Retry-After` 존중, jitter 포함)를 같이 넣었다. 기존에는 재시도가 없어 429 한 번에 + unit 이 `failed` 로 굳었다. + +## 함께 고친 것 (직전 분석에서 보고한 버그) + +### 파서 토큰화 — 필드심볼·테이블본문 대입 + +`-fieldname = 'X'` 가 `['', '-', 'fieldname', '=', ...]` 로 쪼개져 +일반 대입 판정(`up[1] == "="`)이 깨졌다. 결과로 **쓰기 지점이 누락**되고 미인식 문장으로 잡혔다. + +- `parser/tokenizer.py` — 필드심볼이 `-컴포넌트` / `->메서드` 까지 한 토큰. `&1` 매크로 파라미터도 토큰화. +- `parser/statements.py:assignment_eq_index()` — 대입 판정을 한 곳으로. `X = `, `X[] = `, + `X[ key = v ] = ` 형태를 모두 인식한다. `dataflow` 와 `run`(미인식 리포트)이 같은 판정을 쓴다. +- 효과 (샘플 14본 / 문장 24,578건. 베이스라인 커밋 `35a15aa` 를 worktree 로 꺼내 직접 측정): + + | 지표 | 이전 | 이후 | 차이 | + |---|---|---|---| + | 미인식 문장 | 1,055건 (4.29%) | **30건 (0.12%)** | −1,025 | + | 최악 프로그램 | ZMMR71110_API **12.03%** | ZBACKUP_FI **0.46%** | | + | 쓰기 지점 총계 | 7,327 | **8,251** | **+924** | + | └ 필드심볼 대상 | 207 | **1,067** | **+860** | + | └ `itab[]` 형태 | 230 | **307** | **+77** | + + `itab[] = ...` 와 `-comp = ...` 는 내부테이블을 채우는 흔한 관용구라 + `trace_variable`("gt_head 가 어디서 채워지나")의 정확도에 직접 영향이 있었다. + 이전에도 필드심볼 쓰기가 207건 잡혔던 것은 `READ TABLE ... ASSIGNING ` / + `LOOP AT ... ASSIGNING ` 경로는 별도 분기라 영향을 받지 않았기 때문이다. + +### 외부 호출 목록 오염 + +`CL_GUI_ALV_GRID=>MC_FC_AUF` 같은 **정적 상수 읽기**가 `method_ref` 로 기록돼 호출로 취급됐다. +`query/tools.py:_structure_summary` 는 걸러냈지만 `wiki_out/okf_writer.py` 는 걸르지 않아 +`x-calls` 40건이 거의 전부 ALV 상수와 `CALL SCREEN` 의 화면번호(`"100"`)였다. + +- `parser/refs.py:EXTERNAL_CALL_KINDS` / `FUNCTION_CALL_KINDS` 로 기준을 한 곳에 두고 + 요약·위키·엔티티 페이지가 공유한다. +- ZFIR10070 의 `x-calls`: ALV 상수 40건 → **실제 FM·외부 PERFORM·SUBMIT 14건**. + +### 설치 명령이 동작하지 않았음 + +README 가 안내하는 `pip install -e ".[dev]"` 가 실패했다 — flat-layout 자동 탐색이 +`data/` `wiki/` 까지 패키지로 오인한다. `pyproject.toml` 에 `[tool.setuptools] packages` 를 명시했다. + +### 로더 강제 재적재 + +파서·색인 로직이 바뀌면 소스가 그대로라도 산출물이 달라지는데, `source_hash` 가 같으면 스킵돼 +반영할 방법이 없었다. `python -m index.loader --force` 를 추가했다. + +## 7번 (정답셋)을 제외한 결과 + +1·4번의 효과를 숫자로 확인할 수단이 없다. 확인한 것은 **기능이 동작한다는 사실**뿐이다: + +- `ACDOCT` / `FAGLL03` 로 질의 → 총계정원장 프로그램이 `동의어 확장` 으로 나온다 +- `"회계 담당자가 월 단위로 확인"`(요약 본문) → 프로그램이 나온다 +- `"계정코드를 입력하세요"`(텍스트 심볼) → 프로그램이 나온다 + +정밀도가 좋아졌는지, 아래 계수들이 적절한지, 2단 검색이 베이스라인보다 나은지는 +**측정하지 않았다**. 현 정답셋 5문항으로는 개선도 회귀도 보이지 않는다. + +정답셋 50~100문항이 생긴 뒤에 튜닝할 값: + +| 값 | 위치 | 현재 | 뜻 | +|---|---|---|---| +| `EXPANDED_WEIGHT` | `query/expand.py` | 0.35 | 동의어 히트 점수 감쇠 | +| `MAX_SYNONYMS` | `query/expand.py` | 24 | 질의당 동의어 상한 | +| `_DESC_WEIGHT` | `query/tools.py` | 0.6 | 요약·키워드 색인 히트 가중 | +| `_BM25_WEIGHTS` | `index/db.py` | 표 참조 | FTS 컬럼별 bm25 가중치 | +| 2단 검색 보충 조건 | `query/tools.py:_fts_rows` | `len(결과) < limit` | 동의어 단계 발동 시점 | + +**이번 회귀가 이 과제의 필요성을 그대로 보여준다.** `find` recall@5 가 1.0 → 0.833 으로 떨어진 것을 +5문항 정답셋이 잡아냈지만, 원인 파악은 수동 디버깅으로 했다. 문항이 50개면 어떤 유형의 질의가 +깨졌는지가 바로 드러난다. 위 5개 값을 감으로 정한 상태가 현재의 가장 큰 미확정 요소다. diff --git a/eval/__init__.py b/eval/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/eval/questions.jsonl b/eval/questions.jsonl new file mode 100644 index 0000000..e08e621 --- /dev/null +++ b/eval/questions.jsonl @@ -0,0 +1,5 @@ +{"id": "find-001", "type": "find", "question": "총계정원장 조회하는 프로그램", "expected_programs": ["ZFIR10070", "ZFIR10560", "ZFIR10570"]} +{"id": "find-002", "type": "find", "question": "총계정원장 월별", "expected_programs": ["ZFIR10560"]} +{"id": "logic-001", "type": "logic", "question": "회사코드별 통화 조회하는 로직", "expected": [{"program": "ZFIR10070", "line_from": 1, "line_to": 999999}]} +{"id": "trace-001", "type": "trace", "question": "ZFIR10070에서 gt_acdoct 채워지는 과정", "program": "ZFIR10070", "symbol": "gt_acdoct", "expected_units": ["SELECT_SUMMARY_DATA", "SELECT_ACDOCT"]} +{"id": "explain-001", "type": "explain", "question": "ZFIR10070 의 START-OF-SELECTION 흐름", "program": "ZFIR10070", "expected_keywords": ["SELECT_DATA"]} diff --git a/eval/run_eval.py b/eval/run_eval.py new file mode 100644 index 0000000..69244f6 --- /dev/null +++ b/eval/run_eval.py @@ -0,0 +1,108 @@ +"""Stage 6 — 평가. 질문셋으로 검색 recall / 조각 적중 / trace unit 포함률을 측정한다. + +python -m eval.run_eval (인덱스 DB 적재 상태에서, API 서버 없이 tools 직접 호출) +결과는 eval/results/.json 에 저장 — 프롬프트/사전 변경 전후 비교용. + +질문 유형 (eval/questions.jsonl): +- find : {"question", "expected_programs"} → search_programs recall@5/@10 +- logic : {"question", "expected": [{"program","line_from","line_to"}]} + → search_logic 상위 조각 중 프로그램이 같고 줄 범위가 겹치면 적중. hit@10, MRR +- trace : {"program", "symbol", "expected_units"} → trace_variable unit 포함률 +- explain : {"program", "expected_keywords"} → 요약 텍스트 키워드 적중률 +""" +from __future__ import annotations + +import json +from datetime import date +from pathlib import Path + +from query import tools + +HERE = Path(__file__).resolve().parent + + +def _flatten_units(writes: list[dict], acc: set[str]) -> None: + for w in writes: + acc.add(w.get("unit", "")) + if w.get("callee"): + acc.add(w["callee"].upper()) + _flatten_units(w.get("callee_writes", []), acc) + + +def _overlaps(chunk: dict, exp: dict) -> bool: + if chunk["program"] != exp["program"].upper(): + return False + lo, hi = int(exp.get("line_from", 0)), int(exp.get("line_to", 10**9)) + return chunk["line_start"] <= hi and chunk["line_end"] >= lo + + +def eval_logic(q: dict) -> dict: + res = tools.search_logic(q["question"], top_k=10) + ranked = [c for g in res["programs"] for c in g["chunks"]] + ranked.sort(key=lambda c: -c["score"]) + expected = q["expected"] + hits, first_rank = 0, None + for exp in expected: + for i, c in enumerate(ranked[:10], 1): + if _overlaps(c, exp): + hits += 1 + first_rank = i if first_rank is None else min(first_rank, i) + break + return { + "hit@10": hits / len(expected) if expected else 0.0, + "mrr": (1.0 / first_rank) if first_rank else 0.0, + "found": [f"{c['program']} {c['include']} L{c['line_start']}-{c['line_end']}" for c in ranked[:10]], + } + + +def main() -> None: + questions = [json.loads(l) for l in (HERE / "questions.jsonl").read_text(encoding="utf-8").splitlines() if l.strip()] + results = [] + for q in questions: + r: dict = {"id": q["id"], "type": q["type"], "question": q.get("question", "")} + try: + if q["type"] == "find": + found = [x["program"] for x in tools.search_programs(q["question"], top_k=10)] + expected = set(q["expected_programs"]) + r["recall@5"] = len(expected & set(found[:5])) / len(expected) + r["recall@10"] = len(expected & set(found[:10])) / len(expected) + r["found"] = found[:10] + elif q["type"] == "logic": + r.update(eval_logic(q)) + elif q["type"] == "trace": + t = tools.trace_variable(q["program"], q["symbol"]) + units: set[str] = set() + _flatten_units(t["writes"], units) + expected = set(u.upper() for u in q["expected_units"]) + r["unit_hit_rate"] = len(expected & units) / len(expected) + r["units"] = sorted(units) + elif q["type"] == "explain": + s = tools.get_program_summary(q["program"]) + text = json.dumps(s, ensure_ascii=False).upper() + hits = [k for k in q["expected_keywords"] if k.upper() in text] + r["keyword_hit_rate"] = len(hits) / len(q["expected_keywords"]) + except Exception as e: # noqa: BLE001 + r["error"] = f"{type(e).__name__}: {e}" + results.append(r) + + # 유형별 평균 + agg: dict[str, dict[str, float]] = {} + for r in results: + for k, v in r.items(): + if isinstance(v, (int, float)) and k not in ("id",): + a = agg.setdefault(r["type"], {}).setdefault(k, [0.0, 0]) + a[0] += v + a[1] += 1 + summary = {t: {k: round(v[0] / v[1], 3) for k, v in m.items()} for t, m in agg.items()} + + out_dir = HERE / "results" + out_dir.mkdir(exist_ok=True) + out_path = out_dir / f"{date.today().isoformat()}.json" + out_path.write_text(json.dumps({"summary": summary, "results": results}, ensure_ascii=False, indent=2), + encoding="utf-8") + print(json.dumps({"summary": summary, "results": results}, ensure_ascii=False, indent=2)) + print(f"저장: {out_path}") + + +if __name__ == "__main__": + main() diff --git a/index/__init__.py b/index/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/index/db.py b/index/db.py new file mode 100644 index 0000000..5c3acfd --- /dev/null +++ b/index/db.py @@ -0,0 +1,271 @@ +"""Stage 4 — 인덱스 DB. + +기본 백엔드는 SQLite(FTS5) — 개발/폐쇄망에서 무의존 동작. +PostgreSQL(+pgvector) 전환은 ASSUMPTIONS.md 와 schema_postgres.sql 참고. +계획서 §6.1 스키마의 SQLite 대응판이다 (embedding 컬럼은 임베딩 모델 확정 전까지 보류). + +검색의 1차 단위는 logic_chunk(LLM 이 골라낸 로직 조각) 이고 unit 은 컨테이너·얇은 색인이다 +(docs/logic-chunk-design.md). +""" +from __future__ import annotations + +import json +import re +import sqlite3 +from pathlib import Path + +from config.settings import settings + +SCHEMA = """ +CREATE TABLE IF NOT EXISTS package( + devclass TEXT PRIMARY KEY, text_ko TEXT, summary_json TEXT +); +CREATE TABLE IF NOT EXISTS program( + name TEXT PRIMARY KEY, devclass TEXT, title_ko TEXT, + created_on TEXT, changed_on TEXT, source_hash TEXT, + summary_json TEXT, summary_status TEXT DEFAULT 'none', has_source INTEGER DEFAULT 0, + text_symbols_json TEXT +); +CREATE TABLE IF NOT EXISTS include( + program TEXT, include TEXT, code_hash TEXT, line_count INTEGER, code TEXT, + PRIMARY KEY(program, include) +); +CREATE TABLE IF NOT EXISTS unit( + unit_id TEXT PRIMARY KEY, program TEXT, include TEXT, unit_type TEXT, name TEXT, + line_start INTEGER, line_end INTEGER, code_hash TEXT, signature TEXT, + header_comment TEXT, loc INTEGER, refs_json TEXT, sub_chunks_json TEXT, + summary_json TEXT, summary_status TEXT DEFAULT 'none', prompt_version INTEGER DEFAULT 0, + summary_error TEXT, chunk_count INTEGER DEFAULT 0 +); +CREATE INDEX IF NOT EXISTS idx_unit_program ON unit(program); +CREATE TABLE IF NOT EXISTS symbol( + program TEXT, name TEXT, scope TEXT, unit_id TEXT, decl_include TEXT, + decl_line INTEGER, type_text TEXT, ddic_ref TEXT, kind TEXT +); +CREATE INDEX IF NOT EXISTS idx_symbol ON symbol(program, name); +-- 정의부 — 조각을 복사해 붙여넣을 때 함께 가야 하는 **선언 원문**. +-- symbol 과 행이 겹쳐 보이지만 목적이 다르다: symbol 은 추적(어디서 채워지나), declaration 은 +-- 붙여넣기(무엇을 함께 가져가야 컴파일되나). 그래서 code/줄범위/의존을 따로 담는다. +-- → parser/declarations.py, index/decls.py +CREATE TABLE IF NOT EXISTS declaration( + program TEXT, name TEXT, kind TEXT, scope TEXT, unit_id TEXT, include TEXT, + line_start INTEGER, line_end INTEGER, code TEXT, type_text TEXT, depends_json TEXT +); +CREATE INDEX IF NOT EXISTS idx_decl ON declaration(program, name); +CREATE INDEX IF NOT EXISTS idx_decl_unit ON declaration(unit_id); +CREATE TABLE IF NOT EXISTS symbol_write( + id INTEGER PRIMARY KEY AUTOINCREMENT, + program TEXT, symbol TEXT, unit_id TEXT, include TEXT, line INTEGER, kind TEXT, + source_symbols TEXT, source_tables TEXT, stmt_text TEXT, callee TEXT +); +CREATE INDEX IF NOT EXISTS idx_write ON symbol_write(program, symbol); +CREATE TABLE IF NOT EXISTS symbol_read( + program TEXT, symbol TEXT, unit_id TEXT, include TEXT, line INTEGER +); +CREATE INDEX IF NOT EXISTS idx_read ON symbol_read(program, symbol); +CREATE TABLE IF NOT EXISTS table_ref( + program TEXT, unit_id TEXT, table_name TEXT, mode TEXT, line INTEGER +); +CREATE INDEX IF NOT EXISTS idx_table_ref ON table_ref(table_name); +CREATE TABLE IF NOT EXISTS call_edge( + program TEXT, from_unit TEXT, to_unit TEXT, external_name TEXT, call_type TEXT, line INTEGER +); +CREATE INDEX IF NOT EXISTS idx_edge_to ON call_edge(to_unit); +CREATE INDEX IF NOT EXISTS idx_edge_ext ON call_edge(external_name); +CREATE TABLE IF NOT EXISTS topo( + program TEXT, unit_id TEXT, ord INTEGER, PRIMARY KEY(program, unit_id) +); +CREATE TABLE IF NOT EXISTS llm_usage_log( + id INTEGER PRIMARY KEY AUTOINCREMENT, + ts TEXT, program TEXT, model TEXT, trigger_by TEXT, + calls INTEGER, prompt_tokens INTEGER, completion_tokens INTEGER, cost_usd REAL, + done INTEGER, failed INTEGER, skipped INTEGER, elapsed_s REAL, + status TEXT DEFAULT 'done', total INTEGER DEFAULT 0, chunks INTEGER DEFAULT 0 +); +CREATE TABLE IF NOT EXISTS logic_chunk( + chunk_id TEXT PRIMARY KEY, + program TEXT, include TEXT, unit_id TEXT, seq INTEGER, + line_start INTEGER, line_end INTEGER, code_hash TEXT, + kind TEXT, purpose_ko TEXT, purpose_en TEXT, + keywords_ko TEXT, keywords_en TEXT, sap_objects TEXT, + tables_read TEXT, tables_write TEXT, calls TEXT, + confidence REAL, prompt_version INTEGER, extracted_at TEXT +); +CREATE INDEX IF NOT EXISTS idx_chunk_program ON logic_chunk(program); +CREATE INDEX IF NOT EXISTS idx_chunk_unit ON logic_chunk(unit_id); +CREATE TABLE IF NOT EXISTS ddic_table(name TEXT PRIMARY KEY, text_ko TEXT); +CREATE TABLE IF NOT EXISTS ddic_field(tabname TEXT, field TEXT, text_ko TEXT, data_element TEXT); +CREATE TABLE IF NOT EXISTS tcode(tcode TEXT PRIMARY KEY, program TEXT, text_ko TEXT); +-- 프로그램 색인은 **두 테이블로 나눈다**. bm25 는 행 전체 길이로 정규화하므로, 짧은 타이틀과 +-- 긴 요약을 같은 행에 넣으면 요약이 있는 프로그램이 오히려 밀린다 (실측: 타이틀이 "총계정원장 조회"인 +-- ZFIR10070 이 요약을 붙인 뒤 1위→33위. 행 길이 1,872자 vs 타이틀만 있는 행 40자). +-- 나누면 각 테이블 안에서 행 길이가 비슷해져 요약은 **점수를 더하기만** 하고 이름/타이틀 일치를 +-- 밀어내지 않는다. +CREATE VIRTUAL TABLE IF NOT EXISTS program_fts USING fts5( + name, title, keywords, bigrams, tokenize='unicode61' +); +-- 서술 색인 — LLM 요약·조각 키워드·테이블·텍스트 심볼 (수정사항 1·3번) +CREATE VIRTUAL TABLE IF NOT EXISTS program_desc_fts USING fts5( + name UNINDEXED, purpose, keywords, objects, bigrams, tokenize='unicode61' +); +CREATE VIRTUAL TABLE IF NOT EXISTS unit_fts USING fts5( + unit_id UNINDEXED, program UNINDEXED, name, purpose, keywords, bigrams, tokenize='unicode61' +); +CREATE VIRTUAL TABLE IF NOT EXISTS chunk_fts USING fts5( + chunk_id UNINDEXED, program UNINDEXED, purpose, keywords, objects, bigrams, tokenize='unicode61' +); +""" + + +def db_path() -> Path: + url = settings.database_url + if not url.startswith("sqlite:///"): + raise RuntimeError( + f"현재 빌드는 SQLite 백엔드만 구현되어 있다 (DATABASE_URL={url}). ASSUMPTIONS.md 참고." + ) + return Path(url.replace("sqlite:///", "")) + + +# 기존 DB에 나중에 추가된 컬럼 — CREATE TABLE IF NOT EXISTS 는 컬럼을 추가하지 못한다 +_COLUMN_MIGRATIONS = [ + ("unit", "summary_error", "TEXT"), + ("unit", "chunk_count", "INTEGER DEFAULT 0"), # 로직 조각 수 (docs/logic-chunk-design.md) + ("program", "text_symbols_json", "TEXT"), # TEXT-nnn → 한국어 텍스트 (요약 문맥용) + ("llm_usage_log", "status", "TEXT DEFAULT 'done'"), + ("llm_usage_log", "total", "INTEGER DEFAULT 0"), + ("llm_usage_log", "chunks", "INTEGER DEFAULT 0"), +] + + +def _migrate(con: sqlite3.Connection) -> None: + for table, column, decl in _COLUMN_MIGRATIONS: + cols = {r[1] for r in con.execute(f"PRAGMA table_info({table})")} + if column not in cols: + con.execute(f"ALTER TABLE {table} ADD COLUMN {column} {decl}") + _migrate_fts(con) + + +# FTS5 가상테이블은 ALTER 로 컬럼을 추가할 수 없다. 모두 파생 데이터(program/unit/logic_chunk 에서 +# 재생성 가능)이므로 컬럼 구성이 달라지면 DROP 후 다시 만든다. 재적재는 호출 측 책임: +# program_fts → index.loader.refresh_program_fts(con) +# chunk_fts / unit_fts → 해당 프로그램 재적재 또는 요약 재실행 +_FTS_EXPECTED = { + "program_fts": ["name", "title", "keywords", "bigrams"], + "program_desc_fts": ["name", "purpose", "keywords", "objects", "bigrams"], + "unit_fts": ["unit_id", "program", "name", "purpose", "keywords", "bigrams"], + "chunk_fts": ["chunk_id", "program", "purpose", "keywords", "objects", "bigrams"], +} + + +def _migrate_fts(con: sqlite3.Connection) -> list[str]: + """컬럼 구성이 바뀐 FTS 테이블을 재생성하고, 재생성한 테이블 이름을 돌려준다.""" + rebuilt: list[str] = [] + for table, expected in _FTS_EXPECTED.items(): + cols = [r[1] for r in con.execute(f"PRAGMA table_info({table})")] + if cols and cols != expected: + con.execute(f"DROP TABLE {table}") + con.executescript(SCHEMA) # IF NOT EXISTS — 빠진 테이블만 다시 만든다 + rebuilt.append(table) + return rebuilt + + +def connect() -> sqlite3.Connection: + path = db_path() + path.parent.mkdir(parents=True, exist_ok=True) + con = sqlite3.connect(str(path)) + con.row_factory = sqlite3.Row + con.execute("PRAGMA journal_mode=WAL") + con.executescript(SCHEMA) + _migrate(con) + return con + + +_HANGUL_SEQ = re.compile(r"[가-힣]{2,}") +_TEXT_SYM_REF = re.compile(r"TEXT-(\w{3})", re.I) + + +def clean_comment(text: str | None) -> str: + """헤더 주석에서 장식 문자(----, ****, &, *&)를 제거해 사람이 읽을 문장만 남긴다. + + 적재 시점의 unit_fts.purpose 와 요약 프롬프트가 모두 이걸 거쳐야 한다 — 거치지 않으면 + 색인에 '----------------' 만 들어간다 (수정사항 1번). + """ + if not text: + return "" + parts = re.split(r"[*&\-]{3,}|\s\*\s|&", text) + words = " ".join(p.strip() for p in parts if p.strip()) + words = re.sub(r"^(Form|FORM|Include|INCLUDE)\s+", "", words).strip() + return words[:150] + + +def text_symbol_phrases(code: str, text_symbols: dict[str, str]) -> list[str]: + """코드에 등장하는 TEXT-nnn 을 실제 한국어 텍스트로 치환한 목록 (수정사항 3번). + + LLM 없이도 조각·프로그램에 자연어 앵커가 생기는 가장 싼 경로라 FTS 에도 넣는다. + """ + if not code or not text_symbols: + return [] + out: list[str] = [] + for m in _TEXT_SYM_REF.finditer(code): + val = text_symbols.get(m.group(1).upper()) + if val and val not in out: + out.append(val) + return out + + +def bigrams(text: str) -> str: + """한국어 형태소 분석기 없이 부분일치를 위해 한글 연속열의 2-gram을 공백 구분으로 나열.""" + grams: list[str] = [] + for seq in _HANGUL_SEQ.findall(text or ""): + grams.extend(seq[i : i + 2] for i in range(len(seq) - 1)) + return " ".join(dict.fromkeys(grams)) + + +# FTS5 컬럼 가중치. 기본 `rank`(= 모든 컬럼 가중치 1)를 쓰면 안 된다: +# bm25 는 문서 길이로 정규화하므로, 요약·키워드가 붙어 **길어진** 행이 타이틀만 있는 행보다 +# 낮게 나온다. 요약이 있는 프로그램이 오히려 밀리는 역전이 생긴다(실측: 타이틀이 "총계정원장 조회"인 +# ZFIR10070 이 요약을 붙인 뒤 top5 밖으로 밀려났다). 이름·타이틀을 강하게 가중해 바로잡는다. +_BM25_WEIGHTS = { + # 컬럼 순서와 같아야 한다 (UNINDEXED 컬럼도 자리를 차지한다) + "program_fts": (12.0, 8.0, 1.5, 1.0), # name title keywords bigrams + "program_desc_fts": (0.0, 3.0, 2.0, 1.5, 1.0), # name purpose keywords objects bigrams + "unit_fts": (0.0, 0.0, 6.0, 2.0, 1.5, 1.0), # unit_id program name purpose keywords bigrams + "chunk_fts": (0.0, 0.0, 4.0, 2.0, 1.5, 1.0), # chunk_id program purpose keywords objects bigrams +} + + +def bm25_rank(table: str) -> str: + """`ORDER BY` / `SELECT` 에 넣을 가중 bm25 식. 점수는 음수이고 작을수록 관련도가 높다.""" + weights = ", ".join(f"{w}" for w in _BM25_WEIGHTS[table]) + return f"bm25({table}, {weights})" + + +def query_tokens(q: str) -> list[str]: + """질의 문자열 → 검색 토큰 목록 (구두점·기호 제거).""" + return [t for t in re.split(r"[^\w가-힣]+", q or "") if t] + + +def fts_or(terms: list[str]) -> str: + """임의 용어 목록 → FTS5 MATCH 식. 용어마다 큰따옴표로 감싸고 한글 2-gram 을 함께 OR 결합. + + 질의 확장(query/expand.py)이 원질의와 동의어를 서로 다른 MATCH 식으로 나눠 쓰기 위해 + fts_escape 에서 분리했다. + """ + parts: list[str] = [] + for t in terms: + t = t.strip() + if not t: + continue + parts.append('"' + t.replace('"', "") + '"') + for g in bigrams(t).split(): + parts.append(f'"{g}"') + return " OR ".join(dict.fromkeys(parts)) if parts else '""' + + +def fts_escape(q: str) -> str: + """FTS5 MATCH 질의에 안전한 형태로: 토큰별 큰따옴표 감싸고 OR 결합.""" + return fts_or(query_tokens(q)) + + +def loads(v: str | None): + return json.loads(v) if v else None diff --git a/index/decls.py b/index/decls.py new file mode 100644 index 0000000..e990fff --- /dev/null +++ b/index/decls.py @@ -0,0 +1,237 @@ +"""정의부 조립 — 조각(또는 unit) 코드를 붙여넣을 때 함께 가야 하는 선언을 모은다. + +인덱스에 든 코드 원문은 **로직만**이다. ABAP 은 내부테이블·스트럭처·상수·필드심볼을 TOP 인클루드나 +FORM 머리에 따로 선언하므로, 로직만 복사하면 그대로는 컴파일되지 않는다. 여기서 하는 일: + + 1. 조각 코드에 등장하는 이름을 모은다 (파서 토크나이저) + 2. 그 이름의 선언을 `declaration` 테이블에서 찾는다 (unit 로컬 → 전역 순) + 3. 선언이 참조하는 다른 선언을 **재귀로** 끌어온다 + (`LT_DATA LIKE GT_DATA` → GT_DATA, `GT_ITEMS TYPE TY_ITEMS` → TY_ITEMS → TY_ITEM) + 4. 의존이 먼저 오도록 정렬해 **붙여넣을 수 있는 한 덩어리**로 만든다 + +**쓸지 말지는 판단하지 않는다.** 붙여넣는 쪽 LLM 이 정한다(이미 있으면 버리고, 이름이 겹치면 바꾸고). +그래서 분류만 붙여 넘긴다: 가져가야 할 선언 / DDIC 외부 참조 / FORM 파라미터 / 못 찾은 이름. + +조각→선언 대응을 따로 저장하지 않고 **읽을 때 계산**한다. 결정론적이라 언제 계산해도 같고, +조각이 재추출되거나 선언이 바뀌어도 엇갈리지 않는다 (logic_chunk 에 캐시하면 둘이 따로 늙는다). +""" +from __future__ import annotations + +import re +import sqlite3 + +from parser.declarations import BUILTIN_TYPES, base_name, clean_ref, type_name_after +from parser.statements import split_statements + +from .db import loads + +MAX_DECLS = 80 # 이 이상은 붙여넣기용으로 의미가 없다 (TOP 전체를 퍼오는 꼴) +MAX_CODE_LINES = 500 + +# 선언을 못 찾았을 때 "변수처럼 생겼는가" 판정 — 한국 SAP 관행의 접두사(GV_/LT_/LS_/P_ …). +# DDIC 이름(LVC_T_FCAT, W3_QVALUE)이나 키워드가 섞여 들어오지 않게 접두사를 2자 이내로 제한한다. +_VARLIKE = re.compile(r"^[A-Z]{1,2}_[A-Z0-9_]*$") +_FIELD_SYMBOL = re.compile(r"^<[A-Z0-9_]+>$") +# 전역 리포지토리 객체(클래스·인터페이스·예외) — 프로그램 선언이 아니므로 '못 찾았다'고 보고하지 않는다 +_REPO_OBJECT = re.compile(r"^(Z?CL|Z?CX|Z?IF|Y?CL)_") + +# `X-Y` 형태의 참조가 가리킬 수 있는 선언 종류. `TABLES: BSEG` 작업영역이나 타입풀은 여기 없다 — +# `LIKE BSEG-WRBTR` 은 사전에서 타입을 빌려 쓴 것이라 그 선언을 함께 가져갈 필요가 없다. +_COMPONENT_KINDS = {"data", "types", "constants", "ranges", "select-option", "field-symbol"} + +# 호출문의 파라미터 구획 — 이 뒤의 `이름 = 값` 에서 왼쪽 이름은 호출 대상의 인터페이스다 +_SECTION_KEYWORDS = {"EXPORTING", "IMPORTING", "CHANGING", "TABLES", "RECEIVING", "EXCEPTIONS"} + + +def _row(d: sqlite3.Row, via: str) -> dict: + return { + "name": d["name"], "kind": d["kind"], "scope": d["scope"], "include": d["include"], + "line_start": d["line_start"], "line_end": d["line_end"], "code": d["code"], + "type_text": d["type_text"] or "", "depends": loads(d["depends_json"]) or [], "via": via, + } + + +def _index(con: sqlite3.Connection, program: str) -> tuple[dict, dict]: + """(전역 선언 {이름: row}, unit 로컬 선언 {(unit_id, 이름): row}) + + 같은 이름이 여러 번 선언돼 있으면(공용 인클루드 중복) 먼저 나온 것을 쓴다 — 결정론적이면 된다. + """ + glob: dict[str, sqlite3.Row] = {} + local: dict[tuple[str, str], sqlite3.Row] = {} + for d in con.execute( + "SELECT * FROM declaration WHERE program=? ORDER BY include, line_start", (program,) + ): + if d["scope"] == "unit" and d["unit_id"]: + local.setdefault((d["unit_id"], d["name"]), d) + else: + glob.setdefault(d["name"], d) + return glob, local + + +def used_names(code: str) -> list[str]: + """코드에 등장하는 식별자 (등장 순서 유지). + + 보통은 기본 이름만 남기지만(`GT_LOAD-SEQNO` → GT_LOAD), **TYPE/LIKE 뒤의 참조는 컴포넌트를 + 붙인 채로** 돌려준다(`LIKE BSEG-WRBTR` → BSEG-WRBTR). 사전 타입을 빌려 쓴 것과 작업영역을 + 실제로 쓰는 것을 뒤에서 구분하기 위해서다. + """ + out: list[str] = [] + + def emit(ref: str) -> None: + if base_name(ref) in BUILTIN_TYPES: + return + if (_FIELD_SYMBOL.match(base_name(ref)) or re.match(r"^[A-Z_/][A-Z0-9_/-]*$", ref)) \ + and ref not in out: + out.append(ref) + + # 문장 단위로 본다 — `CALL FUNCTION` 의 **형식 파라미터 이름**(I_BUKRS = gv_bukrs 의 왼쪽)과 + # 예외 이름(NO_RATE_FOUND)은 이 프로그램의 변수가 아니라 호출 대상의 인터페이스다. + # 이름만 보고는 변수와 구분되지 않아(둘 다 I_/P_/NO_ …) 여기서 걸러야 한다. + for st in split_statements(code, "chunk")[0]: + up = st.upper + # 파라미터 구획 키워드가 있으면 `name =` 의 왼쪽은 형식 파라미터다. + # `CALL FUNCTION` 뿐 아니라 함수형 메서드 호출(`cl_x=>f( IMPORTING r = v )`)도 여기 걸린다. + is_call = bool(up) and (up[0] == "CALL" or bool(_SECTION_KEYWORDS & set(up))) + in_exceptions = False + i = 0 + while i < len(up): + t = up[i] + if t in {"TYPE", "LIKE"}: + name, i = type_name_after(up, i) + if name: + emit(clean_ref(name)) + continue + if is_call and t == "EXCEPTIONS": + in_exceptions = True + elif in_exceptions or (is_call and i + 1 < len(up) and up[i + 1] == "="): + pass # 예외 이름 / 형식 파라미터 이름 — 건너뛴다 + else: + emit(base_name(t)) + i += 1 + return out + + +def resolve(con: sqlite3.Connection, program: str, unit_id: str | None, code: str, + self_include: str | None = None, self_range: tuple[int, int] | None = None) -> dict: + """코드 한 덩어리 → 정의부. + + self_include/self_range 를 주면 **그 범위 안에 있는 선언은 뺀다** — 이미 코드에 들어 있으므로 + 앞에 또 붙이면 중복 선언이 된다. + """ + glob, local = _index(con, program) + params = {r["name"] for r in con.execute( + "SELECT name FROM symbol WHERE program=? AND unit_id=? AND kind='param'", (program, unit_id))} + + def lookup(name: str, scoped: bool) -> sqlite3.Row | None: + if scoped and unit_id and (unit_id, name) in local: + return local[(unit_id, name)] + return glob.get(name) + + def inside_self(d: sqlite3.Row) -> bool: + return bool(self_range and self_include == d["include"] + and d["line_start"] >= self_range[0] and d["line_end"] <= self_range[1]) + + picked: dict[tuple[str, str, int], dict] = {} # (include, name, line_start) → row + external: list[str] = [] + unresolved: list[str] = [] + param_hits: list[str] = [] + ordered: list[dict] = [] + visiting: set[str] = set() + + def walk(ref: str, via: str, scoped: bool) -> None: + """의존을 먼저 방문(post-order)해 TYPES 가 DATA 보다 앞에 오게 한다. + + `ref` 는 `GT_DATA` 이거나 컴포넌트까지 붙은 `BKPF-BELNR` 이다. 후자가 DDIC 테이블을 + 가리키면(= 지역 선언이 `TABLES:` 작업영역뿐이면) 사전 타입을 빌려 쓴 것이므로 + **작업영역 선언을 끌어오지 않는다** — 붙여넣는 코드에는 필요 없다. + """ + name = base_name(ref) + if name in visiting: + return + d = lookup(name, scoped) + if d is not None and "-" in ref and d["kind"] not in _COMPONENT_KINDS: + if name not in external: + external.append(name) + return + if d is None: + if name in params: + if name not in param_hits: + param_hits.append(name) + elif via == "dependency": + if name not in external: + external.append(name) # DDIC 타입/구조 — 선언을 가져갈 필요가 없다 + elif (_VARLIKE.match(name) or _FIELD_SYMBOL.match(name)) \ + and not _REPO_OBJECT.match(name) and name not in unresolved: + unresolved.append(name) # 변수처럼 생겼는데 선언이 없다 (수집 누락 가능) + return + key = (d["include"], d["name"], d["line_start"]) + if key in picked or inside_self(d): + return + visiting.add(name) + for dep in loads(d["depends_json"]) or []: + walk(dep, "dependency", d["scope"] == "unit") + visiting.discard(name) + if key not in picked: + row = _row(d, via) + picked[key] = row + ordered.append(row) + + for n in used_names(code): + walk(n, "used", True) + + truncated = len(ordered) > MAX_DECLS + ordered = ordered[:MAX_DECLS] + return { + "count": len(ordered), + "declarations": ordered, + "code": render(ordered, program), + "external_refs": external, + "params": param_hits, + "unresolved": unresolved, + "truncated": truncated, + } + + +def render(decls: list[dict], program: str = "") -> str: + """선언 목록 → 그대로 붙여넣을 수 있는 정의부 한 덩어리 (출처를 주석으로 남긴다).""" + if not decls: + return "" + out = [ + "*&---------------------------------------------------------------------*", + f"*& 정의부 — {program} 에서 가져온 선언. 이 로직을 옮겨 붙일 때 함께 필요하다.", + "*& 이미 같은 선언이 있으면 버리고, 이름이 겹치면 바꿔서 쓸 것.", + "*&---------------------------------------------------------------------*", + ] + seen_span: set[tuple[str, int, int]] = set() + n_lines = 0 + for d in decls: + span = (d["include"], d["line_start"], d["line_end"]) + if span in seen_span: # 한 줄 체인(`TABLES: a, b.`)에서 온 형제들 + continue + seen_span.add(span) + body = d["code"] + n_lines += body.count("\n") + 1 + if n_lines > MAX_CODE_LINES: + out.append(f"* … (정의부가 길어 생략 — 나머지는 GET /programs/{program}/declarations)") + break + out.append(f"* {d['include']} L{d['line_start']}-L{d['line_end']} · {d['kind']}" + f"{' · unit 로컬' if d['scope'] == 'unit' else ''}") + out.append(body) + return "\n".join(out) + + +def for_chunk(con: sqlite3.Connection, chunk: sqlite3.Row, code: str) -> dict: + """logic_chunk 행 + 조각 코드 → 정의부.""" + return resolve(con, chunk["program"], chunk["unit_id"], code, + self_include=chunk["include"], + self_range=(chunk["line_start"], chunk["line_end"])) + + +def program_declarations(con: sqlite3.Connection, program: str, scope: str | None = None) -> list[dict]: + """프로그램의 선언 전체 (위키 `## 정의부` 섹션용).""" + sql = "SELECT * FROM declaration WHERE program=?" + params: list = [program.upper()] + if scope: + sql += " AND scope=?" + params.append(scope) + return [_row(d, "catalog") for d in con.execute(sql + " ORDER BY include, line_start", params)] diff --git a/index/loader.py b/index/loader.py new file mode 100644 index 0000000..fcda6a7 --- /dev/null +++ b/index/loader.py @@ -0,0 +1,331 @@ +"""Stage 4 로더 — packages.jsonl + parse.json → SQLite upsert. + +python -m index.loader [--program X] [--limit N] +증분: program.source_hash(전체 인클루드 해시 결합)가 같으면 스킵. +재적재 시 code_hash 가 같은 unit 의 요약·로직 조각(logic_chunk)은 보존한다. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path + +from config.settings import settings + +from .db import bigrams, clean_comment, connect, loads + + +def load_packages(con) -> int: + path = settings.data_normalized / "packages.jsonl" + if not path.exists(): + return 0 + n = 0 + with path.open(encoding="utf-8") as f: + for line in f: + row = json.loads(line) + con.execute( + "INSERT INTO package(devclass, text_ko) VALUES(?,?) " + "ON CONFLICT(devclass) DO NOTHING", + (row["devclass"], ""), + ) + con.execute( + "INSERT INTO program(name, devclass, title_ko, created_on, changed_on) " + "VALUES(?,?,?,?,?) " + "ON CONFLICT(name) DO UPDATE SET devclass=excluded.devclass, " + "title_ko=excluded.title_ko, created_on=excluded.created_on, changed_on=excluded.changed_on", + (row["obj_name"], row["devclass"], row["text"], row["created_on"], row["changed_on"]), + ) + n += 1 + return n + + +def load_tcodes(con) -> int: + """data/normalized/tcodes.jsonl → tcode 테이블. + + TSTC 를 못 받은 상태(ASSUMPTIONS.md §5)에서, 덤프 헤더 주석의 `* T_CODE :` 값을 + ingest/from_dir.py 가 모아둔 것을 적재한다. tcodes/ 위키 페이지의 입력이 된다. + """ + path = settings.data_normalized / "tcodes.jsonl" + if not path.exists(): + return 0 + n = 0 + with path.open(encoding="utf-8") as f: + for line in f: + if not line.strip(): + continue + row = json.loads(line) + con.execute( + "INSERT INTO tcode(tcode, program, text_ko) VALUES(?,?,?) " + "ON CONFLICT(tcode) DO UPDATE SET program=excluded.program, text_ko=excluded.text_ko", + (row["tcode"].upper(), (row.get("program") or "").upper(), row.get("text_ko") or ""), + ) + n += 1 + return n + + +def load_parsed(con, parse_path: Path, force: bool = False) -> str: + """parse.json 한 건 적재. force=True 면 source_hash 가 같아도 구조를 다시 적재한다. + + 파서나 색인 로직이 바뀐 경우(소스는 그대로인데 산출물이 달라지는 경우) 강제 재적재가 필요하다. + """ + d = json.loads(parse_path.read_text(encoding="utf-8")) + program = d["program"] + + source_hash = hashlib.sha256( + "".join(i["sha256"] for i in d["includes"]).encode() + ).hexdigest() + cur = con.execute("SELECT source_hash FROM program WHERE name=?", (program,)) + row = cur.fetchone() + if row and row["source_hash"] == source_hash and not force: + # 구조는 그대로 — 나중에 추가된 컬럼(텍스트 심볼)만 비어 있으면 채운다 + con.execute("UPDATE program SET text_symbols_json=? WHERE name=? AND text_symbols_json IS NULL", + (json.dumps(d.get("text_symbols", []), ensure_ascii=False), program)) + return "skip" + + title = d.get("description", "") + text_symbols = json.dumps(d.get("text_symbols", []), ensure_ascii=False) + con.execute( + "INSERT INTO program(name, title_ko, source_hash, has_source, text_symbols_json) VALUES(?,?,?,1,?) " + "ON CONFLICT(name) DO UPDATE SET " + "title_ko=CASE WHEN excluded.title_ko!='' THEN excluded.title_ko ELSE program.title_ko END, " + "source_hash=excluded.source_hash, has_source=1, summary_status='stale', " + "text_symbols_json=excluded.text_symbols_json", + (program, title, source_hash, text_symbols), + ) + + # 재적재 전, code_hash 가 같은 unit 의 기존 요약(얇은 색인)·로직 조각을 보존해 둔다 + kept_summaries = { + r["unit_id"]: (r["code_hash"], r["summary_json"], r["prompt_version"], r["chunk_count"]) + for r in con.execute( + "SELECT unit_id, code_hash, summary_json, prompt_version, chunk_count FROM unit " + "WHERE program=? AND summary_status='done'", (program,) + ).fetchall() + } + + # 기존 구조 데이터 삭제 후 재적재 (unit 단위 증분은 v2) + for table in ("include", "unit", "symbol", "declaration", "symbol_write", "symbol_read", + "table_ref", "call_edge", "topo"): + con.execute(f"DELETE FROM {table} WHERE program=?", (program,)) + con.execute("DELETE FROM unit_fts WHERE program=?", (program,)) + + norm_dir = settings.data_normalized / program + for inc in d["includes"]: + code_file = norm_dir / f"{inc['include']}.abap" + code = code_file.read_text(encoding="utf-8") if code_file.exists() else "" + con.execute( + "INSERT INTO include(program, include, code_hash, line_count, code) VALUES(?,?,?,?,?)", + (program, inc["include"], inc["sha256"], inc["line_count"], code), + ) + + kept_unit_ids: set[str] = set() + for u in d["units"]: + con.execute( + "INSERT INTO unit(unit_id, program, include, unit_type, name, line_start, line_end, " + "code_hash, signature, header_comment, loc, refs_json, sub_chunks_json) " + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)", + (u["unit_id"], program, u["include"], u["unit_type"], u["name"], + u["line_start"], u["line_end"], u["code_hash"], u.get("signature", ""), + u.get("header_comment", ""), u.get("loc", 0), + json.dumps(u.get("refs"), ensure_ascii=False) if u.get("refs") else None, + json.dumps(u.get("sub_chunks", []), ensure_ascii=False)), + ) + kept = kept_summaries.get(u["unit_id"]) + if kept and kept[0] == u["code_hash"]: + con.execute( + "UPDATE unit SET summary_json=?, summary_status='done', prompt_version=?, chunk_count=? " + "WHERE unit_id=?", + (kept[1], kept[2], kept[3] or 0, u["unit_id"]), + ) + kept_unit_ids.add(u["unit_id"]) + refs = u.get("refs") or {} + for t in refs.get("tables_read", []): + con.execute("INSERT INTO table_ref VALUES(?,?,?,?,?)", (program, u["unit_id"], t, "read", 0)) + for t in refs.get("tables_write", []): + con.execute("INSERT INTO table_ref VALUES(?,?,?,?,?)", (program, u["unit_id"], t, "write", 0)) + # unit FTS — 얇은 색인 (이름/시그니처/주석; 요약이 있으면 한 줄 요약도) + # 장식 문자('----* INITIALIZATION ----*')를 그대로 넣으면 색인이 쓰레기가 된다 (수정사항 1번) + purpose = clean_comment(u.get("header_comment", "")) + if kept and kept[0] == u["code_hash"] and kept[1]: + purpose = (json.loads(kept[1]).get("purpose_ko") or purpose) + text = " ".join(filter(None, [u["name"], u.get("signature", ""), purpose])) + con.execute( + "INSERT INTO unit_fts(unit_id, program, name, purpose, keywords, bigrams) VALUES(?,?,?,?,?,?)", + (u["unit_id"], program, u["name"], purpose, "", bigrams(text)), + ) + + # 로직 조각: code_hash 가 같은 unit 의 조각만 남기고 나머지는 삭제 (재추출 대상) + stale_chunks = [ + r["chunk_id"] for r in con.execute( + "SELECT chunk_id, unit_id FROM logic_chunk WHERE program=?", (program,) + ).fetchall() if r["unit_id"] not in kept_unit_ids + ] + for cid in stale_chunks: + con.execute("DELETE FROM logic_chunk WHERE chunk_id=?", (cid,)) + con.execute("DELETE FROM chunk_fts WHERE chunk_id=?", (cid,)) + + for s in d["symbols"]: + con.execute( + "INSERT INTO symbol VALUES(?,?,?,?,?,?,?,?,?)", + (program, s["name"], s["scope"], s.get("unit_id"), s.get("decl_include", ""), + s.get("decl_line", 0), s.get("type_text", ""), s.get("ddic_ref", ""), s.get("kind", "")), + ) + # 정의부 — 붙여넣기용 선언 원문 (parser/declarations.py) + for dc in d.get("declarations", []): + con.execute( + "INSERT INTO declaration(program, name, kind, scope, unit_id, include, line_start, " + "line_end, code, type_text, depends_json) VALUES(?,?,?,?,?,?,?,?,?,?,?)", + (program, dc["name"], dc["kind"], dc["scope"], dc.get("unit_id"), dc["include"], + dc["line_start"], dc["line_end"], dc["code"], dc.get("type_text", ""), + json.dumps(dc.get("depends", []), ensure_ascii=False)), + ) + for w in d["writes"]: + con.execute( + "INSERT INTO symbol_write(program, symbol, unit_id, include, line, kind, " + "source_symbols, source_tables, stmt_text, callee) VALUES(?,?,?,?,?,?,?,?,?,?)", + (program, w["symbol"], w["unit_id"], w["include"], w["line"], w["kind"], + json.dumps(w.get("source_symbols", [])), json.dumps(w.get("source_tables", [])), + w.get("stmt_text", ""), w.get("callee", "")), + ) + for r in d["reads"]: + con.execute( + "INSERT INTO symbol_read VALUES(?,?,?,?,?)", + (program, r["symbol"], r["unit_id"], r["include"], r["line"]), + ) + for e in d["call_edges"]: + con.execute( + "INSERT INTO call_edge VALUES(?,?,?,?,?,?)", + (program, e["from_unit"], e.get("to_unit"), e.get("external_name"), + e["call_type"], e.get("line", 0)), + ) + for i, uid in enumerate(d.get("topo_order", [])): + con.execute("INSERT OR REPLACE INTO topo VALUES(?,?,?)", (program, uid, i)) + + return "loaded" + + +def _identity_row(row) -> tuple: + """program_fts — 이름·타이틀·패키지만. **짧게 유지한다.** + + 요약을 여기에 섞으면 bm25 의 길이 정규화 때문에 요약이 있는 프로그램이 오히려 밀린다 + (index/db.py 의 주석 참고). 서술 텍스트는 program_desc_fts 로 분리한다. + """ + title = row["title_ko"] or "" + text = " ".join(filter(None, [title, row["pkg_text"]])) + return (row["name"], title, + " ".join(filter(None, [row["devclass"] or "", row["pkg_text"] or ""])), + bigrams(text)) + + +def _desc_row(con, row) -> tuple | None: + """program_desc_fts — LLM 요약·조각 키워드·테이블·텍스트 심볼 (수정사항 1·3번). + + "입고 처리하는 프로그램" 처럼 이름·타이틀에 없는 말로 물어도 걸리게 하는 색인이다. + 넣을 게 없으면 None (빈 행을 만들면 길이 정규화만 왜곡된다). + """ + name = row["name"] + summary = loads(row["summary_json"]) or {} + purpose = " ".join(filter(None, [ + summary.get("business_purpose_ko") or "", + summary.get("business_purpose_en") or "", + " ".join(summary.get("main_flow") or []), + ])) + + kw: list[str] = list(summary.get("keywords_ko") or []) + list(summary.get("keywords_en") or []) + kw += list(summary.get("business_tags") or []) + if summary.get("sap_module"): + kw.append(summary["sap_module"]) + objs: list[str] = list(summary.get("related_tcodes") or []) + for r in con.execute( + "SELECT keywords_ko, keywords_en, sap_objects FROM logic_chunk WHERE program=?", (name,) + ): + kw += (loads(r["keywords_ko"]) or []) + (loads(r["keywords_en"]) or []) + objs += loads(r["sap_objects"]) or [] + objs += [t["table_name"] for t in con.execute( + "SELECT DISTINCT table_name FROM table_ref WHERE program=? LIMIT 200", (name,))] + + # 텍스트 심볼의 한국어 원문 — LLM 없이도 자연어 앵커가 생긴다 (수정사항 3번) + ts = [t.get("text", "") for t in (loads(row["text_symbols_json"]) or []) if t.get("text")] + + kw = list(dict.fromkeys(k for k in kw if k))[:200] + objs = list(dict.fromkeys(o.upper() for o in objs if o))[:200] + purpose_text = " ".join(filter(None, [purpose, " ".join(ts)])) + if not (purpose_text or kw or objs): + return None + return (name, purpose_text, " ".join(kw), " ".join(objs), + bigrams(" ".join(filter(None, [purpose, " ".join(kw), " ".join(ts)])))) + + +_PROGRAM_FTS_SQL = ( + "SELECT p.name, p.title_ko, p.devclass, p.summary_json, p.text_symbols_json, " + "COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass = p.devclass" +) + + +def refresh_program_fts(con, program: str | None = None) -> int: + """program_fts + program_desc_fts 재구축. program 을 주면 그 한 건만 갱신한다. + + 전량 재구축을 /ingest 마다 하면 1만 본에서 O(N²) 가 된다 — 단건 경로가 필요하다. + """ + if program: + name = program.upper() + con.execute("DELETE FROM program_fts WHERE name=?", (name,)) + con.execute("DELETE FROM program_desc_fts WHERE name=?", (name,)) + rows = con.execute(_PROGRAM_FTS_SQL + " WHERE p.name=?", (name,)).fetchall() + else: + con.execute("DELETE FROM program_fts") + con.execute("DELETE FROM program_desc_fts") + rows = con.execute(_PROGRAM_FTS_SQL).fetchall() + for row in rows: + con.execute( + "INSERT INTO program_fts(name, title, keywords, bigrams) VALUES(?,?,?,?)", + _identity_row(row), + ) + desc = _desc_row(con, row) + if desc: + con.execute( + "INSERT INTO program_desc_fts(name, purpose, keywords, objects, bigrams) " + "VALUES(?,?,?,?,?)", + desc, + ) + return len(rows) + + +def main() -> None: + ap = argparse.ArgumentParser(description="Stage 4 — 인덱스 적재") + ap.add_argument("--program", default=None) + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--force", action="store_true", + help="source_hash 가 같아도 재적재 (파서·색인 로직이 바뀐 경우)") + args = ap.parse_args() + + con = connect() + n_pkg = load_packages(con) + n_tcode = load_tcodes(con) + + parsed = sorted(settings.data_parsed.glob("*.parse.json")) if settings.data_parsed.exists() else [] + if args.program: + parsed = [p for p in parsed if p.stem.replace(".parse", "") == args.program.upper()] + if args.limit: + parsed = parsed[: args.limit] + + stats = {"package_rows": n_pkg, "tcodes": n_tcode, "loaded": 0, "skipped": 0, "errors": 0} + con.commit() + for p in parsed: + try: + r = load_parsed(con, p, force=args.force) + con.commit() # 프로그램 단위 커밋 — 실패 시 해당 프로그램만 롤백 + stats["loaded" if r == "loaded" else "skipped"] += 1 + except Exception as e: # noqa: BLE001 + con.rollback() + stats["errors"] += 1 + print(f"[FAIL] {p.name}: {type(e).__name__}: {e}") + refresh_program_fts(con) + con.commit() + con.close() + print(json.dumps(stats, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/index/schema_postgres.sql b/index/schema_postgres.sql new file mode 100644 index 0000000..217b5db --- /dev/null +++ b/index/schema_postgres.sql @@ -0,0 +1,56 @@ +-- 계획서 §6.1 원안 — PostgreSQL 16 + pgvector 전환 시 사용 (ASSUMPTIONS.md §1) +-- 임베딩 차원(1024)은 모델 확정 후 조정할 것. +CREATE EXTENSION IF NOT EXISTS vector; + +CREATE TABLE IF NOT EXISTS package( + devclass TEXT PRIMARY KEY, text_ko TEXT, summary_json JSONB, embedding vector(1024) +); +CREATE TABLE IF NOT EXISTS program( + name TEXT PRIMARY KEY, devclass TEXT, title_ko TEXT, + created_on DATE, changed_on DATE, source_hash TEXT, + summary_json JSONB, summary_status TEXT DEFAULT 'none', has_source BOOLEAN DEFAULT FALSE, + embedding vector(1024), fts tsvector +); +CREATE TABLE IF NOT EXISTS include( + program TEXT, include TEXT, code_hash TEXT, line_count INT, code TEXT, + PRIMARY KEY(program, include) +); +CREATE TABLE IF NOT EXISTS unit( + unit_id TEXT PRIMARY KEY, program TEXT, include TEXT, unit_type TEXT, name TEXT, + line_start INT, line_end INT, code_hash TEXT, signature TEXT, header_comment TEXT, + loc INT, refs_json JSONB, sub_chunks_json JSONB, + summary_json JSONB, summary_status TEXT DEFAULT 'none', prompt_version INT DEFAULT 0, + embedding vector(1024), fts tsvector +); +CREATE TABLE IF NOT EXISTS symbol( + program TEXT, name TEXT, scope TEXT, unit_id TEXT, decl_include TEXT, + decl_line INT, type_text TEXT, ddic_ref TEXT, kind TEXT +); +CREATE TABLE IF NOT EXISTS symbol_write( + id BIGSERIAL PRIMARY KEY, + program TEXT, symbol TEXT, unit_id TEXT, include TEXT, line INT, kind TEXT, + source_symbols TEXT[], source_tables TEXT[], stmt_text TEXT, callee TEXT +); +CREATE TABLE IF NOT EXISTS symbol_read( + program TEXT, symbol TEXT, unit_id TEXT, include TEXT, line INT +); +CREATE TABLE IF NOT EXISTS table_ref( + program TEXT, unit_id TEXT, table_name TEXT, mode TEXT, line INT +); +CREATE TABLE IF NOT EXISTS call_edge( + program TEXT, from_unit TEXT, to_unit TEXT, external_name TEXT, call_type TEXT, line INT +); +CREATE TABLE IF NOT EXISTS topo(program TEXT, unit_id TEXT, ord INT, PRIMARY KEY(program, unit_id)); +CREATE TABLE IF NOT EXISTS ddic_table(name TEXT PRIMARY KEY, text_ko TEXT); +CREATE TABLE IF NOT EXISTS ddic_field(tabname TEXT, field TEXT, text_ko TEXT, data_element TEXT); +CREATE TABLE IF NOT EXISTS tcode(tcode TEXT PRIMARY KEY, program TEXT, text_ko TEXT); +CREATE TABLE IF NOT EXISTS eval_question(id TEXT PRIMARY KEY, question TEXT, expected_programs TEXT[], type TEXT); + +CREATE INDEX IF NOT EXISTS idx_unit_fts ON unit USING GIN(fts); +CREATE INDEX IF NOT EXISTS idx_program_fts ON program USING GIN(fts); +CREATE INDEX IF NOT EXISTS idx_unit_emb ON unit USING hnsw(embedding vector_cosine_ops); +CREATE INDEX IF NOT EXISTS idx_program_emb ON program USING hnsw(embedding vector_cosine_ops); +CREATE INDEX IF NOT EXISTS idx_symbol_write ON symbol_write(program, symbol); +CREATE INDEX IF NOT EXISTS idx_table_ref ON table_ref(table_name); +CREATE INDEX IF NOT EXISTS idx_edge_to ON call_edge(to_unit); +CREATE INDEX IF NOT EXISTS idx_edge_ext ON call_edge(external_name); diff --git a/ingest/__init__.py b/ingest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ingest/from_dir.py b/ingest/from_dir.py new file mode 100644 index 0000000..3494a03 --- /dev/null +++ b/ingest/from_dir.py @@ -0,0 +1,242 @@ +"""Stage 1 대안 입력 — 프로그램별 디렉토리에 인클루드가 .txt 로 있는 덤프를 정규화한다. + +`ingest/normalize.py` 는 수집 API 의 JSON(.txt) 을 받는다. 이 모듈은 다른 형태를 받는다: + + //.txt 인클루드별 ABAP 원문 (CP949) + //screens/*.txt 화면·GUI 타이틀 텍스트 (참고용, 파싱 대상 아님) + //dictionary_objects/ DDIC 오브젝트 HTML (참고용) + + python -m ingest.from_dir [--out DIR] [--limit N] [--dry-run] + +핵심 차이 두 가지: + +1. **인코딩** — 파일이 CP949(EUC-KR) 다. UTF-8 로 읽으면 깨진다. +2. **메타가 코드 주석에 있다** — 수집 JSON 의 DESCRIPTION/T_CODE 에 해당하는 값이 주 프로그램 + 헤더 주석 박스에 들어 있다: + + * Report : ZFIR0010 + * Module/Sub-Module : FI / GL + * T_CODE : ZFIR0010 + * Description : 거래처마스터 I/F 이력조회 + + 이걸 긁어 수집 JSON 과 같은 모양의 payload 로 만들고 `normalize.write_program` 을 그대로 + 재사용한다 — 정규화 경로를 두 개로 갈라두지 않기 위해서다. + +텍스트 심볼(TEXT-nnn → 한국어)은 이 덤프에 없다. 텍스트 풀이 별도 오브젝트라 소스에 포함되지 +않는다 → `text_symbols` 는 빈 배열이고, 그만큼 조각의 자연어 앵커가 줄어든다. +""" +from __future__ import annotations + +import argparse +import json +import re +import sys +from pathlib import Path + +from .normalize import clean_text_field, write_program + +ENCODINGS = ("cp949", "utf-8-sig", "utf-8", "latin-1") + +SKIP_DIRS = {"screens", "dictionary_objects"} + +# 헤더 주석 박스의 "* 키 : 값 *" 한 줄. 세 가지 서식이 섞여 있다: +# * Description : 거래처마스터 I/F 이력조회 * +# * P/G desc : 매입 채무 Interface 내역 +# *& 프로그램 명 : [FI] 전자세금계산서 매입전표 생성 +_HEADER_FIELD = re.compile( + r"^\*&?\s*([A-Za-z가-힣_/][A-Za-z0-9가-힣 _/\-]*?)\s*:\s*(.*?)\s*\*?\s*$" +) +_REPORT_STMT = re.compile(r"^\s*(?:REPORT|PROGRAM)\s+([A-Za-z0-9_/]+)", re.I | re.M) + +# 헤더에서 의미 있게 쓰는 키만 남긴다 — 주석 처리된 ABAP 선언문(`* TABLES: BKPF,`)이 +# 키:값 모양이라 그대로 두면 잡동사니가 섞인다. +_KNOWN_KEYS = { + "DESCRIPTION", "P/G_DESC", "PROGRAM_DESC", "TITLE", "프로그램_명", "프로그램명", "개요", + "T_CODE", "TCODE", "MODULE/SUB-MODULE", "MODULE", "모듈", "TYPE", "REPORT", + "PROGRAM_ID", "프로그램_ID", "시스템", "AUTHOR", "생성자", "DATE", "생성일", "PROJECT", +} + +# 설명으로 쓸 키의 우선순위 +_DESC_KEYS = ("DESCRIPTION", "P/G_DESC", "PROGRAM_DESC", "프로그램_명", "프로그램명", "개요", "TITLE") +_TCODE_KEYS = ("T_CODE", "TCODE") +_MODULE_KEYS = ("MODULE/SUB-MODULE", "MODULE", "모듈") + + +# 덤프 도구가 모든 인클루드 끝에 붙이는 꼬리말. ABAP 이 아니라 추출기 서명이다: +# ---------------------------------------------------------------------- +# Extracted by Mass Download version 1.4.4 - E.G.Mellodew. 1998-2013. Sap Release 731 +# 그냥 두면 인클루드마다 미인식 문장 7건이 생기고(176개 × 7 ≈ 1,200), 마지막 unit 의 줄 범위에 +# 섞여 들어가 LLM 프롬프트에도 그대로 보인다. +_TRAILER = re.compile( + r"\n-{20,}\s*\n\s*Extracted by Mass Download.*?$", re.S | re.I +) + + +def strip_trailer(text: str) -> str: + """덤프 도구 꼬리말 제거. 없으면 그대로 돌려준다.""" + stripped = _TRAILER.sub("\n", text) + if stripped != text: + return stripped + # 구분선이 없는 변형도 처리 — 마지막 'Extracted by ...' 줄만 떼낸다 + lines = text.split("\n") + while lines and (not lines[-1].strip() or lines[-1].lstrip().lower().startswith("extracted by ")): + if lines[-1].lstrip().lower().startswith("extracted by "): + lines.pop() + while lines and set(lines[-1].strip()) <= {"-"} and lines[-1].strip(): + lines.pop() + return "\n".join(lines) + "\n" + lines.pop() + return text + + +def read_text(path: Path) -> str: + """CP949 우선으로 디코드. 줄바꿈 통일 + 덤프 도구 꼬리말 제거.""" + raw = path.read_bytes() + for enc in ENCODINGS: + try: + text = raw.decode(enc) + break + except UnicodeDecodeError: + continue + else: # pragma: no cover — latin-1 은 실패하지 않는다 + text = raw.decode("cp949", errors="replace") + return strip_trailer(text.replace("\r\n", "\n").replace("\r", "\n")) + + +def header_fields(text: str, max_lines: int = 60) -> dict[str, str]: + """주 프로그램 앞부분 주석 박스에서 키:값 을 긁는다 (알려진 키만).""" + out: dict[str, str] = {} + for line in text.split("\n")[:max_lines]: + if not line.startswith("*"): + continue + m = _HEADER_FIELD.match(line) + if not m: + continue + key = m.group(1).strip().upper().replace(" ", "_") + if key not in _KNOWN_KEYS: + continue + val = clean_text_field(m.group(2).rstrip("*").strip()) + # 구분선(*----*)이나 빈 값, N/A 는 버린다 + if val and not set(val) <= {"-", "*", "="} and val.upper() != "N/A" and key not in out: + out[key] = val + return out + + +def _pick(fields: dict[str, str], keys: tuple[str, ...]) -> str: + for k in keys: + if fields.get(k): + return fields[k] + return "" + + +def include_files(prog_dir: Path) -> list[Path]: + """인클루드 후보 .txt — 주 프로그램 파일을 맨 앞에 둔다 (REPORT 문이 먼저 보이도록).""" + main = prog_dir / f"{prog_dir.name}.txt" + others = sorted( + p for p in prog_dir.glob("*.txt") + if p.is_file() and p != main and p.parent.name not in SKIP_DIRS + ) + return ([main] if main.exists() else []) + others + + +def program_payload(prog_dir: Path) -> dict: + """프로그램 디렉토리 → 수집 JSON 과 같은 모양의 payload.""" + files = include_files(prog_dir) + if not files: + raise ValueError(f"인클루드 .txt 가 없습니다: {prog_dir}") + + main_text = read_text(files[0]) + fields = header_fields(main_text) + + program = prog_dir.name.upper() + m = _REPORT_STMT.search(main_text) + if m: + program = m.group(1).upper() # REPORT 문이 진짜 프로그램명 (디렉토리명과 다를 수 있다) + + description = _pick(fields, _DESC_KEYS) + + return { + "MAIN_PROGRAM": program, + "DESCRIPTION": description, + "TEXT_SYMBOL": [], # 이 덤프에는 텍스트 풀이 없다 + "INCLUDE_PROGRAM": [ + {"INCLUDE": p.stem.upper(), "SOURCE_CODE": read_text(p)} for p in files + ], + # 아래는 이 포맷에서만 나오는 부가 정보 — meta 에 실어 로더가 tcode 로 적재한다 + "_HEADER": fields, + "_TCODE": _pick(fields, _TCODE_KEYS), + "_MODULE": _pick(fields, _MODULE_KEYS), + } + + +def run(root: Path, out_dir: Path, limit: int | None = None, dry_run: bool = False) -> dict: + prog_dirs = sorted(d for d in root.iterdir() if d.is_dir() and d.name not in SKIP_DIRS) + if limit: + prog_dirs = prog_dirs[:limit] + + stats = {"programs": 0, "includes": 0, "total_lines": 0, "tcodes": 0, "errors": 0} + errors: list[str] = [] + extras: list[dict] = [] + + for d in prog_dirs: + try: + payload = program_payload(d) + except Exception as e: # noqa: BLE001 — 실패 기록 후 계속 + stats["errors"] += 1 + errors.append(f"{d}\t{type(e).__name__}: {e}") + continue + + if dry_run: + stats["programs"] += 1 + stats["includes"] += len(payload["INCLUDE_PROGRAM"]) + continue + + meta = write_program(payload, out_dir) + stats["programs"] += 1 + stats["includes"] += len(meta["includes"]) + stats["total_lines"] += meta["total_lines"] + + # 헤더에서 뽑은 부가 정보를 meta.json 에 덧붙인다 (write_program 이 쓴 뒤에 갱신) + meta_path = out_dir / meta["program"] / f"{meta['program']}.meta.json" + meta["tcode"] = payload["_TCODE"] + meta["sap_module"] = payload["_MODULE"] + meta["header"] = payload["_HEADER"] + meta["source_dir"] = str(d) + meta_path.write_text(json.dumps(meta, ensure_ascii=False, indent=2), encoding="utf-8") + if payload["_TCODE"]: + stats["tcodes"] += 1 + extras.append({"tcode": payload["_TCODE"], "program": meta["program"], + "text_ko": meta["description"]}) + + if not dry_run: + out_dir.mkdir(parents=True, exist_ok=True) + if extras: + # 로더가 읽어 tcode 테이블에 넣는다 (ASSUMPTIONS.md §5 의 TSTC 미확보를 일부 대체) + (out_dir / "tcodes.jsonl").write_text( + "\n".join(json.dumps(e, ensure_ascii=False) for e in extras) + "\n", + encoding="utf-8") + if errors: + (out_dir / "_errors.log").write_text("\n".join(errors) + "\n", encoding="utf-8") + return stats + + +def main() -> None: + ap = argparse.ArgumentParser(description="Stage 1 대안 — 프로그램 디렉토리 덤프 정규화") + ap.add_argument("root", help="프로그램 디렉토리들이 들어 있는 루트") + ap.add_argument("--out", default=None, help="출력 디렉토리 (기본 data/normalized)") + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + + from config.settings import settings + + root = Path(args.root) + if not root.is_dir(): + print(f"입력 디렉토리 없음: {root}", file=sys.stderr) + sys.exit(1) + out_dir = Path(args.out) if args.out else settings.data_normalized + print(json.dumps(run(root, out_dir, args.limit, args.dry_run), ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/ingest/normalize.py b/ingest/normalize.py new file mode 100644 index 0000000..62c80f5 --- /dev/null +++ b/ingest/normalize.py @@ -0,0 +1,171 @@ +"""Stage 1 — 정규화. + +수집 API 결과 JSON(.txt)의 줄바꿈 아티팩트를 제거하고 프로그램/인클루드 단위 파일로 저장한다. + +입력 파일 두 종류 (계획서 §1): + - 패키지-프로그램 목록: 최상위가 배열이고 DEVCLASS 키 → packages.jsonl 로 병합 + - 프로그램 소스: 최상위가 객체이고 MAIN_PROGRAM 키 → /.abap + meta.json + +핵심: 파일이 strict JSON이 아니다. 문자열 내부에 raw 줄바꿈(0x0A)+공백 패딩이 +word-wrap 아티팩트로 들어 있고, 실제 코드 줄바꿈은 이스케이프된 \\n 두 글자다. +따라서 JSON 파싱 전에 raw 텍스트 단계에서 정규화한다. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +import re +import sys +from pathlib import Path + +# 검증된 정규화 규칙: raw 줄바꿈 + 양쪽 패딩 → 공백 1개 (계획서 §1.2) +_WRAP_ARTIFACT = re.compile(r"[ \t]*\n[ \t]*") + + +def normalize_raw_text(raw: str) -> str: + """word-wrap 아티팩트(raw 0x0A + 패딩)를 공백 1개로 치환해 strict JSON으로 만든다.""" + return _WRAP_ARTIFACT.sub(" ", raw.replace("\r\n", "\n").replace("\r", "\n")) + + +def parse_collected_file(raw: str) -> dict | list: + """정규화 후 strict JSON 파싱.""" + return json.loads(normalize_raw_text(raw)) + + +def clean_text_field(value: str | None) -> str: + """DESCRIPTION/TEXT 등 텍스트 필드의 잔여 아티팩트(연속 공백) 정리.""" + if not value: + return "" + return re.sub(r"\s+", " ", value).strip() + + +def sha256(text: str) -> str: + return hashlib.sha256(text.encode("utf-8")).hexdigest() + + +def classify(data: object) -> str: + """파일 종류 판별: package_list | program_source | unknown""" + if isinstance(data, list) and data and isinstance(data[0], dict) and "DEVCLASS" in data[0]: + return "package_list" + if isinstance(data, dict) and "MAIN_PROGRAM" in data: + return "program_source" + return "unknown" + + +def write_program(data: dict, out_dir: Path) -> dict: + """프로그램 소스 → data/normalized// 에 인클루드별 .abap + meta.json 저장.""" + program = clean_text_field(data["MAIN_PROGRAM"]).upper() + prog_dir = out_dir / program + prog_dir.mkdir(parents=True, exist_ok=True) + + includes_meta = [] + total_lines = 0 + for inc in data.get("INCLUDE_PROGRAM", []): + name = clean_text_field(inc.get("INCLUDE", "")).upper() + if not name: + continue + # 이 시점에서 SOURCE_CODE 안의 "\n"(이스케이프)은 json.loads 가 진짜 줄바꿈으로 복원한 상태 + code = inc.get("SOURCE_CODE", "") + (prog_dir / f"{name}.abap").write_text(code, encoding="utf-8", newline="\n") + lines = code.count("\n") + 1 if code else 0 + total_lines += lines + includes_meta.append({"include": name, "sha256": sha256(code), "line_count": lines}) + + meta = { + "program": program, + "description": clean_text_field(data.get("DESCRIPTION")), + "includes": includes_meta, + "text_symbols": [ + {"symbol": clean_text_field(t.get("SYMBOL")), "text": clean_text_field(t.get("TEXT"))} + for t in data.get("TEXT_SYMBOL", []) or [] + ], + "total_lines": total_lines, + } + (prog_dir / f"{program}.meta.json").write_text( + json.dumps(meta, ensure_ascii=False, indent=2), encoding="utf-8" + ) + return meta + + +def run(raw_dir: Path, out_dir: Path, limit: int | None = None, dry_run: bool = False) -> dict: + out_dir.mkdir(parents=True, exist_ok=True) + errors_log = out_dir / "_errors.log" + packages_path = out_dir / "packages.jsonl" + + stats = {"files": 0, "programs": 0, "includes": 0, "package_rows": 0, "total_lines": 0, "errors": 0} + package_rows: list[dict] = [] + error_lines: list[str] = [] + + files = sorted(p for p in raw_dir.rglob("*") if p.is_file() and p.suffix.lower() in {".txt", ".json"}) + if limit: + files = files[:limit] + + for path in files: + stats["files"] += 1 + try: + data = parse_collected_file(path.read_text(encoding="utf-8")) + except Exception as e: # noqa: BLE001 — 실패 기록 후 계속 (계획서 §3) + stats["errors"] += 1 + error_lines.append(f"{path}\t{type(e).__name__}: {e}") + continue + + kind = classify(data) + if kind == "package_list": + for row in data: + package_rows.append( + { + "devclass": clean_text_field(row.get("DEVCLASS")).upper(), + "obj_name": clean_text_field(row.get("OBJ_NAME")).upper(), + "text": clean_text_field(row.get("TEXT")), + "created_on": clean_text_field(row.get("CREATED_ON")), + "changed_on": clean_text_field(row.get("CHANGED_ON")), + } + ) + stats["package_rows"] += len(data) + elif kind == "program_source": + if dry_run: + stats["programs"] += 1 + stats["includes"] += len(data.get("INCLUDE_PROGRAM", [])) + else: + meta = write_program(data, out_dir) + stats["programs"] += 1 + stats["includes"] += len(meta["includes"]) + stats["total_lines"] += meta["total_lines"] + else: + stats["errors"] += 1 + error_lines.append(f"{path}\tUNKNOWN_FORMAT") + + if not dry_run: + if package_rows: + with packages_path.open("w", encoding="utf-8") as f: + for row in package_rows: + f.write(json.dumps(row, ensure_ascii=False) + "\n") + if error_lines: + errors_log.write_text("\n".join(error_lines) + "\n", encoding="utf-8") + + return stats + + +def main() -> None: + ap = argparse.ArgumentParser(description="Stage 1 — 수집 JSON 정규화") + ap.add_argument("raw_dir", nargs="?", default=None, help="수집 원본 디렉토리 (기본 data/raw)") + ap.add_argument("--out", default=None, help="출력 디렉토리 (기본 data/normalized)") + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + + from config.settings import settings + + raw_dir = Path(args.raw_dir) if args.raw_dir else settings.data_raw + out_dir = Path(args.out) if args.out else settings.data_normalized + if not raw_dir.exists(): + print(f"입력 디렉토리 없음: {raw_dir}", file=sys.stderr) + sys.exit(1) + + stats = run(raw_dir, out_dir, limit=args.limit, dry_run=args.dry_run) + print(json.dumps(stats, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/parser/__init__.py b/parser/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/parser/dataflow.py b/parser/dataflow.py new file mode 100644 index 0000000..ac93fdd --- /dev/null +++ b/parser/dataflow.py @@ -0,0 +1,327 @@ +"""심볼 선언 + 쓰기/읽기 지점 추출. (계획서 §4.4) + +"gt_head 가 어디서 채워지는가" 질문의 근간. 정확한 의미 분석이 아니라 +문장 패턴별 쓰기 대상 변수를 결정론적으로 뽑는다. +""" +from __future__ import annotations + +import re +from dataclasses import dataclass, field + +from .declarations import type_name_after +from .statements import Statement, assignment_eq_index + +_NAME = re.compile(r"^[A-Za-z_/][A-Za-z0-9_/]*") + + +@dataclass +class SymbolDecl: + name: str + scope: str # global | unit + unit_id: str | None + decl_include: str + decl_line: int + type_text: str = "" + ddic_ref: str = "" + kind: str = "data" # data/types/constants/tables/field-symbol/parameter/select-option + + +@dataclass +class WritePoint: + symbol: str + unit_id: str + include: str + line: int + kind: str + source_symbols: list[str] = field(default_factory=list) + source_tables: list[str] = field(default_factory=list) + stmt_text: str = "" + callee: str = "" # kind=via_perform 일 때 + + +def base_symbol(token: str) -> str: + """gs_head-belnr → GS_HEAD, gt_tab[] → GT_TAB, -f → """ + t = token.upper() + if t.startswith("<"): + return t.split(">")[0] + ">" + t = t.split("(")[0].split("[")[0].split("-")[0].split("->")[0].split("=>")[0] + return t + + +def _decl_from_stmt(st: Statement, unit_id: str | None, scope: str) -> SymbolDecl | None: + up = st.upper + head = up[0] + kind_map = { + "DATA": "data", "TYPES": "types", "CONSTANTS": "constants", "STATICS": "data", + "TABLES": "tables", "FIELD-SYMBOLS": "field-symbol", "CLASS-DATA": "data", + "PARAMETERS": "parameter", "PARAMETER": "parameter", + "SELECT-OPTIONS": "select-option", "RANGES": "data", + "NODES": "tables", + } + if head not in kind_map or len(up) < 2: + return None + name = base_symbol(up[1]) + if not name or name in {"BEGIN", "END"}: # DATA BEGIN OF ... 구조 선언은 v1 스킵 + return None + type_text = "" + for kw in ("TYPE", "LIKE"): + if kw in up: + ki = up.index(kw) + type_text = " ".join(st.tokens[ki : ki + 5])[:120] + break + ddic_ref = "" + m = re.search(r"(?:TYPE|LIKE)\s+(?:TABLE\s+OF\s+|STANDARD\s+TABLE\s+OF\s+|SORTED\s+TABLE\s+OF\s+|HASHED\s+TABLE\s+OF\s+)?([A-Z0-9_/]+-?[A-Z0-9_/]*)", type_text.upper()) + if m: + ddic_ref = m.group(1) + return SymbolDecl( + name=name, scope=scope, unit_id=unit_id, decl_include=st.include, + decl_line=st.line_start, type_text=type_text, ddic_ref=ddic_ref, kind=kind_map[head], + ) + + +def extract_declarations(statements: list[Statement], stmt_indexes: list[int], + unit_id: str | None, scope: str, + unit_type: str = "", signature: str = "") -> list[SymbolDecl]: + decls: list[SymbolDecl] = [] + for idx in stmt_indexes: + d = _decl_from_stmt(statements[idx], unit_id, scope) + if d: + decls.append(d) + # FORM 파라미터 (USING/CHANGING/TABLES) + # + # 타입을 붙인 파라미터가 여러 개면(`USING p_date LIKE x p_days LIKE y …`) **타입 이름만 건너뛰고 + # 계속 읽어야** 한다. 예전 구현은 TYPE/LIKE 를 만나면 멈춰서 첫 파라미터만 잡았고, 나머지는 + # 선언 없는 이름으로 남았다 (정의부 조립에서 '선언을 못 찾음'으로 새어 나와 드러났다). + if unit_type == "FORM" and signature: + sig_up = signature.upper().split() + section = "" + i = 0 + while i < len(sig_up): + t = sig_up[i].strip(".") + if t in {"USING", "CHANGING", "TABLES"}: + section = t + elif t in {"TYPE", "LIKE", "STRUCTURE"}: + _type, i = type_name_after([x.strip(".") for x in sig_up], i) + continue # 타입식(이름이 없을 수도 있다)을 건너뛴다 + elif t in {"VALUE", "REFERENCE", "(", ")"}: + pass # VALUE(p_x) 표기 + elif section: + name = base_symbol(t) + if _NAME.match(name): + decls.append(SymbolDecl(name=name, scope="unit", unit_id=unit_id, + decl_include="", decl_line=0, kind="param")) + i += 1 + return decls + + +_ASSIGN_KINDS = [ + # (조건 함수, kind, 대상 위치 결정) + # 아래 extract_writes 에서 절차적으로 처리 +] + +_CLEAR_HEADS = {"CLEAR": "clear", "REFRESH": "clear", "FREE": "clear", "SORT": "sort"} + + +def extract_writes(statements: list[Statement], stmt_indexes: list[int], unit_id: str, + known_symbols: set[str]) -> tuple[list[WritePoint], list[dict]]: + """(writes, reads). reads 는 {symbol, unit_id, include, line} 수준.""" + writes: list[WritePoint] = [] + reads: list[dict] = [] + + def known(sym: str) -> bool: + return sym in known_symbols + + def add_write(sym_token: str, st: Statement, kind: str, sources: list[str] | None = None, + tables: list[str] | None = None, callee: str = "") -> None: + sym = base_symbol(sym_token) + if not sym or not re.match(r"^[-comp / ->attr — 필드심볼 이름(<...>) 뒤의 접근자만 떼낸다 + rest = tu.split(">", 1)[1] if ">" in tu else "" + field = rest.lstrip("->") + elif "-" in tu: + field = tu.split("-", 1)[1] + wp = WritePoint(symbol=sym, unit_id=unit_id, include=st.include, line=st.line_start, + kind=kind if not field else f"{kind}:field={field[:30]}", + source_symbols=sorted({s for s in (sources or []) if known(s)}), + source_tables=sorted(set(tables or [])), + stmt_text=st.raw_text[:200], callee=callee) + writes.append(wp) + + def add_read(sym: str, st: Statement) -> None: + if known(sym): + reads.append({"symbol": sym, "unit_id": unit_id, "include": st.include, "line": st.line_start}) + + for idx in stmt_indexes: + st = statements[idx] + up = st.upper + if not up: + continue + head = up[0] + rhs_syms = [base_symbol(t) for t in up[1:] if re.match(r"^[= 2: # APPEND x. (헤더라인) + add_write(up[1], st, "append", sources=rhs_syms) + continue + if head == "INSERT" and ("INTO" in up): + j = up.index("INTO") + k = j + 1 + if k < len(up) and up[k] == "TABLE": + k += 1 + if k < len(up) and base_symbol(up[k]) in known_symbols: + add_write(up[k], st, "insert", sources=rhs_syms) + continue + # 아니면 DB 쓰기 → refs 에서 처리 + if head == "MODIFY" and len(up) >= 2 and base_symbol(up[1]) in known_symbols: + add_write(up[1], st, "modify", sources=rhs_syms) + continue + if head == "DELETE" and len(up) >= 2: + t1 = up[1] + if t1 == "ADJACENT" and "FROM" in up: + j = up.index("FROM") + if j + 1 < len(up): + add_write(up[j + 1], st, "delete") + continue + if base_symbol(t1) in known_symbols: + add_write(t1, st, "delete") + continue + if head in _CLEAR_HEADS: + for t in up[1:]: + if re.match(r"^[ + if head == "READ" and len(up) >= 2 and up[1] == "TABLE": + src = base_symbol(up[2]) if len(up) >= 3 else "" + if src: + add_read(src, st) + for kw, kind in (("INTO", "read_into"), ("ASSIGNING", "assign_fs")): + if kw in up: + j = up.index(kw) + if j + 1 < len(up): + add_write(up[j + 1], st, kind, sources=[src] if src else []) + continue + + # LOOP AT x INTO y / ASSIGNING + if head == "LOOP" and "AT" in up: + j = up.index("AT") + src = base_symbol(up[j + 1]) if j + 1 < len(up) else "" + if src: + add_read(src, st) + for kw in ("INTO", "ASSIGNING"): + if kw in up: + k = up.index(kw) + if k + 1 < len(up): + add_write(up[k + 1], st, "iterate", sources=[src] if src else []) + continue + + # MOVE / MOVE-CORRESPONDING ... TO x + if head in {"MOVE", "MOVE-CORRESPONDING"} and "TO" in up: + j = up.index("TO") + if j + 1 < len(up): + add_write(up[j + 1], st, "assign", sources=rhs_syms[:j]) + continue + + # SPLIT/CONCATENATE ... INTO x1 x2... + if head in {"SPLIT", "CONCATENATE"} and "INTO" in up: + j = up.index("INTO") + for t in up[j + 1 :]: + if t in {"SEPARATED", "BY", "IN", "CHARACTER", "BYTE", "MODE", "TABLE"}: + continue + if re.match(r"^[= 3 and up[1] == "FUNCTION": + fname = up[2].strip("'") + section = "" + k = 3 + while k < len(up): + t = up[k] + if t in {"EXPORTING", "IMPORTING", "TABLES", "CHANGING", "EXCEPTIONS", "DESTINATION", "STARTING", "PERFORMING"}: + section = t + elif t == "=" and k + 1 < len(up) and section in {"IMPORTING", "TABLES", "CHANGING"}: + add_write(up[k + 1], st, "call_function", callee=fname) + elif t == "=" and k + 1 < len(up) and section == "EXPORTING": + add_read(base_symbol(up[k + 1]), st) + k += 1 + continue + + # PERFORM f USING a CHANGING x / TABLES x + if head == "PERFORM": + callee = up[1] if len(up) >= 2 else "" + section = "" + for t in up[2:]: + if t in {"USING", "CHANGING", "TABLES", "IN", "PROGRAM", "IF", "FOUND"}: + section = t + continue + if section in {"CHANGING", "TABLES"} and re.match(r"^[= 2 and up[1] == "PARAMETER" and "FIELD" in up: + j = up.index("FIELD") + if j + 1 < len(up): + add_write(up[j + 1], st, "get_parameter") + continue + + # 일반 대입: x = ... / x[] = ... / x-f = ... / -f = ... + eq = assignment_eq_index(up) + if eq is not None: + rhs = up[eq + 1 :] + kind = "assign" + joined = " ".join(rhs) + if "VALUE #(" in joined or (rhs and rhs[0].startswith("VALUE")): + kind = "assign_value" + elif rhs and rhs[0].startswith("CORRESPONDING"): + kind = "assign_corresponding" + add_write(up[0], st, kind, sources=[base_symbol(t) for t in rhs if re.match(r"^[ str: + """GS_HEAD-BELNR → GS_HEAD, GT_TAB[] → GT_TAB, -F → , ZCL_X=>TY → ZCL_X""" + t = token.upper() + if t.startswith("<"): + return t.split(">")[0] + ">" + t = t.split("(")[0].split("[")[0].split("->")[0].split("=>")[0].split("-")[0] + return t.rstrip(",.") + + +def _is_ident(t: str) -> bool: + return bool(_IDENT.match(t)) or (t.startswith("<") and t.endswith(">")) + + +def clean_ref(token: str) -> str: + """참조 토큰을 정규화 — `GT_DATA[]` → GT_DATA, `BKPF-BELNR` → BKPF-BELNR (컴포넌트 유지).""" + t = token.upper().split("(")[0].split("[")[0].rstrip(",.") + return t + + +# 타입식의 머리 — 이 뒤에는 보통 `OF`/`TO` 로 실제 타입 이름이 이어진다 (없을 수도 있다) +_TABLE_HEADS = {"STANDARD", "SORTED", "HASHED", "INDEX", "ANY", "TABLE", "LINE", "RANGE", "REF"} + + +def type_name_after(up: list[str], i: int) -> tuple[str | None, int]: + """`up[i]` 가 TYPE/LIKE 일 때 (참조하는 타입 이름, 다음에 읽을 위치). + + 타입식에 이름이 없을 수도 있다 — `TYPE ANY`, `TYPE ANY TABLE`, `TYPE C` 처럼. + 그때 `None` 과 함께 **수식어 바로 다음 위치**를 돌려줘야 그 뒤 토큰(다음 FORM 파라미터 등)을 + 타입 이름으로 잘못 삼키지 않는다. + """ + j = i + 1 + if j >= len(up): + return None, j + if up[j] not in _TABLE_HEADS: + return up[j], j + 1 + k = j + while k < len(up) and up[k] not in {"OF", "TO"}: + if up[k] not in _TABLE_HEADS: + return None, k # `TYPE ANY` 뒤에 다른 토큰이 온 경우 + k += 1 + if k + 1 < len(up): # … OF <타입> / REF TO <클래스> + return up[k + 1], k + 2 + return None, k + + +def type_refs(up: list[str]) -> list[str]: + """선언 토큰열이 참조하는 다른 이름들 — TYPE/LIKE/INCLUDE STRUCTURE/FOR 뒤의 식별자. + + `LIKE GT_DATA OCCURS 0` → [GT_DATA], `TYPE TABLE OF TY_ITEM` → [TY_ITEM], + `TYPE C` → [] (내장 타입). + + **컴포넌트까지 그대로 남긴다**: `LIKE BKPF-BELNR` → [BKPF-BELNR]. 이건 DDIC 사전의 필드 + 타입을 빌려 쓰는 것이지 `TABLES: BKPF` 작업영역이 있어야 한다는 뜻이 아니다 — 정의부를 조립할 + 때(index/decls.py) 이 둘을 구분해야 TOP 의 TABLES 선언이 딸려 오지 않는다. + 같은 이름을 여러 번 참조하면(구조체 필드들이 전부 같은 테이블을 볼 때) 첫 참조만 남긴다. + """ + out: list[str] = [] + seen: set[str] = set() + + def add(token: str) -> None: + ref = clean_ref(token) + base = base_name(ref) + if not _is_ident(base) or base in BUILTIN_TYPES or base in seen: + return + seen.add(base) + out.append(ref) + + i = 0 + while i < len(up): + t = up[i] + if t in {"TYPE", "LIKE"}: + name, nxt = type_name_after(up, i) + if name: + add(name) + i = nxt + continue + elif t == "INCLUDE" and i + 1 < len(up) and up[i + 1] in {"STRUCTURE", "TYPE"}: + if i + 2 < len(up): + add(up[i + 2]) + i += 2 + elif t == "FOR" and i + 1 < len(up): # SELECT-OPTIONS s_bukrs FOR bkpf-bukrs + add(up[i + 1]) + i += 1 + i += 1 + return out + + +def _terminate(line: str) -> str: + """체인에서 잘라낸 마지막 줄의 ',' 를 '.' 로 바꾼다 (주석은 보존).""" + code, comment, full = split_comment(line) + if full: + return line + stripped = code.rstrip() + if stripped.endswith(","): + stripped = stripped[:-1] + "." + elif not stripped.endswith("."): + stripped = stripped + "." + return stripped + (f' " {comment}' if comment else "") + + +def render_code(lines: list[str], st_start: int, st_end: int, + chain_head: str, chain_start: int, chain_end: int) -> str: + """선언 원문을 **그대로 붙여넣을 수 있는 한 문장**으로 잘라낸다. + + - 문장이 체인 전체와 같으면 원문 그대로 (이미 '.' 로 끝난다) + - 체인의 첫 항목이면 헤드가 첫 줄에 있으므로 그대로 잘라 '.' 로 닫는다 + - 중간·마지막 항목이면 헤드(`DATA:`)가 없으므로 앞에 다시 붙인다 + """ + body = [lines[no - 1] for no in range(st_start, st_end + 1) if 1 <= no <= len(lines)] + if not body: + return "" + if st_start == chain_start and st_end == chain_end: + return "\n".join(body).rstrip() + body[-1] = _terminate(body[-1]) + if st_start > chain_start and chain_head: + return f"{chain_head}:\n" + "\n".join(body).rstrip() + return "\n".join(body).rstrip() + + +def _block_name(up: list[str]) -> str: + """['DATA','BEGIN','OF','GT_UPLOAD','OCCURS','0'] → GT_UPLOAD""" + return base_name(up[3]) if len(up) >= 4 else "" + + +def extract_declaration_blocks( + statements: list[Statement], stmt_indexes: list[int], lines: list[str], + include: str, scope: str, unit_id: str | None = None, +) -> list[Declaration]: + """선언 문장들 → Declaration 목록. `BEGIN OF … END OF` 는 한 덩어리로 묶는다.""" + out: list[Declaration] = [] + depth = 0 + block: list[Statement] = [] + block_kind = "" + block_name = "" + + for idx in stmt_indexes: + st = statements[idx] + up = st.upper + if not up: + continue + kind = DECL_HEADS.get(up[0]) + if kind is None: + # 구조 블록 안에서는 선언 키워드가 없는 문장(INCLUDE STRUCTURE …)도 함께 모은다 + if depth and up[0] == "INCLUDE": + block.append(st) + continue + + is_begin = len(up) >= 3 and up[1] == "BEGIN" and up[2] == "OF" + is_end = len(up) >= 3 and up[1] == "END" and up[2] == "OF" + + if is_begin: + if depth == 0: + block, block_kind, block_name = [], kind, _block_name(up) + depth += 1 + block.append(st) + continue + if depth: + block.append(st) + if is_end: + depth -= 1 + if depth == 0 and block: + first, last = block[0], block[-1] + tokens: list[str] = [] + for b in block: + tokens += b.upper + out.append(Declaration( + name=block_name or _block_name(first.upper), kind=block_kind, scope=scope, + unit_id=unit_id, include=include, + line_start=first.line_start, line_end=last.line_end, + code=render_code(lines, first.line_start, last.line_end, + first.chain_head, first.chain_start, last.chain_end), + type_text="BEGIN OF …", + depends=[d for d in type_refs(tokens) if base_name(d) != block_name], + )) + block = [] + continue + + if len(up) < 2: + continue + if kind == "type-pool": # TYPE-POOLS: slis, vrm → 항목마다 한 건 + name = base_name(up[1]) + else: + name = base_name(up[1]) + if not name or name in {"BEGIN", "END"} or not _is_ident(name): + continue + type_text = "" + for kw in ("TYPE", "LIKE"): + if kw in up: + ki = up.index(kw) + type_text = " ".join(st.tokens[ki : ki + 5])[:120] + break + out.append(Declaration( + name=name, kind=kind, scope=scope, unit_id=unit_id, include=include, + line_start=st.line_start, line_end=st.line_end, + code=render_code(lines, st.line_start, st.line_end, + st.chain_head, st.chain_start, st.chain_end), + type_text=type_text, + depends=[d for d in type_refs(up) if base_name(d) != name], + )) + return out + + +def unit_declaration(unit, lines: list[str], kind: str) -> Declaration: + """CLASS … DEFINITION / DEFINE … END-OF-DEFINITION 처럼 **unit 통째가 정의부**인 것. + + 로컬 클래스를 쓰는 조각도, 매크로를 호출하는 조각도 그 정의가 없으면 붙여넣어 봐야 안 돈다. + """ + body = "\n".join(lines[unit.line_start - 1 : unit.line_end]).rstrip() + return Declaration( + name=unit.name.upper(), kind=kind, scope="global", unit_id=None, include=unit.include, + line_start=unit.line_start, line_end=unit.line_end, code=body, + type_text=kind, depends=[], + ) diff --git a/parser/refs.py b/parser/refs.py new file mode 100644 index 0000000..9b4c5bf --- /dev/null +++ b/parser/refs.py @@ -0,0 +1,169 @@ +"""참조 추출 — unit 별 DB 접근/호출/권한/메시지/선택화면/UI 신호/텍스트심볼. (계획서 §4.3)""" +from __future__ import annotations + +import re +from dataclasses import dataclass, field + +from .statements import Statement + +_SQL_WRITE = {"INSERT", "UPDATE", "MODIFY", "DELETE"} +_UI_FM = re.compile(r"^(REUSE_ALV_|SSF_|FP_JOB_|GUI_DOWNLOAD|GUI_UPLOAD)") + +# "외부 호출"로 볼 call kind. 요약·위키·엔티티 페이지가 같은 기준을 써야 한다. +# 제외하는 것들과 이유: +# perform / perform_unresolved — 프로그램 내부 호출 +# call_method / method_ref — `CL_GUI_ALV_GRID=>MC_FC_AUF` 처럼 상수 읽기가 대량 섞인다 +# call_screen — 대상이 화면번호('100')라 호출 대상 이름이 아니다 +EXTERNAL_CALL_KINDS = ( + "perform_external", "call_function", "call_function_rfc", "call_function_task", + "submit", "call_transaction", "call_dialog", +) + +# functions/ 엔티티 페이지를 만드는 호출 종류 (FM · BAPI · RFC) +FUNCTION_CALL_KINDS = ("call_function", "call_function_rfc", "call_function_task") + + +@dataclass +class UnitRefs: + tables_read: list[str] = field(default_factory=list) + tables_write: list[str] = field(default_factory=list) + calls: list[dict] = field(default_factory=list) # {kind, target, extra?, line} + authority_checks: list[str] = field(default_factory=list) + messages: list[str] = field(default_factory=list) + select_params: list[dict] = field(default_factory=list) # {kind, name, for} + output_signals: list[str] = field(default_factory=list) + text_symbols: list[str] = field(default_factory=list) + macro_calls: list[str] = field(default_factory=list) + + +def _strip_quote(t: str) -> str: + return t[1:-1] if len(t) >= 2 and t[0] == "'" and t[-1] == "'" else t + + +def _is_name(t: str) -> bool: + return bool(re.match(r"^[A-Z_/][A-Z0-9_/]*$", t)) + + +def extract_refs(statements: list[Statement], stmt_indexes: list[int], + macro_names: set[str], known_symbols: set[str]) -> UnitRefs: + r = UnitRefs() + + def add(lst: list, v) -> None: + if v and v not in lst: + lst.append(v) + + for idx in stmt_indexes: + st = statements[idx] + up = st.upper + if not up: + continue + head = up[0] + line = st.line_start + + # --- DB 읽기: SELECT/OPEN CURSOR ... FROM t, JOIN t --- + if head in {"SELECT", "OPEN"} or (head == "WITH"): + for j, t in enumerate(up): + if t in {"FROM", "JOIN"} and j + 1 < len(up): + cand = up[j + 1] + if cand in {"(", "@"}: + continue + cand = cand.lstrip("@") + if _is_name(cand) and cand not in known_symbols: + add(r.tables_read, cand) + + # --- DB 쓰기: INSERT/UPDATE/MODIFY/DELETE --- + if head in _SQL_WRITE and len(up) >= 2: + t1 = up[1] + if t1 == "INTO" and len(up) >= 3: # INSERT INTO t VALUES ... + t1 = up[2] + if t1 == "FROM" and head == "DELETE" and len(up) >= 3: # DELETE FROM t + t1 = up[2] + if _is_name(t1) and t1 not in known_symbols and t1 not in {"TABLE", "LINES", "ADJACENT", "REPORT", "DATASET", "SCREEN"}: + add(r.tables_write, t1) + + # --- 호출 --- + if head == "PERFORM" and len(up) >= 2: + target = up[1] + m = re.match(r"^([A-Z0-9_]+)\(([A-Z0-9_]+)\)$", target) # 구문 f(prog) + if m: + r.calls.append({"kind": "perform_external", "target": m.group(1), "program": m.group(2), "line": line}) + elif "IN" in up and "PROGRAM" in up: + pi = up.index("PROGRAM") + prog = up[pi + 1] if pi + 1 < len(up) else "" + r.calls.append({"kind": "perform_external", "target": target, "program": _strip_quote(prog), "line": line}) + else: + r.calls.append({"kind": "perform", "target": target, "line": line}) + + if head == "CALL" and len(up) >= 2: + what = up[1] + if what == "FUNCTION" and len(up) >= 3: + fname = _strip_quote(up[2]) + kind = "call_function" + if "DESTINATION" in up: + kind = "call_function_rfc" + add(r.output_signals, "RFC") + if "TASK" in up: + kind = "call_function_task" + r.calls.append({"kind": kind, "target": fname, "line": line}) + if _UI_FM.match(fname): + add(r.output_signals, "ALV" if fname.startswith("REUSE_ALV_") else fname.split("_")[0]) + if fname.startswith(("GUI_DOWNLOAD", "GUI_UPLOAD")): + add(r.output_signals, "FILE") + elif what == "METHOD" and len(up) >= 3: + r.calls.append({"kind": "call_method", "target": up[2], "line": line}) + elif what == "TRANSACTION" and len(up) >= 3: + r.calls.append({"kind": "call_transaction", "target": _strip_quote(up[2]), "line": line}) + if "USING" in up: + add(r.output_signals, "BDC") + elif what == "SCREEN" and len(up) >= 3: + r.calls.append({"kind": "call_screen", "target": up[2], "line": line}) + add(r.output_signals, "SCREEN") + elif what == "DIALOG" and len(up) >= 3: + r.calls.append({"kind": "call_dialog", "target": _strip_quote(up[2]), "line": line}) + + if head == "SUBMIT" and len(up) >= 2: + r.calls.append({"kind": "submit", "target": up[1], "line": line}) + + # 함수형 메서드 호출: zcl_x=>meth( ... ) / lo_obj->meth( ... ) + for t in st.tokens: + tu = t.upper() + if "=>" in tu or "->" in tu: + base = tu.split("(")[0] + if re.match(r"^[A-Z0-9_/<>]+(=>|->)[A-Z0-9_~]+$", base): + if not any(c["target"] == base for c in r.calls): + r.calls.append({"kind": "method_ref", "target": base, "line": line}) + if base.startswith("CL_GUI_ALV_GRID") or "ALV" in base.split("=>")[0].split("->")[0]: + add(r.output_signals, "ALV_GRID") + + # --- 권한/메시지 --- + if head == "AUTHORITY-CHECK" and "OBJECT" in up: + oi = up.index("OBJECT") + if oi + 1 < len(up): + add(r.authority_checks, _strip_quote(up[oi + 1])) + if head == "MESSAGE" and len(up) >= 2: + add(r.messages, _strip_quote(up[1])[:40]) + + # --- 선택화면 --- + if head == "PARAMETERS" and len(up) >= 2: + r.select_params.append({"kind": "parameter", "name": up[1].split("(")[0], "line": line}) + if head == "SELECT-OPTIONS" and len(up) >= 2: + target = "" + if "FOR" in up: + fi = up.index("FOR") + target = up[fi + 1] if fi + 1 < len(up) else "" + r.select_params.append({"kind": "select_option", "name": up[1], "for": target, "line": line}) + + # --- UI 신호 --- + if head == "WRITE": + add(r.output_signals, "LIST_WRITE") + if head == "CALL" and len(up) >= 3 and up[1] == "SCREEN": + add(r.output_signals, "SCREEN") + + # --- 텍스트 심볼 / 매크로 --- + for t in up: + if t.startswith("TEXT-"): + add(r.text_symbols, t.replace("TEXT-", "")) + if head in macro_names: + add(r.macro_calls, head) + + return r diff --git a/parser/run.py b/parser/run.py new file mode 100644 index 0000000..c24ed81 --- /dev/null +++ b/parser/run.py @@ -0,0 +1,276 @@ +"""Stage 2 실행 — data/normalized// → data/parsed/.parse.json + +python -m parser.run [--program ZFIR10070] [--limit N] [--dry-run] +""" +from __future__ import annotations + +import argparse +import json +from collections import Counter +from dataclasses import asdict +from pathlib import Path + +from .dataflow import SymbolDecl, extract_declarations, extract_writes +from .declarations import Declaration, extract_declaration_blocks, unit_declaration +from .refs import extract_refs +from .statements import Statement, assignment_eq_index, split_statements +from .units import Unit, extract_units, finalize_units + +# 파서가 의미를 아는 문장 머리 키워드 (미인식 리포트용 — 계획서 §4.6) +RECOGNIZED_HEADS = { + "REPORT", "PROGRAM", "INCLUDE", "TYPE-POOLS", "TYPES", "DATA", "CONSTANTS", "STATICS", + "TABLES", "NODES", "FIELD-SYMBOLS", "RANGES", "CLASS-DATA", "PARAMETERS", "PARAMETER", + "CONTROLS", "SELECT-OPTIONS", + "SELECTION-SCREEN", "INITIALIZATION", "START-OF-SELECTION", "END-OF-SELECTION", + "TOP-OF-PAGE", "END-OF-PAGE", "LOAD-OF-PROGRAM", "AT", "GET", "FORM", "ENDFORM", + "FUNCTION", "ENDFUNCTION", "MODULE", "ENDMODULE", "METHOD", "ENDMETHOD", "CLASS", + "ENDCLASS", "INTERFACE", "ENDINTERFACE", "DEFINE", "END-OF-DEFINITION", + "SELECT", "ENDSELECT", "FETCH", "OPEN", "CLOSE", "INSERT", "UPDATE", "MODIFY", "DELETE", + "COMMIT", "ROLLBACK", "APPEND", "COLLECT", "READ", "LOOP", "ENDLOOP", "SORT", "CLEAR", + "REFRESH", "FREE", "MOVE", "MOVE-CORRESPONDING", "SPLIT", "CONCATENATE", "CONDENSE", + "TRANSLATE", "REPLACE", "SHIFT", "OVERLAY", "SEARCH", "FIND", "ASSIGN", "UNASSIGN", + "IF", "ELSEIF", "ELSE", "ENDIF", "CASE", "WHEN", "ENDCASE", "DO", "ENDDO", "WHILE", + "ENDWHILE", "CHECK", "EXIT", "CONTINUE", "RETURN", "LEAVE", "STOP", "REJECT", + "PERFORM", "CALL", "SUBMIT", "EXPORT", "IMPORT", "SET", "AUTHORITY-CHECK", "MESSAGE", + "WRITE", "ULINE", "SKIP", "NEW-LINE", "NEW-PAGE", "FORMAT", "HIDE", "WINDOW", + "DESCRIBE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "COMPUTE", "CONVERT", "CREATE", + "RAISE", "TRY", "CATCH", "CLEANUP", "ENDTRY", "WAIT", "SUPPRESS", "SCROLL", + "PRINT-CONTROL", "BREAK-POINT", "ASSERT", "FIELD", "CHAIN", "ENDCHAIN", "ENDAT", + "SUMMARY", "DETAIL", "BACK", "RESERVE", "POSITION", "EDITOR-CALL", "RETURN", + # 클래스/인터페이스 정의부 + "METHODS", "CLASS-METHODS", "CLASS-EVENTS", "EVENTS", "INTERFACES", "ALIASES", + "PUBLIC", "PROTECTED", "PRIVATE", "SECTION", "IMPLEMENTATION", "DEFINITION", + "TYPE-POOL", "FUNCTION-POOL", +} + +EVENT_ORDER = ["LOAD-OF-PROGRAM", "INITIALIZATION", "AT SELECTION-SCREEN", "START-OF-SELECTION", + "GET", "END-OF-SELECTION", "TOP-OF-PAGE", "END-OF-PAGE", "AT LINE-SELECTION", + "AT USER-COMMAND"] + + +def _event_rank(u: Unit) -> int: + for i, ev in enumerate(EVENT_ORDER): + if u.name.startswith(ev): + return i + return len(EVENT_ORDER) + + +def parse_program(prog_dir: Path) -> dict: + program = prog_dir.name + meta = json.loads((prog_dir / f"{program}.meta.json").read_text(encoding="utf-8")) + + code_by_include: dict[str, str] = {} + statements_by_include: dict[str, list[Statement]] = {} + for inc in meta["includes"]: + name = inc["include"] + code = (prog_dir / f"{name}.abap").read_text(encoding="utf-8") + code_by_include[name] = code + statements_by_include[name], _ = split_statements(code, name) + + # 1) 매크로 이름 선수집 (매크로 호출 인식용) + macro_names: set[str] = set() + for sts in statements_by_include.values(): + for st in sts: + if st.upper and st.upper[0] == "DEFINE" and len(st.upper) >= 2: + macro_names.add(st.upper[1]) + + # 2) unit 추출 + units: list[Unit] = [] + for name, sts in statements_by_include.items(): + units.extend(extract_units(program, name, sts, code_by_include[name].count("\n") + 1)) + finalize_units(units, statements_by_include, code_by_include) + + # unit_id 유일화 — 같은 이벤트(AT SELECTION-SCREEN ON VALUE-REQUEST 등)가 반복되면 라인 번호를 붙인다 + seen_ids: set[str] = set() + for u in units: + if u.unit_id in seen_ids: + u.unit_id = f"{u.unit_id}@L{u.line_start}" + seen_ids.add(u.unit_id) + + # 3) 심볼 선언 — 전역(DECLARATION unit) + unit 로컬 + symbols: list[SymbolDecl] = [] + for u in units: + sts = statements_by_include[u.include] + if u.unit_type == "DECLARATION": + symbols.extend(extract_declarations(sts, u.stmt_indexes, None, "global")) + elif u.unit_type in {"FORM", "METHOD", "FUNCTION", "MODULE", "EVENT"}: + symbols.extend(extract_declarations(sts, u.stmt_indexes, u.unit_id, "unit", + unit_type=u.unit_type, signature=u.signature)) + # `TABLES: zfit0030.` / `NODES: ...` 는 **DDIC 테이블 작업영역** 선언이다. 이 이름을 + # known_symbols 에 넣으면 extract_refs 의 "심볼이면 DB 테이블이 아니다" 가드가 + # `SELECT ... FROM zfit0030` 을 걸러버린다 — 정작 업무의 핵심인 커스텀 Z 테이블이 통째로 + # 누락된다(실측: ZFIR0010 의 tables_read 에 ZFIT0030 이 없었다). + # 가드의 목적은 내부테이블(DATA gt_x TYPE TABLE OF ...)을 DB 테이블로 오인하지 않는 것이므로 + # DDIC 작업영역은 제외한다. + DDIC_WORK_AREA = {"tables", "nodes"} + global_syms = {s.name for s in symbols if s.scope == "global" and s.kind not in DDIC_WORK_AREA} + local_syms_by_unit: dict[str, set[str]] = {} + for s in symbols: + if s.scope == "unit" and s.unit_id: + local_syms_by_unit.setdefault(s.unit_id, set()).add(s.name) + + # 3-b) 정의부(선언 블록) — 붙여넣기용 원문. symbol 과 목적이 다르다(parser/declarations.py) + lines_by_include = {name: code.split("\n") for name, code in code_by_include.items()} + declarations: list[Declaration] = [] + for u in units: + sts = statements_by_include[u.include] + lns = lines_by_include[u.include] + if u.unit_type == "DECLARATION": + declarations.extend(extract_declaration_blocks(sts, u.stmt_indexes, lns, u.include, "global")) + elif u.unit_type == "CLASS_DEF": + declarations.append(unit_declaration(u, lns, "class")) + elif u.unit_type == "MACRO": + declarations.append(unit_declaration(u, lns, "macro")) + elif u.unit_type in {"FORM", "METHOD", "FUNCTION", "MODULE", "EVENT"}: + declarations.extend( + extract_declaration_blocks(sts, u.stmt_indexes, lns, u.include, "unit", u.unit_id)) + + # 4) unit 별 참조/데이터플로우 + all_writes, all_reads, unit_refs = [], [], {} + for u in units: + if u.unit_type in {"DECLARATION", "CLASS_DEF"}: + continue + sts = statements_by_include[u.include] + known = global_syms | local_syms_by_unit.get(u.unit_id, set()) + r = extract_refs(sts, u.stmt_indexes, macro_names, known) + unit_refs[u.unit_id] = r + writes, reads = extract_writes(sts, u.stmt_indexes, u.unit_id, known) + all_writes.extend(writes) + all_reads.extend(reads) + + # 5) 호출 그래프 + form_by_name = {u.name: u.unit_id for u in units if u.unit_type == "FORM"} + module_by_name = {u.name.split(" ")[0]: u.unit_id for u in units if u.unit_type == "MODULE"} + edges: list[dict] = [] + for u in units: + r = unit_refs.get(u.unit_id) + if not r: + continue + for c in r.calls: + kind, target = c["kind"], c["target"] + edge = {"from_unit": u.unit_id, "to_unit": None, "external_name": None, + "call_type": kind, "line": c.get("line", 0)} + if kind == "perform": + if target in form_by_name: + edge["to_unit"] = form_by_name[target] + else: + edge["external_name"] = target + edge["call_type"] = "perform_unresolved" + elif kind == "perform_external": + edge["external_name"] = f"{c.get('program', '?')}:{target}" + else: + edge["external_name"] = target + edges.append(edge) + + # 6) 실행 순서(topo_order) — 이벤트 순 → PERFORM 체인 DFS (순환은 끊음) + adj: dict[str, list[str]] = {} + for e in edges: + if e["to_unit"]: + adj.setdefault(e["from_unit"], []).append(e["to_unit"]) + topo: list[str] = [] + visited: set[str] = set() + + def dfs(uid: str) -> None: + if uid in visited: + return + visited.add(uid) + topo.append(uid) + for nxt in adj.get(uid, []): + dfs(nxt) + + for u in sorted([x for x in units if x.unit_type == "EVENT"], key=_event_rank): + dfs(u.unit_id) + for u in units: # 이벤트에서 도달 못한 unit (PBO/PAI 모듈 등) + if u.unit_type in {"MODULE", "FORM", "METHOD", "FUNCTION"} and u.unit_id not in visited: + dfs(u.unit_id) + + # 7) 미인식 문장 리포트 + unknown = Counter() + total_stmts = 0 + for sts in statements_by_include.values(): + for st in sts: + if not st.upper: + continue + total_stmts += 1 + head = st.upper[0] + base = head.split("(")[0] + if ( + base in RECOGNIZED_HEADS + or base in macro_names + or base.startswith("&") # 매크로 치환 파라미터(&1 = …) — 템플릿이라 분석 대상 아님 + or "->" in base or "=>" in base # 메서드 호출식 문장 + or assignment_eq_index(st.upper) is not None + ): + continue + unknown[base] += 1 + + return { + "program": program, + "description": meta.get("description", ""), + "includes": meta["includes"], + "text_symbols": meta.get("text_symbols", []), + "units": [ + {**{k: v for k, v in asdict(u).items() if k != "stmt_indexes"}, + "refs": asdict(unit_refs[u.unit_id]) if u.unit_id in unit_refs else None} + for u in units + ], + "symbols": [asdict(s) for s in symbols], + "declarations": [asdict(d) for d in declarations], + "writes": [asdict(w) for w in all_writes], + "reads": all_reads, + "call_edges": edges, + "topo_order": topo, + "stats": { + "units": len(units), + "statements": total_stmts, + "symbols": len(symbols), + "declarations": len(declarations), + "writes": len(all_writes), + "unknown_statements": sum(unknown.values()), + "unknown_ratio": round(sum(unknown.values()) / total_stmts, 4) if total_stmts else 0, + "unknown_top": unknown.most_common(15), + }, + } + + +def main() -> None: + ap = argparse.ArgumentParser(description="Stage 2 — 구조 파싱") + ap.add_argument("--program", default=None, help="특정 프로그램만") + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + + from config.settings import settings + + norm, out = settings.data_normalized, settings.data_parsed + out.mkdir(parents=True, exist_ok=True) + prog_dirs = sorted(d for d in norm.iterdir() if d.is_dir()) if norm.exists() else [] + if args.program: + prog_dirs = [d for d in prog_dirs if d.name == args.program.upper()] + if args.limit: + prog_dirs = prog_dirs[: args.limit] + + agg = {"programs": 0, "units": 0, "statements": 0, "unknown": 0, "errors": 0} + for d in prog_dirs: + try: + result = parse_program(d) + except Exception as e: # noqa: BLE001 + agg["errors"] += 1 + print(f"[FAIL] {d.name}: {type(e).__name__}: {e}") + continue + agg["programs"] += 1 + agg["units"] += result["stats"]["units"] + agg["statements"] += result["stats"]["statements"] + agg["unknown"] += result["stats"]["unknown_statements"] + if not args.dry_run: + (out / f"{d.name}.parse.json").write_text( + json.dumps(result, ensure_ascii=False), encoding="utf-8" + ) + print(f"[OK] {d.name}: units={result['stats']['units']} stmts={result['stats']['statements']} " + f"unknown={result['stats']['unknown_statements']} ({result['stats']['unknown_ratio']:.1%}) " + f"top={result['stats']['unknown_top'][:5]}") + print(json.dumps(agg, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/parser/statements.py b/parser/statements.py new file mode 100644 index 0000000..162d544 --- /dev/null +++ b/parser/statements.py @@ -0,0 +1,174 @@ +"""문장 분리 — '.' 종결, 체인(:` `,`) 전개. (계획서 §4.1)""" +from __future__ import annotations + +import re +from dataclasses import dataclass, field + +from .tokenizer import Line, read_lines, tokenize_code + +_NAME_HEAD = re.compile(r"^[ int | None: + """평문 대입이면 최상위 '=' 토큰의 위치, 아니면 None. + + 받아들이는 형태 — 쓰기 지점 추출(dataflow)과 미인식 리포트(run)가 같은 판정을 써야 하므로 + 여기 한 곳에만 둔다: + X = ... → 1 + X[] = ... → 3 (내부테이블 본문 대입 — 흔한 관용구) + X[ key = v ] = ... → 대괄호를 건너뛴 위치 (테이블 표현식) + X(3) = ... → 괄호를 건너뛴 위치 (오프셋·길이 쓰기) + X+4(2) = ... → 위와 같음 + """ + if len(up) < 3 or not _NAME_HEAD.match(up[0]): + return None + i = 1 + # 오프셋 표기 X+4(2) — '+'와 숫자를 먼저 건너뛴다 + if i + 1 < len(up) and up[i] == "+" and up[i + 1].isdigit(): + i += 2 + for opener, closer in (("[", "]"), ("(", ")")): + if i < len(up) and up[i] == opener: + depth = 0 + while i < len(up): + if up[i] == opener: + depth += 1 + elif up[i] == closer: + depth -= 1 + if depth == 0: + i += 1 + break + i += 1 + return i if i < len(up) and up[i] == "=" else None + + +@dataclass +class Statement: + include: str + line_start: int + line_end: int + tokens: list[str] # 원문 케이스 + comment_text: str = "" # 같은 줄 / 직전 주석 + raw_text: str = "" + # --- 체인(`DATA: a, b, c.`) 항목의 원문 복원용 (parser/declarations.py) --- + chain_head: str = "" # ':' 앞 토큰들 ("DATA") — 체인에서 전개된 항목만 + chain_start: int = 0 # 체인 전체의 시작 줄 + chain_end: int = 0 # 체인 전체의 끝 줄('.' 이 있는 줄) + + @property + def upper(self) -> list[str]: + return [t.upper() for t in self.tokens] + + def text(self) -> str: + return " ".join(self.tokens) + + +def _expand_chain(tokens: list[str], token_lines: list[int]) -> list[tuple[list[str], int, int]]: + """'DATA: a TYPE i, b TYPE i' → [(['DATA','a','TYPE','i'], 줄, 줄), (['DATA','b',...], 줄, 줄)] + + 괄호 안의 ','는 분리하지 않는다. 항목마다 **자기 토큰이 놓인 줄 범위**를 함께 돌려준다 — + 체인 항목의 선언 원문을 그 항목만큼만 잘라내려면(정의부 수집) 항목별 줄이 있어야 한다. + 체인이 아니면 빈 목록을 돌려준다(호출 측이 문장 전체 범위를 쓴다). + """ + if ":" not in tokens: + return [] + ci = tokens.index(":") + head, head_lines = tokens[:ci], token_lines[:ci] + rest, rest_lines = tokens[ci + 1 :], token_lines[ci + 1 :] + groups: list[tuple[list[str], list[int]]] = [] + cur: list[str] = [] + cur_lines: list[int] = [] + depth = 0 + for t, ln in zip(rest, rest_lines): + if t == "(": + depth += 1 + elif t == ")": + depth = max(0, depth - 1) + if t == "," and depth == 0: + groups.append((cur, cur_lines)) + cur, cur_lines = [], [] + else: + cur.append(t) + cur_lines.append(ln) + groups.append((cur, cur_lines)) + + out: list[tuple[list[str], int, int]] = [] + fallback = head_lines[0] if head_lines else (token_lines[0] if token_lines else 0) + for g, gl in groups: + if not (head or g): + continue + start = gl[0] if gl else fallback + end = gl[-1] if gl else start + out.append((head + g, start, end)) + return out + + +def split_statements(text: str, include: str) -> tuple[list[Statement], list[Line]]: + """인클루드 소스 → 문장 목록. 주석 줄은 직후 문장의 comment_text 로 전달.""" + lines = read_lines(text) + statements: list[Statement] = [] + pending_tokens: list[str] = [] + pending_lines: list[int] = [] # pending_tokens 와 같은 길이 — 토큰이 놓인 줄 + pending_start: int | None = None + pending_comments: list[str] = [] + inline_comments: list[str] = [] + + def flush(end_line: int) -> None: + nonlocal pending_tokens, pending_lines, pending_start, pending_comments, inline_comments + if pending_tokens: + comment = " ".join(c for c in (pending_comments + inline_comments) if c).strip() + start = pending_start or end_line + items = _expand_chain(pending_tokens, pending_lines) + if not items: # 체인이 아니면 문장 = 전체 범위 + items = [(pending_tokens, start, end_line)] + chain_head = "" + else: + chain_head = " ".join(pending_tokens[: pending_tokens.index(":")]) + for i, (toks, ls, le) in enumerate(items): + if not toks: + continue + statements.append( + Statement( + include=include, + line_start=ls, + # 마지막 항목은 종결 '.' 이 있는 줄까지 — 원문을 잘라도 문장이 닫힌다 + line_end=end_line if i == len(items) - 1 else le, + tokens=toks, + comment_text=comment[:500], + chain_head=chain_head, + chain_start=start, + chain_end=end_line, + ) + ) + pending_tokens = [] + pending_lines = [] + pending_start = None + pending_comments = [] + inline_comments = [] + + for ln in lines: + if ln.is_full_comment: + if pending_tokens: + inline_comments.append(ln.comment) + else: + pending_comments.append(ln.comment) + continue + if ln.comment: + inline_comments.append(ln.comment) + toks = tokenize_code(ln.code) + if not toks: + if not pending_tokens: + # 빈 줄이 이어지면 이전 주석은 다음 문장과 무관해질 수 있으나, 그대로 유지(요약 컨텍스트용) + pass + continue + for t in toks: + if t == ".": + flush(ln.no) + else: + if pending_start is None: + pending_start = ln.no + pending_tokens.append(t) + pending_lines.append(ln.no) + flush(len(lines)) + for st in statements: + st.raw_text = st.text()[:400] + return statements, lines diff --git a/parser/tokenizer.py b/parser/tokenizer.py new file mode 100644 index 0000000..a977151 --- /dev/null +++ b/parser/tokenizer.py @@ -0,0 +1,98 @@ +"""ABAP 라인 → (코드, 주석) 분리와 토큰화. + +목표는 완전한 ABAP 렉서가 아니라 (계획서 §11.3) 문장 패턴 매칭에 충분한 토큰열이다. + - 줄 첫 문자 '*' → 전체 주석 줄 + - 코드 중 '"' 부터 줄 끝 → 인라인 주석 (단, '...' / `...` / |...| 리터럴 내부 제외) + - 식별자는 -, ->, =>, / 를 포함해 한 토큰으로 취급한다 + (gs_head-belnr, zcl_x=>meth, lo_obj->meth, TEXT-004, /bic/xxx 등) + - 필드심볼도 컴포넌트까지 한 토큰이다 (-fieldname). 이걸 쪼개면 일반 대입 + 판정(up[1] == "=")이 깨져 쓰기 지점이 누락되고 미인식 문장으로 잡힌다 — ALV 필드카탈로그를 + 채우는 관용구라 프로그램에 따라 미인식률을 12% 까지 끌어올렸다. +""" +from __future__ import annotations + +import re +from dataclasses import dataclass, field + + +@dataclass +class Line: + no: int # 1-based + code: str # 주석 제거된 코드 부분 + comment: str # 이 줄의 주석 텍스트 (전체주석/인라인 모두) + is_full_comment: bool + + +_TOKEN_RE = re.compile( + r""" + '(?:[^']|'')*' # '문자열' ('' 이스케이프) + | `[^`]*` # `문자열` + | \|[^|]*\| # |템플릿| + | <[A-Za-z_][A-Za-z0-9_]*>(?:->|=>|[A-Za-z0-9_~/-])* # <필드심볼>[-컴포넌트 | ->메서드] + | &[0-9]+ # 매크로(DEFINE) 치환 파라미터 &1 &2 … + | [A-Za-z_/](?:->|=>|[A-Za-z0-9_~/-])*\(? # 식별자(-, ->, =>, /, ~ 포함; 단독 = 는 제외), 직결 여는괄호 허용 + | [0-9]+ + | ##[A-Za-z_]+ # pragma + | . # 그 외 1문자 ( ) . , : = 등 + """, + re.VERBOSE, +) + + +def split_comment(line: str) -> tuple[str, str, bool]: + """한 줄을 (코드, 주석, 전체주석여부)로 분리.""" + if line.startswith("*"): + return "", line[1:].strip(), True + code_chars: list[str] = [] + i, n = 0, len(line) + while i < n: + ch = line[i] + if ch == "'": + j = i + 1 + while j < n: + if line[j] == "'": + if j + 1 < n and line[j + 1] == "'": + j += 2 + continue + break + j += 1 + code_chars.append(line[i : min(j + 1, n)]) + i = j + 1 + elif ch == "`": + j = line.find("`", i + 1) + j = n - 1 if j < 0 else j + code_chars.append(line[i : j + 1]) + i = j + 1 + elif ch == "|": + j = line.find("|", i + 1) + j = n - 1 if j < 0 else j + code_chars.append(line[i : j + 1]) + i = j + 1 + elif ch == '"': + return "".join(code_chars), line[i + 1 :].strip(), False + else: + code_chars.append(ch) + i += 1 + return "".join(code_chars), "", False + + +def tokenize_code(code: str) -> list[str]: + tokens = [] + for m in _TOKEN_RE.finditer(code): + t = m.group(0) + if t.strip(): + # 식별자에 붙은 여는 괄호는 분리한다: "meth(" → "meth", "(" + if len(t) > 1 and t.endswith("(") and not t.startswith(("'", "`", "|")): + tokens.append(t[:-1]) + tokens.append("(") + else: + tokens.append(t) + return tokens + + +def read_lines(text: str) -> list[Line]: + out: list[Line] = [] + for i, raw in enumerate(text.split("\n"), start=1): + code, comment, full = split_comment(raw.rstrip("\r")) + out.append(Line(no=i, code=code, comment=comment, is_full_comment=full)) + return out diff --git a/parser/units.py b/parser/units.py new file mode 100644 index 0000000..8d1dbd8 --- /dev/null +++ b/parser/units.py @@ -0,0 +1,253 @@ +"""코드 단위(unit) 추출. (계획서 §4.2) + +unit_type: FORM / METHOD / FUNCTION / MODULE / EVENT / CLASS_DEF / DECLARATION / MACRO +unit_id : PROGRAM#INCLUDE#TYPE#NAME +""" +from __future__ import annotations + +import hashlib +from dataclasses import dataclass, field + +from .statements import Statement + +EVENT_KEYWORDS = { + "INITIALIZATION", + "START-OF-SELECTION", + "END-OF-SELECTION", + "TOP-OF-PAGE", + "END-OF-PAGE", + "AT", # AT SELECTION-SCREEN..., AT LINE-SELECTION, AT USER-COMMAND + "GET", # 논리DB GET + "LOAD-OF-PROGRAM", +} + +DECL_KEYWORDS = { + "TYPES", "DATA", "CONSTANTS", "TABLES", "STATICS", "FIELD-SYMBOLS", + "SELECT-OPTIONS", "PARAMETERS", "PARAMETER", "SELECTION-SCREEN", "RANGES", "CONTROLS", + "CLASS-DATA", "INCLUDE", "TYPE-POOLS", "REPORT", "PROGRAM", "NODES", +} + +SUB_CHUNK_LIMIT = 300 # 이 줄 수를 넘으면 최상위 IF/CASE/LOOP 경계로 서브청크 기록 + + +@dataclass +class Unit: + unit_id: str + program: str + include: str + unit_type: str + name: str + line_start: int + line_end: int + signature: str = "" + header_comment: str = "" + code_hash: str = "" + loc: int = 0 + stmt_indexes: list[int] = field(default_factory=list) # 이 unit 에 속한 문장 인덱스 + sub_chunks: list[dict] = field(default_factory=list) + + +def _event_name(up: list[str]) -> str | None: + head = up[0] + if head in {"INITIALIZATION", "START-OF-SELECTION", "END-OF-SELECTION", + "TOP-OF-PAGE", "END-OF-PAGE", "LOAD-OF-PROGRAM"}: + return head + if head == "AT" and len(up) >= 2 and up[1] in {"SELECTION-SCREEN", "LINE-SELECTION", "USER-COMMAND"}: + # AT NEW/END/FIRST/LAST 는 LOOP 제어문이므로 이벤트가 아니다 + return " ".join(up[:4])[:60] + if head == "GET" and len(up) == 2 and up[1] not in { + "PARAMETER", "TIME", "CURSOR", "BADI", "REFERENCE", "PF-STATUS", "RUN" + } and not up[1].startswith("'"): + return f"GET {up[1]}" # 논리DB 이벤트 + return None + + +def extract_units(program: str, include: str, statements: list[Statement], source_lines: int) -> list[Unit]: + units: list[Unit] = [] + open_unit: Unit | None = None # FORM/FUNCTION/MODULE/MACRO/METHOD + open_event: Unit | None = None + open_class: Unit | None = None # CLASS_DEF (DEFINITION) + in_class_impl: str | None = None # CLASS ... IMPLEMENTATION 의 클래스명 + decl_stmts: list[int] = [] + + def uid(utype: str, name: str) -> str: + return f"{program}#{include}#{utype}#{name.upper()}" + + def close_decl() -> None: + nonlocal decl_stmts + if decl_stmts: + first, last = decl_stmts[0], decl_stmts[-1] + u = Unit( + unit_id=uid("DECLARATION", f"DECL_{statements[first].line_start}"), + program=program, include=include, unit_type="DECLARATION", + name=f"DECL_{statements[first].line_start}", + line_start=statements[first].line_start, + line_end=statements[last].line_end, + stmt_indexes=list(decl_stmts), + ) + units.append(u) + decl_stmts = [] + + def close_event(end_line: int) -> None: + nonlocal open_event + if open_event: + open_event.line_end = end_line + units.append(open_event) + open_event = None + + for i, st in enumerate(statements): + up = st.upper + head = up[0] if up else "" + + # ---- 열려 있는 유닛 닫기 판단 ---- + if open_unit: + open_unit.stmt_indexes.append(i) + end_kw = {"FORM": "ENDFORM", "FUNCTION": "ENDFUNCTION", "MODULE": "ENDMODULE", + "METHOD": "ENDMETHOD", "MACRO": "END-OF-DEFINITION"}[open_unit.unit_type] + if head == end_kw: + open_unit.line_end = st.line_end + units.append(open_unit) + open_unit = None + continue + + if open_class: + open_class.stmt_indexes.append(i) + if head == "ENDCLASS": + open_class.line_end = st.line_end + units.append(open_class) + open_class = None + continue + + # ---- 새 유닛 시작 ---- + if head == "FORM" and len(up) >= 2: + close_decl(); close_event(st.line_start - 1) + open_unit = Unit(uid("FORM", up[1]), program, include, "FORM", up[1], + st.line_start, st.line_end, + signature=" ".join(st.tokens[2:])[:300], + header_comment=st.comment_text, stmt_indexes=[i]) + continue + if head == "FUNCTION" and len(up) >= 2: + close_decl(); close_event(st.line_start - 1) + open_unit = Unit(uid("FUNCTION", up[1]), program, include, "FUNCTION", up[1], + st.line_start, st.line_end, header_comment=st.comment_text, + stmt_indexes=[i]) + continue + if head == "MODULE" and len(up) >= 2: + close_decl(); close_event(st.line_start - 1) + mode = up[2] if len(up) >= 3 and up[2] in {"OUTPUT", "INPUT"} else "" + open_unit = Unit(uid("MODULE", f"{up[1]}_{mode}" if mode else up[1]), program, include, + "MODULE", f"{up[1]} {mode}".strip(), st.line_start, st.line_end, + header_comment=st.comment_text, stmt_indexes=[i]) + continue + if head == "DEFINE" and len(up) >= 2: + close_decl(); close_event(st.line_start - 1) + open_unit = Unit(uid("MACRO", up[1]), program, include, "MACRO", up[1], + st.line_start, st.line_end, stmt_indexes=[i]) + continue + if head == "METHOD" and in_class_impl and len(up) >= 2: + close_decl() + name = f"{in_class_impl}~{up[1]}" + open_unit = Unit(uid("METHOD", name), program, include, "METHOD", name, + st.line_start, st.line_end, header_comment=st.comment_text, + stmt_indexes=[i]) + continue + if head == "CLASS" and len(up) >= 3: + # `CLASS lcl_x DEFINITION DEFERRED.` / `… DEFINITION LOAD.` 는 **한 줄 선언**이다 — + # ENDCLASS 가 없다. 블록으로 열면 그 뒤 인클루드 전체가 CLASS_DEF 하나로 삼켜져 + # TOP 의 선언이 통째로 사라진다 (실측: ZCO_ALV 의 GO_ALV1 이하 전부). + if "DEFERRED" in up[2:] or "LOAD" in up[2:]: + if open_event: + open_event.stmt_indexes.append(i) + open_event.line_end = st.line_end + else: + decl_stmts.append(i) + continue + if "DEFINITION" in up[2:4]: + close_decl(); close_event(st.line_start - 1) + open_class = Unit(uid("CLASS_DEF", up[1]), program, include, "CLASS_DEF", up[1], + st.line_start, st.line_end, stmt_indexes=[i]) + continue + if "IMPLEMENTATION" in up[2:4]: + close_decl(); close_event(st.line_start - 1) + in_class_impl = up[1] + continue + if head == "ENDCLASS": + in_class_impl = None + continue + + ev = _event_name(up) if up else None + if ev: + close_decl(); close_event(st.line_start - 1) + open_event = Unit(uid("EVENT", ev.replace(" ", "_")), program, include, "EVENT", ev, + st.line_start, st.line_end, header_comment=st.comment_text, + stmt_indexes=[i]) + continue + + # ---- 유닛 밖 문장 ---- + if open_event: + open_event.stmt_indexes.append(i) + open_event.line_end = st.line_end + continue + if head.split("-")[0].split(":")[0] in DECL_KEYWORDS or head in DECL_KEYWORDS: + decl_stmts.append(i) + continue + # 그 밖의 최상위 문장(드묾)은 DECLARATION 블록에 편입하지 않고 무시하되 카운트는 파서 리포트에서 + decl_stmts.append(i) + + # 파일 끝 정리 + if open_unit: + open_unit.line_end = statements[-1].line_end if statements else source_lines + units.append(open_unit) + if open_class: + open_class.line_end = statements[-1].line_end if statements else source_lines + units.append(open_class) + close_event(statements[-1].line_end if statements else source_lines) + close_decl() + + for u in units: + u.loc = u.line_end - u.line_start + 1 + return units + + +def finalize_units(units: list[Unit], statements_by_include: dict[str, list[Statement]], + code_by_include: dict[str, str]) -> None: + """code_hash / sub_chunks 계산.""" + for u in units: + code = code_by_include.get(u.include, "") + lines = code.split("\n") + body = "\n".join(lines[u.line_start - 1 : u.line_end]) + u.code_hash = hashlib.sha256(body.encode("utf-8")).hexdigest() + if u.loc > SUB_CHUNK_LIMIT: + u.sub_chunks = _sub_chunks(u, statements_by_include.get(u.include, [])) + + +def _sub_chunks(u: Unit, statements: list[Statement]) -> list[dict]: + """최상위 IF/CASE/LOOP/WHILE/DO 블록 경계로 unit 을 서브청크 목록으로 나눈다.""" + opens = {"IF": "ENDIF", "CASE": "ENDCASE", "LOOP": "ENDLOOP", "WHILE": "ENDWHILE", "DO": "ENDDO"} + boundaries: list[int] = [u.line_start] + depth = 0 + for idx in u.stmt_indexes: + st = statements[idx] + head = st.upper[0] if st.tokens else "" + if head in opens: + if depth == 0: + boundaries.append(st.line_start) + depth += 1 + elif head in opens.values(): + depth = max(0, depth - 1) + if depth == 0: + boundaries.append(st.line_end + 1) + boundaries.append(u.line_end + 1) + bounds = sorted(set(boundaries)) + chunks = [] + for a, b in zip(bounds, bounds[1:]): + if b - a > 0: + chunks.append({"line_start": a, "line_end": b - 1}) + # 너무 잘게 쪼개지면 SUB_CHUNK_LIMIT 안쪽으로 병합 + merged: list[dict] = [] + for c in chunks: + if merged and (c["line_end"] - merged[-1]["line_start"]) <= SUB_CHUNK_LIMIT: + merged[-1]["line_end"] = c["line_end"] + else: + merged.append(dict(c)) + return merged diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..163ba55 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[project] +name = "abap-indexing" +version = "0.1.0" +description = "ABAP 소스코드 인덱싱 서버 — 정규화/구조파싱/요약/인덱싱/질의 API" +requires-python = ">=3.11" +dependencies = [ + "fastapi>=0.110", + "uvicorn[standard]>=0.29", + "pydantic>=2.6", + "pydantic-settings>=2.2", +] + +[project.optional-dependencies] +dev = ["pytest>=8", "httpx>=0.27"] +# 운영 DB를 PostgreSQL로 전환할 때 (ASSUMPTIONS.md 참고) +postgres = ["psycopg[binary]>=3.1", "pgvector>=0.2"] + +# flat-layout 자동 탐색이 data/ wiki/ 까지 패키지로 오인해 실패한다 — 명시 지정. +[tool.setuptools] +packages = ["config", "ingest", "parser", "index", "summarize", "query", "wiki_out", "eval"] + +[tool.pytest.ini_options] +testpaths = ["tests"] diff --git a/query/__init__.py b/query/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/query/api.py b/query/api.py new file mode 100644 index 0000000..1445fc9 --- /dev/null +++ b/query/api.py @@ -0,0 +1,428 @@ +"""Stage 5 — 질의 API (FastAPI). + +opencode-be 의 커스텀 툴(.opencode/tool/_index_client.ts)이 호출하는 HTTP 서비스. +실행: python -m query.api (기본 127.0.0.1:8100) +자연어 로직 질의는 /search/logic (로직 조각) 이 1차 진입점이다 — docs/logic-chunk-design.md + +응답 크기 원칙: 툴 응답이 LLM 컨텍스트에 그대로 들어가므로 상한을 두고 자른다. +(책임 경계 — 컨텍스트 초과는 인덱스 쪽 책임: 계획서 리스크 항목) +""" +from __future__ import annotations + +import json +import re +import sqlite3 +from datetime import datetime, timezone + +import threading + +from fastapi import BackgroundTasks, Body, FastAPI, HTTPException, Query +from fastapi.responses import HTMLResponse + +from config.settings import ROOT, settings +from index.db import connect, db_path +from index.loader import load_parsed, refresh_program_fts +from ingest.normalize import write_program +from parser.run import parse_program +from summarize.runner import PROMPT_VERSION, summarize_units + +from . import tools +from .dashboard import render_dashboard + +app = FastAPI(title="abap-indexing", version="0.1.0") + +MAX_CODE_LINES = 400 # unit 코드 응답 상한 (초과 시 write 지점 위주로 잘라야 하나 v1은 앞부분+안내) + + +def _wrap(fn, *args, **kwargs): + try: + return fn(*args, **kwargs) + except tools.NotFound as e: + raise HTTPException(status_code=404, detail=str(e)) from e + except sqlite3.OperationalError as e: + raise HTTPException(status_code=503, detail=f"인덱스 DB 오류: {e}") from e + + +# 프로세스 시작 시각 — 코드를 고쳤는데 반영이 안 될 때 서버가 낡았는지 판단하는 근거. +# (템플릿 html 은 요청마다 다시 읽지만 파이썬 모듈은 sys.modules 에 캐시된다.) +STARTED_AT = datetime.now(timezone.utc).isoformat(timespec="seconds") + + +@app.get("/health") +def health() -> dict: + con = connect() + try: + programs = con.execute("SELECT COUNT(*) AS c FROM program").fetchone()["c"] + with_source = con.execute("SELECT COUNT(*) AS c FROM program WHERE has_source=1").fetchone()["c"] + units = con.execute("SELECT COUNT(*) AS c FROM unit").fetchone()["c"] + chunks = con.execute("SELECT COUNT(*) AS c FROM logic_chunk").fetchone()["c"] + wiki_programs = ( + sum(1 for _ in (settings.wiki_dir / "programs").glob("*.md")) + if (settings.wiki_dir / "programs").exists() else 0 + ) + return { + "status": "ok", + "started_at": STARTED_AT, + "db": str(db_path()), + "programs": programs, + "programs_with_source": with_source, + "units": units, + "logic_chunks": chunks, + "wiki_programs": wiki_programs, + "wiki_search_backend": settings.wiki_search_backend, # qmd | pg (M3.5 파일럿으로 확정) + } + finally: + con.close() + + +# 인제스트 후 백그라운드 요약 — 같은 프로그램 중복 실행 방지 +_summarizing: set[str] = set() +_summarizing_lock = threading.Lock() + + +def _summarize_bg(program: str) -> None: + try: + summarize_units(program, limit=None, dry_run=False, trigger="ingest", + backend=settings.summarize_backend) + except Exception as e: # noqa: BLE001 + print(f"[summarize:{program}] {type(e).__name__}: {e}") + finally: + with _summarizing_lock: + _summarizing.discard(program) + # 요약 후 위키 재생성 (계획서 v4 §5.7 — 실패해도 요약 결과에는 영향 없음) + try: + from wiki_out.okf_writer import write_program_wiki + + write_program_wiki(program) + except Exception as e: # noqa: BLE001 + print(f"[wiki:{program}] {type(e).__name__}: {e}") + + +@app.post("/ingest") +def ingest(payload: dict = Body(), background_tasks: BackgroundTasks = None) -> dict: + """수집 API/gateway가 넘겨준 프로그램 소스 JSON 한 건을 정규화→파싱→적재까지 처리한다. + + body 는 수집 원본과 같은 형태: {MAIN_PROGRAM, DESCRIPTION, INCLUDE_PROGRAM[], TEXT_SYMBOL?} + (gateway 를 거친 응답은 이미 strict JSON 이므로 raw 정규화 단계는 불필요) + """ + if not isinstance(payload, dict) or not payload.get("MAIN_PROGRAM"): + raise HTTPException(status_code=400, detail="MAIN_PROGRAM이 포함된 소스 JSON이 필요합니다") + + try: + meta = write_program(payload, settings.data_normalized) + program = meta["program"] + parsed = parse_program(settings.data_normalized / program) + settings.data_parsed.mkdir(parents=True, exist_ok=True) + parse_path = settings.data_parsed / f"{program}.parse.json" + parse_path.write_text(json.dumps(parsed, ensure_ascii=False), encoding="utf-8") + except Exception as e: # noqa: BLE001 + raise HTTPException(status_code=422, detail=f"정규화/파싱 실패: {type(e).__name__}: {e}") from e + + con = connect() + try: + status = load_parsed(con, parse_path) + # 단건만 갱신 — 전량 재구축을 /ingest 마다 하면 1만 본에서 O(N²) 가 된다 + refresh_program_fts(con, program) + con.commit() + # 요약이 안 됐거나(failed 포함) 프롬프트 버전이 지난 unit 수 — runner 의 스킵 조건과 동일 기준 + pending = con.execute( + "SELECT COUNT(*) AS c FROM unit WHERE program=? AND unit_type IN " + "('FORM','METHOD','FUNCTION','MODULE','EVENT') " + "AND (summary_status!='done' OR prompt_version!=?)", + (program, PROMPT_VERSION), + ).fetchone()["c"] + except Exception as e: # noqa: BLE001 + con.rollback() + raise HTTPException(status_code=500, detail=f"인덱스 적재 실패: {type(e).__name__}: {e}") from e + finally: + con.close() + + # LLM 요약을 백그라운드로 이어 돌린다 (응답은 즉시 반환). + # 소스가 안 바뀐(skip) 프로그램이라도 요약 미완료 unit 이 있으면 이어서 돌린다(재인덱싱 = 요약 재시도). + # SUMMARIZE_BACKEND=file 이면 키 없이 프롬프트만 큐에 쌓는다 (/summaries/jobs 로 확인). + backend = settings.summarize_backend + summarize = "disabled" + if backend != "off" and (backend == "file" or (settings.llm_base_url and settings.llm_api_key)): + if status == "loaded" or pending: + with _summarizing_lock: + already = program in _summarizing + if not already: + _summarizing.add(program) + if already: + summarize = "already_running" + else: + background_tasks.add_task(_summarize_bg, program) + summarize = "scheduled" if status == "loaded" else "resumed" + else: + summarize = "skip" # 소스 동일 + 요약도 전부 완료 + + return { + "program": program, + "status": status, # loaded | skip(소스 변경 없음) + "summarize": summarize, # scheduled | resumed(미완료 요약 이어서) | already_running | skip | disabled + "summarize_backend": backend, # api | file(프롬프트 큐) | off + "pending_units": pending, # 요약 대기/실패 unit 수 + "includes": len(meta["includes"]), + "units": parsed["stats"]["units"], + "statements": parsed["stats"]["statements"], + "unknown_ratio": parsed["stats"]["unknown_ratio"], + } + + +@app.get("/search/programs") +def search_programs(q: str = Query(min_length=1), top_k: int = Query(default=10, le=30)) -> dict: + return {"query": q, "results": _wrap(tools.search_programs, q, top_k)} + + +@app.get("/search/units") +def search_units(q: str = Query(min_length=1), program: str | None = None, + top_k: int = Query(default=10, le=30)) -> dict: + return {"query": q, "results": _wrap(tools.search_units, q, program, top_k)} + + +@app.get("/search/logic") +def search_logic(q: str = Query(min_length=1), program: str | None = None, kind: str | None = None, + top_k: int = Query(default=10, le=30)) -> dict: + """로직 조각 검색 — 자연어 로직 질의의 1차 진입점. 프로그램 단위로 묶어 반환. + + 응답의 `expansion` 은 용어 사전으로 펼친 동의어를 보여준다. 조각마다 붙는 `matched_by` 가 + '동의어 확장' 이면 원질의가 아니라 동의어로 걸린 결과다 (점수에 감쇠가 적용됨). + """ + return {"query": q, **_wrap(tools.search_logic, q, top_k, program, kind)} + + +@app.get("/chunks/{chunk_id}") +def chunk(chunk_id: str, decls: bool = True) -> dict: + """조각 메타 + 코드 원문 + 정의부. chunk_id 의 '#' 은 URL 인코딩(%23) 해야 한다. + + `code` 는 로직만이라 그대로 붙여넣으면 선언이 없어 문법 오류가 난다. 함께 가야 하는 선언은 + `declaration_code`(붙여넣기용 한 덩어리)와 `declarations`(건별 목록)로 준다. + 필요 없으면 `?decls=false` 로 끈다. + """ + return _wrap(tools.get_chunk, chunk_id, decls) + + +@app.get("/programs/{name}/declarations") +def program_declarations(name: str, scope: str | None = None) -> dict: + """프로그램의 정의부 전체 (scope=global|unit 로 거를 수 있다).""" + return _wrap(tools.get_declarations, name, scope) + + +@app.get("/programs/{name}/chunks") +def program_chunks(name: str, unit_id: str | None = None) -> dict: + return {"program": name.upper(), "chunks": _wrap(tools.list_chunks, name, unit_id)} + + +@app.get("/programs/{name}/summary") +def program_summary(name: str) -> dict: + return _wrap(tools.get_program_summary, name) + + +@app.get("/programs/{name}/source") +def program_source(name: str) -> dict: + return _wrap(tools.get_program_source, name) + + +@app.get("/programs/{name}/units/{unit}/code") +def unit_code(name: str, unit: str) -> dict: + result = _wrap(tools.get_unit_code, name, unit) + lines = result["code"].split("\n") + if len(lines) > MAX_CODE_LINES: + result["code"] = "\n".join(lines[:MAX_CODE_LINES]) + result["truncated"] = True + result["total_lines"] = len(lines) + return result + + +@app.get("/programs/{name}/trace/{symbol}") +def trace(name: str, symbol: str) -> dict: + return _wrap(tools.trace_variable, name, symbol) + + +@app.get("/programs/{name}/call-graph") +def call_graph(name: str, unit: str | None = None) -> dict: + return _wrap(tools.get_call_graph, name, unit) + + +@app.get("/programs/{name}/who-calls/{unit}") +def who_calls_route(name: str, unit: str) -> dict: + return _wrap(tools.who_calls, name, unit) + + +@app.get("/tables/{name}/usage") +def table_usage(name: str) -> dict: + return _wrap(tools.get_table_usage, name) + + +@app.get("/wiki/{doc_path:path}") +def wiki_doc(doc_path: str) -> dict: + """위키 문서 원문 반환 (계획서 v4 §7.2). + + 경로 규약: **wiki/ 루트 상대 경로** (예: programs/ZFIR10070.md). + 경로 A(qmd) 채택 시 qmd 검색 결과의 경로가 그대로 들어온다. + """ + from wiki_out.merge import is_human_verified, split_frontmatter + + root = settings.wiki_dir.resolve() + if not doc_path.endswith(".md"): + doc_path += ".md" + target = (root / doc_path).resolve() + if not target.is_relative_to(root): + raise HTTPException(status_code=400, detail="잘못된 경로입니다 (wiki/ 루트 상대 경로만 허용)") + if not target.is_file(): + raise HTTPException( + status_code=404, + detail=f"위키 문서 '{doc_path}' 이(가) 없습니다. " + f"경로는 wiki/ 루트 상대(예: programs/ZFIR10070.md)여야 합니다.", + ) + text = target.read_text(encoding="utf-8") + fm, _body = split_frontmatter(text) + return { + "path": target.relative_to(root).as_posix(), + "human_verified": is_human_verified(fm), # 사람 교정 문서를 더 신뢰 (계획서 §6-3 규칙 0) + "content": text, + } + + +@app.get("/wiki-viewer", response_class=HTMLResponse) +def wiki_viewer() -> str: + """위키 뷰어 — 요청 시점의 wiki/ 를 스캔해 렌더 (실시간).""" + from wiki_out.viewer import build_html + + return build_html() + + +@app.get("/dashboard", response_class=HTMLResponse) +def dashboard() -> str: + """관측소 대시보드 — 요청 시점의 index.db 상태를 담아 렌더 (실시간).""" + with _summarizing_lock: + running = sorted(_summarizing) + return render_dashboard(running) + + +@app.get("/summaries/status") +def summaries_status() -> dict: + """요약 진행 현황과 LLM 사용량/비용 로그 (관측소 대시보드·gateway용).""" + con = connect() + try: + per_program = [dict(r) for r in con.execute( + "SELECT u.program, COUNT(*) AS eligible, " + "SUM(CASE WHEN u.summary_status='done' THEN 1 ELSE 0 END) AS done, " + "SUM(CASE WHEN u.summary_status='failed' THEN 1 ELSE 0 END) AS failed, " + "COALESCE(SUM(u.chunk_count),0) AS chunks, " + "MAX(p.summary_status) AS program_summary " + "FROM unit u JOIN program p ON p.name=u.program " + "WHERE u.unit_type IN ('FORM','METHOD','FUNCTION','MODULE','EVENT') " + "GROUP BY u.program ORDER BY u.program")] + totals = con.execute( + "SELECT COUNT(*) AS runs, COALESCE(SUM(calls),0) AS calls, " + "COALESCE(SUM(prompt_tokens),0) AS prompt_tokens, " + "COALESCE(SUM(completion_tokens),0) AS completion_tokens, " + "COALESCE(SUM(cost_usd),0) AS cost_usd FROM llm_usage_log").fetchone() + log = [dict(r) for r in con.execute( + "SELECT * FROM llm_usage_log ORDER BY id DESC LIMIT 50")] + failures = [dict(r) for r in con.execute( + "SELECT program, unit_id, include, unit_type, name, summary_error " + "FROM unit WHERE summary_status='failed' ORDER BY program, include, line_start")] + with _summarizing_lock: + running = sorted(_summarizing) + return { + "model": settings.llm_model, + "llm_enabled": bool(settings.llm_base_url and settings.llm_api_key), + "running": running, + "programs": per_program, + "failures": failures, + "usage_totals": dict(totals), + "usage_log": log, + "job_queue": _job_queue_status(), + } + finally: + con.close() + + +def _job_queue_status() -> dict: + """file 백엔드 작업 큐 현황 — LLM 키가 없을 때 진행 상황을 여기로 본다.""" + from summarize.jobs import _index_rows, _status, jobs_dir + + d = jobs_dir() + rows = _index_rows(d) + pending = [r for r in rows if _status(d, r) == "pending"] + return { + "dir": str(d), + "total": len(rows), + "pending": len(pending), + "answered": len(rows) - len(pending), + "next": [ + {"job_id": r["job_id"], "task": r.get("task", ""), "program": r.get("program", ""), + "unit_id": r.get("unit_id", "")} + for r in pending[:20] + ], + } + + +@app.get("/summaries/jobs") +def summaries_jobs() -> dict: + """LLM 키 없이 돌리는 작업 큐 조회 (프롬프트 대기 목록). + + 채우는 방법은 `python -m summarize.jobs` 참고. API 로 응답을 받지는 않는다 — + 프롬프트 본문이 커서 파일로 주고받는 쪽이 안전하다. + """ + return _job_queue_status() + + +# ===== LLM 설정 (관측소 대시보드에서 요약 모델 전환) ===== + +_MODEL_RE = re.compile(r"^[A-Za-z0-9._\-/:]+$") +ENV_PATH = ROOT / ".env" # 테스트에서 monkeypatch + + +def _persist_env(key: str, value: str) -> None: + """ENV_PATH 의 key= 줄을 교체(없으면 추가) — 서버 재시작 후에도 유지되게.""" + lines = ENV_PATH.read_text(encoding="utf-8").splitlines() if ENV_PATH.exists() else [] + for i, ln in enumerate(lines): + if ln.startswith(f"{key}="): + lines[i] = f"{key}={value}" + break + else: + lines.append(f"{key}={value}") + ENV_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +@app.get("/settings/llm") +def get_llm_settings() -> dict: + return { + "model": settings.llm_model, + "enabled": bool(settings.llm_base_url and settings.llm_api_key), + } + + +@app.put("/settings/llm") +def put_llm_settings(payload: dict = Body()) -> dict: + model = str(payload.get("model", "")).strip() + if not model or not _MODEL_RE.match(model): + raise HTTPException(status_code=400, detail="model 형식이 잘못됐습니다 (영숫자 · . - / : 만 허용)") + settings.llm_model = model # 즉시 반영 — 다음 요약 배치부터 이 모델로 호출 + _persist_env("LLM_MODEL", model) + return {"model": model} + + +def main() -> None: + import argparse + + import uvicorn + + ap = argparse.ArgumentParser(description="Stage 5 — 질의 API / 관측소 / 위키 뷰어") + ap.add_argument("--host", default=settings.index_host) + ap.add_argument("--port", type=int, default=settings.index_port) + ap.add_argument("--reload", action="store_true", + help="소스 변경 시 자동 재시작. 템플릿(html)은 요청마다 다시 읽지만 " + "파이썬 모듈은 프로세스에 캐시되므로, 코드를 고치는 중이면 이 옵션이 필요하다") + args = ap.parse_args() + if args.reload: + uvicorn.run("query.api:app", host=args.host, port=args.port, reload=True) + else: + uvicorn.run(app, host=args.host, port=args.port) + + +if __name__ == "__main__": + main() diff --git a/query/dashboard.py b/query/dashboard.py new file mode 100644 index 0000000..7be479d --- /dev/null +++ b/query/dashboard.py @@ -0,0 +1,123 @@ +"""관측소 대시보드 — index.db 현재 상태를 담아 서버가 직접 서빙한다 (GET /dashboard). + +정적 아티팩트 스냅샷과 같은 화면이며, 요청 시점마다 DB를 다시 읽어 HTML에 주입한다. +템플릿: query/dashboard.html (플레이스홀더 __DATA_JSON__, __GENERATED_AT__) +""" +from __future__ import annotations + +import json +from datetime import datetime +from pathlib import Path + +from config.settings import settings +from index.db import connect, loads + +TEMPLATE = Path(__file__).with_name("dashboard.html") + +ELIGIBLE = "('FORM','METHOD','FUNCTION','MODULE','EVENT')" + + +def _rows(con, sql: str, params: tuple = ()) -> list[dict]: + return [dict(r) for r in con.execute(sql, params)] + + +def build_data(con, running: list[str]) -> dict: + counts = { + t: con.execute(f"SELECT COUNT(*) FROM {t}").fetchone()[0] + for t in ("program", "include", "unit", "symbol", "symbol_write", + "symbol_read", "table_ref", "call_edge", "topo") + } + counts["table_read"] = con.execute("SELECT COUNT(*) FROM table_ref WHERE mode='read'").fetchone()[0] + counts["table_write"] = con.execute("SELECT COUNT(*) FROM table_ref WHERE mode='write'").fetchone()[0] + + unit_counts = {r["program"]: r["n"] for r in con.execute( + "SELECT program, COUNT(*) n FROM unit GROUP BY program")} + chunk_counts = {r["program"]: r["n"] for r in con.execute( + "SELECT program, COUNT(*) n FROM logic_chunk GROUP BY program")} + counts["logic_chunk"] = sum(chunk_counts.values()) + programs = [ + {"name": r["name"], "devclass": r["devclass"], "title": r["title_ko"], + "units": unit_counts.get(r["name"], 0), "chunks": chunk_counts.get(r["name"], 0)} + for r in con.execute("SELECT name, devclass, title_ko FROM program ORDER BY name") + ] + + return { + "counts": counts, + "programs": programs, + "includes": _rows(con, "SELECT program, include, line_count FROM include ORDER BY program, include"), + "units": _rows(con, "SELECT unit_id, program, include, unit_type, name, line_start, line_end, loc FROM unit"), + "edges": _rows(con, "SELECT program, from_unit, to_unit, external_name, call_type, line FROM call_edge"), + "table_refs": _rows(con, "SELECT program, unit_id, table_name, mode FROM table_ref"), + "rw": _rows(con, """ + SELECT program, symbol, SUM(w) w, SUM(r) r FROM ( + SELECT program, symbol, COUNT(*) w, 0 r FROM symbol_write GROUP BY program, symbol + UNION ALL + SELECT program, symbol, 0 w, COUNT(*) r FROM symbol_read GROUP BY program, symbol + ) GROUP BY program, symbol ORDER BY (SUM(w)+SUM(r)) DESC"""), + "summaries": { + r["unit_id"]: {k: (loads(r["summary_json"]) or {}).get(k) + for k in ("purpose_ko", "chunk_count", "coverage")} + for r in con.execute("SELECT unit_id, summary_json FROM unit WHERE summary_status='done'") + }, + "chunks": _rows(con, "SELECT chunk_id, program, unit_id, include, line_start, line_end, kind, " + "purpose_ko, confidence FROM logic_chunk ORDER BY program, include, line_start"), + "llm": { + # 설정된 모델과 **실제로 쓰인 백엔드**를 구분해 보여준다 — file 백엔드로 돌린 결과를 + # 쓰지도 않은 모델 이름으로 표기하면 관측 결과가 거짓이 된다. + "model": settings.llm_model, + "backend": settings.summarize_backend, + "api_key_set": bool(settings.llm_base_url and settings.llm_api_key), + "last_used_model": (con.execute( + "SELECT model FROM llm_usage_log ORDER BY id DESC LIMIT 1").fetchone() or [None])[0], + "running": running, + "progress": _rows(con, f""" + SELECT program, COUNT(*) eligible, + SUM(CASE WHEN summary_status='done' THEN 1 ELSE 0 END) done, + SUM(CASE WHEN summary_status='failed' THEN 1 ELSE 0 END) failed, + COALESCE(SUM(chunk_count),0) chunks + FROM unit WHERE unit_type IN {ELIGIBLE} GROUP BY program ORDER BY program"""), + "failures": _rows(con, """ + SELECT program, unit_id, include, unit_type, name, summary_error + FROM unit WHERE summary_status='failed' ORDER BY program, include, line_start"""), + "totals": dict(con.execute( + "SELECT COUNT(*) runs, COALESCE(SUM(calls),0) calls, " + "COALESCE(SUM(prompt_tokens),0) pt, COALESCE(SUM(completion_tokens),0) ct, " + "COALESCE(SUM(cost_usd),0) cost FROM llm_usage_log").fetchone()), + "log": _rows(con, "SELECT * FROM llm_usage_log ORDER BY id DESC LIMIT 50"), + }, + } + + +def render_dashboard(running: list[str] | None = None) -> str: + con = connect() + try: + data = build_data(con, running or []) + finally: + con.close() + payload = json.dumps(data, ensure_ascii=False).replace(" None: + """관측소를 단일 HTML 파일로 내보낸다 — 다른 PC 로 옮겨 브라우저로만 열어보는 용도. + + python -m query.dashboard [--out PATH] + + 데이터가 파일 안에 박히므로 파이썬·서버·index.db 없이 열린다 (뷰어 스냅샷과 같은 방식). + """ + import argparse + + ap = argparse.ArgumentParser(description="관측소 대시보드 HTML 스냅샷") + ap.add_argument("--out", default=None) + args = ap.parse_args() + out = Path(args.out) if args.out else settings.data_raw.parent / "dashboard.html" + out.parent.mkdir(parents=True, exist_ok=True) + html = render_dashboard([]) + out.write_text(html, encoding="utf-8") + print(f"{out} ({len(html) / 1024:.0f} KB)") + + +if __name__ == "__main__": + main() diff --git a/query/expand.py b/query/expand.py new file mode 100644 index 0000000..cb8c7f7 --- /dev/null +++ b/query/expand.py @@ -0,0 +1,56 @@ +"""질의 확장 — 도메인 용어 사전으로 동의어를 펼친다 (계획서 §5.6, 수정사항 4번). + +"입고"로 물었을 때 GR / MSEG / 101 로 색인된 문서도 찾아야 한다. + +## 왜 한 MATCH 식에 동의어를 섞지 않는가 + +`index.db.fts_or` 는 토큰과 한글 2-gram 을 전부 OR 로 잇는다. 이미 재현율 편향이라 +동의어까지 같은 식에 넣으면 정밀도가 더 나빠진다 ("총계정원장" 질의가 "원장" 2-gram 하나로 +걸린 문서와 동일 가중치가 된다). + +그래서 **2단 검색**을 한다: + 1단 — 원질의만으로 검색. 이걸 항상 상위에 둔다. + 2단 — 결과가 부족할 때만(top_k 미만) 동의어 식으로 보충하고, 점수에 감쇠 계수를 걸고 + matched_by='동의어 확장' 으로 표시해 호출 측이 구분할 수 있게 한다. + +감쇠 계수(EXPANDED_WEIGHT)는 원질의 히트가 항상 앞서도록 하는 장치다. +""" +from __future__ import annotations + +from config.glossary import synonym_map +from index.db import fts_or, query_tokens + +# 동의어 히트에 곱하는 점수 감쇠 — 원질의 히트보다 항상 뒤에 놓이게 한다 +EXPANDED_WEIGHT = 0.35 + +MAX_SYNONYMS = 24 + + +def expansion_terms(q: str) -> list[str]: + """질의 토큰의 동의어 목록 (원질의 토큰 자체는 제외).""" + syn = synonym_map() + tokens = query_tokens(q) + seen = {t.upper() for t in tokens} + out: list[str] = [] + for t in tokens: + for s in syn.get(t.upper(), []): + if s.upper() in seen: + continue + seen.add(s.upper()) + out.append(s) + if len(out) >= MAX_SYNONYMS: + return out + return out + + +def match_exprs(q: str) -> tuple[str, str | None]: + """(원질의 MATCH 식, 동의어 MATCH 식 | None)""" + terms = expansion_terms(q) + return fts_or(query_tokens(q)), (fts_or(terms) if terms else None) + + +def explain(q: str) -> dict: + """확장 결과 설명 — API 응답에 실어 "왜 이게 나왔나"를 보이게 한다.""" + terms = expansion_terms(q) + return {"query": q, "tokens": query_tokens(q), "synonyms": terms, + "expanded": bool(terms), "expanded_weight": EXPANDED_WEIGHT} diff --git a/query/tools.py b/query/tools.py new file mode 100644 index 0000000..e9fec16 --- /dev/null +++ b/query/tools.py @@ -0,0 +1,614 @@ +"""Stage 5 — 질의 도구 구현. API(query/api.py)와 향후 에이전트가 공용으로 사용한다. + +검색의 1차 단위는 로직 조각(search_logic → logic_chunk). search_programs / search_units 는 +프로그램·unit 이름·주석·한 줄 요약 기반의 얇은 색인이다 (docs/logic-chunk-design.md). +요약(Stage 3)이 아직 없는 프로그램은 파서 구조 정보로 대체 요약을 만들어 반환한다 +(사실은 파서가, 해석은 LLM이 — 구조 정보만으로도 흐름/추적 질문에는 답할 수 있다). +""" +from __future__ import annotations + +import json +import sqlite3 +from typing import Any + +from index import decls as decls_mod +from index.db import bm25_rank, clean_comment, connect, fts_escape, loads +from parser.refs import EXTERNAL_CALL_KINDS + +from .expand import EXPANDED_WEIGHT, explain, match_exprs + +MAX_TRACE_DEPTH = 5 + +# 서술 색인(요약·키워드) 히트에 곱하는 계수. 이름·타이틀 일치가 우선이고 요약은 보강 신호다. +# 정답셋(수정사항 7번)이 생기면 EXPANDED_WEIGHT 와 함께 측정해 조정할 값이다. +_DESC_WEIGHT = 0.6 + +_REASON_RANK = {"이름/타이틀 일치": 0, "키워드 일치": 1, "요약 일치": 2, "동의어 확장": 3} + +# clean_comment 는 index.db 로 옮겼다 (loader 도 써야 하는데 index → query 의존은 역방향). +# 기존 import 경로(query.tools.clean_comment)를 쓰는 호출부가 있어 이름은 여기서도 노출한다. +__all__ = ["clean_comment", "search_programs", "search_units", "search_logic", "get_chunk", + "list_chunks", "get_program_summary", "get_program_source", "get_unit_code", + "get_declarations", "trace_variable", "get_call_graph", "get_table_usage", + "who_calls", "NotFound"] + + +def _fts_rows(con: sqlite3.Connection, sql: str, base_params: list, q: str, + limit: int) -> list[tuple[sqlite3.Row, float]]: + """2단 검색 실행 — 원질의 → (부족하면) 동의어 확장. 반환: [(row, 가중치)] + + sql 은 '... MATCH ?' 자리표시자 하나를 첫 파라미터로 받는 형태여야 한다. + """ + primary, expanded = match_exprs(q) + out: list[tuple[sqlite3.Row, float]] = [] + try: + out = [(r, 1.0) for r in con.execute(sql, [primary, *base_params, limit]).fetchall()] + except sqlite3.OperationalError: + out = [] + if expanded and len(out) < limit: + seen = {tuple(r) for r, _ in out} + try: + for r in con.execute(sql, [expanded, *base_params, limit]).fetchall(): + if tuple(r) not in seen: + out.append((r, EXPANDED_WEIGHT)) + except sqlite3.OperationalError: + pass + return out + + +class NotFound(Exception): + pass + + +def _program_or_404(con: sqlite3.Connection, name: str) -> sqlite3.Row: + row = con.execute( + "SELECT p.*, COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass=p.devclass WHERE p.name=?", + (name.upper(),), + ).fetchone() + if not row: + raise NotFound(f"프로그램 '{name}' 이(가) 인덱스에 없습니다") + return row + + +def search_programs(q: str, top_k: int = 10) -> list[dict]: + con = connect() + try: + results: dict[str, dict] = {} + + def add(name: str, score: float, reason: str) -> None: + e = results.setdefault(name, {"name": name, "score": 0.0, "reason": reason}) + e["score"] += score + # 더 강한 근거로 덮어쓴다: 이름/타이틀 > 요약·키워드 > 동의어 + if _REASON_RANK.get(reason, 9) < _REASON_RANK.get(e["reason"], 9): + e["reason"] = reason + + # 1) 이름·타이틀 색인 (원질의 우선, 부족하면 동의어 확장 — 수정사항 4번) + rank = bm25_rank("program_fts") + for row, weight in _fts_rows( + con, + f"SELECT name, {rank} AS rank FROM program_fts WHERE program_fts MATCH ? " + f"ORDER BY {rank} LIMIT ?", + [], q, top_k * 3, + ): + add(row["name"], -float(row["rank"] or 0) * weight, + "키워드 일치" if weight >= 1.0 else "동의어 확장") + + # 2) 서술 색인 (LLM 요약·조각 키워드·텍스트 심볼 — 수정사항 1·3번). + # 별 테이블이라 요약이 길어도 이름·타이틀 점수를 밀어내지 않고 **더하기만** 한다. + drank = bm25_rank("program_desc_fts") + for row, weight in _fts_rows( + con, + f"SELECT name, {drank} AS rank FROM program_desc_fts WHERE program_desc_fts MATCH ? " + f"ORDER BY {drank} LIMIT ?", + [], q, top_k * 3, + ): + add(row["name"], -float(row["rank"] or 0) * weight * _DESC_WEIGHT, + "요약 일치" if weight >= 1.0 else "동의어 확장") + + # 3) 이름/타이틀 LIKE 보조 + like = f"%{q.strip().upper()}%" + like_ko = f"%{q.strip()}%" + for row in con.execute( + "SELECT name FROM program WHERE name LIKE ? OR title_ko LIKE ? LIMIT ?", + (like, like_ko, top_k * 2), + ).fetchall(): + add(row["name"], 5.0, "이름/타이틀 일치") + + ranked = sorted(results.values(), key=lambda x: -x["score"])[:top_k] + out = [] + for r in ranked: + p = con.execute( + "SELECT p.name, p.devclass, p.title_ko, p.changed_on, p.has_source, p.summary_json, " + "COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass=p.devclass WHERE p.name=?", + (r["name"],), + ).fetchone() + summary = loads(p["summary_json"]) or {} + out.append( + { + "program": p["name"], + "devclass": p["devclass"], + "title_ko": p["title_ko"], + "changed_on": p["changed_on"], + "has_source": bool(p["has_source"]), + "purpose": (summary.get("business_purpose_ko") or "")[:200], + "reason": r["reason"], + } + ) + return out + finally: + con.close() + + +def _chunk_row(r: sqlite3.Row) -> dict: + return { + "chunk_id": r["chunk_id"], "program": r["program"], "include": r["include"], + "unit": r["unit_id"].split("#")[3] if r["unit_id"].count("#") >= 3 else r["unit_id"], + "unit_type": r["unit_id"].split("#")[2] if r["unit_id"].count("#") >= 3 else "", + "line_start": r["line_start"], "line_end": r["line_end"], "kind": r["kind"], + "purpose_ko": r["purpose_ko"], "purpose_en": r["purpose_en"], + "keywords_ko": loads(r["keywords_ko"]) or [], "keywords_en": loads(r["keywords_en"]) or [], + "sap_objects": loads(r["sap_objects"]) or [], + "tables_read": loads(r["tables_read"]) or [], "tables_write": loads(r["tables_write"]) or [], + "calls": loads(r["calls"]) or [], "confidence": r["confidence"], + } + + +def search_logic(q: str, top_k: int = 10, program: str | None = None, + kind: str | None = None) -> dict: + """로직 조각(logic_chunk) 검색 — 인덱스의 1차 단위. 결과는 프로그램 단위로 묶어 돌려준다. + + 반환: {"total": n, "programs": [{program, title_ko, purpose, score, chunks: [...]}]} + """ + con = connect() + try: + crank = bm25_rank("chunk_fts") + sql = (f"SELECT c.*, {crank} AS rank FROM chunk_fts f JOIN logic_chunk c " + f"ON c.chunk_id=f.chunk_id WHERE chunk_fts MATCH ?") + params: list[Any] = [] + if program: + sql += " AND c.program=?" + params.append(program.upper()) + if kind: + sql += " AND c.kind=?" + params.append(kind) + sql += f" ORDER BY {crank} LIMIT ?" + rows = _fts_rows(con, sql, params, q, top_k * 4) + grouped: dict[str, dict] = {} + for r, weight in rows: + g = grouped.get(r["program"]) + if not g: + p = con.execute( + "SELECT name, devclass, title_ko, summary_json FROM program WHERE name=?", (r["program"],) + ).fetchone() + summary = (loads(p["summary_json"]) or {}) if p else {} + g = grouped[r["program"]] = { + "program": r["program"], "devclass": p["devclass"] if p else None, + "title_ko": p["title_ko"] if p else "", + "purpose": (summary.get("business_purpose_ko") or "")[:200], + "score": 0.0, "chunks": [], + } + score = -float(r["rank"] or 0) * weight + g["score"] += score + if len(g["chunks"]) < top_k: + g["chunks"].append({ + **_chunk_row(r), "score": round(score, 3), + "matched_by": "원질의" if weight >= 1.0 else "동의어 확장", + }) + programs = sorted(grouped.values(), key=lambda g: -g["score"])[:top_k] + for g in programs: + g["score"] = round(g["score"], 3) + # total/matched_chunks 는 top_k*4 상한 안에서 매칭된 조각 수다(전체 건수가 아님). + # total 은 opencode-be 가 이미 쓰는 키라 이름을 유지하고, 뜻이 분명한 별칭을 함께 준다. + return {"total": len(rows), "matched_chunks": len(rows), "programs": programs, + "expansion": explain(q)} + finally: + con.close() + + +def get_chunk(chunk_id: str, with_decls: bool = True) -> dict: + """조각 메타 + 코드 원문 + **정의부**. + + `code` 는 로직만이다. 그대로 붙여넣으면 내부테이블·스트럭처 선언이 없어 문법 오류가 난다. + 그래서 `declarations`(선언 목록)와 `declaration_code`(붙여넣기용 한 덩어리)를 함께 준다 — + 쓸지 말지, 이름을 바꿀지는 붙여넣는 쪽이 정한다 (index/decls.py). + """ + con = connect() + try: + r = con.execute("SELECT * FROM logic_chunk WHERE chunk_id=?", (chunk_id,)).fetchone() + if not r: + raise NotFound(f"조각 '{chunk_id}' 이(가) 인덱스에 없습니다") + inc = con.execute("SELECT code FROM include WHERE program=? AND include=?", + (r["program"], r["include"])).fetchone() + code = "" + if inc and inc["code"]: + code = "\n".join(inc["code"].split("\n")[r["line_start"] - 1 : r["line_end"]]) + u = con.execute("SELECT name, unit_type, line_start, line_end FROM unit WHERE unit_id=?", + (r["unit_id"],)).fetchone() + out = _chunk_row(r) + out["unit_id"] = r["unit_id"] + out["unit_lines"] = f"{u['line_start']}-{u['line_end']}" if u else "" + out["code"] = code + if with_decls: + out.update(_decl_fields(decls_mod.for_chunk(con, r, code))) + return out + finally: + con.close() + + +def _decl_fields(d: dict) -> dict: + """index.decls 결과 → API 응답 필드.""" + return { + "declarations": [{k: v for k, v in x.items() if k != "depends"} for x in d["declarations"]], + "declaration_code": d["code"], + "declaration_count": d["count"], + "declaration_external_refs": d["external_refs"], # DDIC 등 — 선언을 가져갈 필요가 없다 + "declaration_params": d["params"], # FORM 파라미터 — 호출 측에서 들어온다 + "declaration_unresolved": d["unresolved"], # 선언을 못 찾은 이름 (수집 누락 가능) + "declaration_truncated": d["truncated"], + } + + +def list_chunks(program: str, unit_id: str | None = None) -> list[dict]: + con = connect() + try: + sql = "SELECT * FROM logic_chunk WHERE program=?" + params: list[Any] = [program.upper()] + if unit_id: + sql += " AND unit_id=?" + params.append(unit_id) + return [_chunk_row(r) for r in con.execute(sql + " ORDER BY include, line_start", params)] + finally: + con.close() + + +def search_units(q: str, program: str | None = None, top_k: int = 10) -> list[dict]: + con = connect() + try: + urank = bm25_rank("unit_fts") + sql = "SELECT unit_id, program, name, purpose FROM unit_fts WHERE unit_fts MATCH ?" + params: list[Any] = [] + if program: + sql += " AND program=?" + params.append(program.upper()) + sql += f" ORDER BY {urank} LIMIT ?" + return [ + {**dict(r), "matched_by": "원질의" if w >= 1.0 else "동의어 확장"} + for r, w in _fts_rows(con, sql, params, q, top_k) + ][:top_k] + finally: + con.close() + + +def _structure_summary(con: sqlite3.Connection, program: str) -> dict: + """LLM 요약이 없을 때 파서 구조 정보로 만드는 대체 요약.""" + units = con.execute( + "SELECT u.*, t.ord FROM unit u LEFT JOIN topo t ON t.unit_id=u.unit_id " + "WHERE u.program=? ORDER BY COALESCE(t.ord, 9999), u.include, u.line_start", + (program,), + ).fetchall() + tables_read, tables_write, external, sel_params, outputs = set(), set(), set(), [], set() + unit_list = [] + for u in units: + refs = loads(u["refs_json"]) or {} + tables_read.update(refs.get("tables_read", [])) + tables_write.update(refs.get("tables_write", [])) + outputs.update(refs.get("output_signals", [])) + sel_params.extend(refs.get("select_params", [])) + for c in refs.get("calls", []): + if c["kind"] in EXTERNAL_CALL_KINDS: + external.add(f"{c.get('program', '')}:{c['target']}".lstrip(":")) + if u["unit_type"] in {"FORM", "METHOD", "FUNCTION", "MODULE", "EVENT"}: + summ = loads(u["summary_json"]) or {} + unit_list.append( + { + "unit": u["name"], "unit_type": u["unit_type"], "include": u["include"], + "lines": f"{u['line_start']}-{u['line_end']}", "loc": u["loc"], + "purpose_ko": summ.get("purpose_ko") or clean_comment(u["header_comment"]), + "chunk_count": u["chunk_count"] or 0, + } + ) + chunks = [ + {"chunk_id": c["chunk_id"], "unit": c["unit_id"].split("#")[3] if c["unit_id"].count("#") >= 3 else "", + "include": c["include"], "lines": f"{c['line_start']}-{c['line_end']}", "kind": c["kind"], + "purpose_ko": c["purpose_ko"]} + for c in con.execute("SELECT * FROM logic_chunk WHERE program=? ORDER BY include, line_start", (program,)) + ] + # main_flow: 이벤트 unit + 직접 호출 FORM 나열 + flow = [] + for u in units: + if u["unit_type"] != "EVENT": + continue + refs = loads(u["refs_json"]) or {} + performs = [c["target"] for c in refs.get("calls", []) if c["kind"] == "perform"] + flow.append(f"{u['name']}: " + (" → ".join(performs[:8]) if performs else "(직접 처리)")) + return { + "units": unit_list, + "logic_chunks": chunks, + "main_flow": flow, + "selection_screen": sel_params[:30], + "tables_read": sorted(tables_read), + "tables_write": sorted(tables_write), + "external_calls": sorted(external)[:30], + "output_type": sorted(outputs), + } + + +def get_program_summary(name: str) -> dict: + con = connect() + try: + p = _program_or_404(con, name) + base = { + "program": p["name"], "devclass": p["devclass"], "title_ko": p["title_ko"], + "package_text": p["pkg_text"], "changed_on": p["changed_on"], + "has_source": bool(p["has_source"]), + "summary_status": p["summary_status"], + } + llm = loads(p["summary_json"]) + if llm: + base["summary"] = llm + if p["has_source"]: + base["structure"] = _structure_summary(con, p["name"]) + return base + finally: + con.close() + + +def get_program_source(name: str) -> dict: + con = connect() + try: + p = _program_or_404(con, name) + rows = con.execute( + "SELECT include, line_count, code FROM include WHERE program=? ORDER BY rowid", + (p["name"],), + ).fetchall() + if not rows: + raise NotFound(f"'{name}' 의 소스가 인덱스에 없습니다 (목록만 있는 프로그램)") + return { + "program": p["name"], "title_ko": p["title_ko"], + "includes": [{"include": r["include"], "line_count": r["line_count"], "code": r["code"]} for r in rows], + } + finally: + con.close() + + +def _find_unit(con: sqlite3.Connection, program: str, unit_name: str) -> sqlite3.Row: + un = unit_name.upper() + row = con.execute( + "SELECT * FROM unit WHERE program=? AND (UPPER(name)=? OR unit_id LIKE ?) " + "ORDER BY CASE unit_type WHEN 'FORM' THEN 0 WHEN 'METHOD' THEN 1 ELSE 2 END LIMIT 1", + (program, un, f"%#{un}"), + ).fetchone() + if not row: + cands = con.execute( + "SELECT name FROM unit WHERE program=? AND unit_type IN " + "('FORM','METHOD','FUNCTION','MODULE','EVENT') AND UPPER(name) LIKE ? LIMIT 10", + (program, f"%{un}%"), + ).fetchall() + hint = ", ".join(c["name"] for c in cands) or "(유사한 unit 없음)" + raise NotFound(f"unit '{unit_name}' 을 찾을 수 없습니다. 유사: {hint}") + return row + + +def get_unit_code(program: str, unit_name: str) -> dict: + con = connect() + try: + p = _program_or_404(con, program) + u = _find_unit(con, p["name"], unit_name) + inc = con.execute( + "SELECT code FROM include WHERE program=? AND include=?", (p["name"], u["include"]) + ).fetchone() + code = "" + if inc and inc["code"]: + lines = inc["code"].split("\n") + code = "\n".join(lines[u["line_start"] - 1 : u["line_end"]]) + chunks = [_chunk_row(c) for c in con.execute( + "SELECT * FROM logic_chunk WHERE unit_id=? ORDER BY seq", (u["unit_id"],))] + return { + "unit_id": u["unit_id"], "program": p["name"], "include": u["include"], + "unit_type": u["unit_type"], "name": u["name"], + "line_start": u["line_start"], "line_end": u["line_end"], + "summary": loads(u["summary_json"]), + "chunks": chunks, + "code": code, + **_decl_fields(decls_mod.resolve(con, p["name"], u["unit_id"], code, + self_include=u["include"], + self_range=(u["line_start"], u["line_end"]))), + } + finally: + con.close() + + +def get_declarations(program: str, scope: str | None = None) -> dict: + """프로그램의 정의부 전체 — 선언 카탈로그 (TOP 인클루드 전역 + FORM 로컬). + + 조각 단위로 필요한 만큼만 가져가는 것이 기본(get_chunk)이고, 이건 "이 프로그램의 선언을 + 통째로 보고 싶다"는 경우다. + """ + con = connect() + try: + p = _program_or_404(con, program) + rows = decls_mod.program_declarations(con, p["name"], scope) + return { + "program": p["name"], "count": len(rows), + "declarations": [{k: v for k, v in r.items() if k != "via"} for r in rows], + } + finally: + con.close() + + +def trace_variable(program: str, symbol: str) -> dict: + con = connect() + try: + p = _program_or_404(con, program) + sym = symbol.upper().split("-")[0].split("[")[0] + decls = [ + dict(r) for r in con.execute( + "SELECT name, scope, unit_id, decl_include, decl_line, type_text, ddic_ref, kind " + "FROM symbol WHERE program=? AND name=?", + (p["name"], sym), + ).fetchall() + ] + if not decls: + cands = con.execute( + "SELECT DISTINCT name FROM symbol WHERE program=? AND name LIKE ? LIMIT 10", + (p["name"], f"%{sym.strip('<>')}%"), + ).fetchall() + hint = ", ".join(c["name"] for c in cands) or "(유사한 심볼 없음)" + raise NotFound(f"심볼 '{symbol}' 선언을 찾을 수 없습니다. 유사: {hint}") + + topo_rank = { + r["unit_id"]: r["ord"] + for r in con.execute("SELECT unit_id, ord FROM topo WHERE program=?", (p["name"],)).fetchall() + } + + def unit_writes(sym_name: str, depth: int, seen: set[str]) -> list[dict]: + rows = con.execute( + "SELECT * FROM symbol_write WHERE program=? AND symbol=?", (p["name"], sym_name) + ).fetchall() + out = [] + for w in sorted(rows, key=lambda r: (topo_rank.get(r["unit_id"], 9999), r["line"])): + entry = { + "unit": w["unit_id"].split("#")[-1], + "unit_id": w["unit_id"], + "include": w["include"], + "line": w["line"], + "kind": w["kind"], + "stmt": w["stmt_text"], + "source_symbols": json.loads(w["source_symbols"] or "[]"), + "source_tables": json.loads(w["source_tables"] or "[]"), + } + if w["kind"].startswith("via_perform") and w["callee"] and depth < MAX_TRACE_DEPTH: + callee_key = f"{w['callee']}@{sym_name}" + if callee_key not in seen: + seen.add(callee_key) + entry["callee"] = w["callee"] + entry["callee_writes"] = _callee_writes(con, p["name"], w["callee"], depth + 1, seen, topo_rank) + out.append(entry) + return out + + def _callee_writes(con, program, callee, depth, seen, topo_rank) -> list[dict]: + # callee unit 내부의 쓰기 — 파라미터(kind=param) 심볼 우선, 없으면 전체 + u = con.execute( + "SELECT unit_id FROM unit WHERE program=? AND UPPER(name)=? AND unit_type='FORM' LIMIT 1", + (program, callee.upper()), + ).fetchone() + if not u: + return [] + params = { + r["name"] for r in con.execute( + "SELECT name FROM symbol WHERE program=? AND unit_id=? AND kind='param'", + (program, u["unit_id"]), + ).fetchall() + } + rows = con.execute( + "SELECT * FROM symbol_write WHERE unit_id=?", (u["unit_id"],) + ).fetchall() + selected = [r for r in rows if r["symbol"] in params] or list(rows)[:10] + out = [] + for w in sorted(selected, key=lambda r: r["line"]): + e = { + "unit": callee.upper(), "include": w["include"], "line": w["line"], + "symbol": w["symbol"], "kind": w["kind"], "stmt": w["stmt_text"], + "source_tables": json.loads(w["source_tables"] or "[]"), + } + if w["kind"].startswith("via_perform") and w["callee"] and depth < MAX_TRACE_DEPTH: + key = f"{w['callee']}@{w['symbol']}" + if key not in seen: + seen.add(key) + e["callee"] = w["callee"] + e["callee_writes"] = _callee_writes(con, program, w["callee"], depth + 1, seen, topo_rank) + out.append(e) + return out + + reads = con.execute( + "SELECT unit_id, include, line FROM symbol_read WHERE program=? AND symbol=? " + "ORDER BY line LIMIT 50", + (p["name"], sym), + ).fetchall() + + return { + "program": p["name"], + "symbol": sym, + "declarations": decls, + "writes": unit_writes(sym, 0, set()), + "reads": [dict(r) for r in reads], + } + finally: + con.close() + + +def get_call_graph(program: str, unit: str | None = None) -> dict: + con = connect() + try: + p = _program_or_404(con, program) + sql = "SELECT from_unit, to_unit, external_name, call_type, line FROM call_edge WHERE program=?" + params: list[Any] = [p["name"]] + if unit: + u = _find_unit(con, p["name"], unit) + sql += " AND (from_unit=? OR to_unit=?)" + params += [u["unit_id"], u["unit_id"]] + rows = con.execute(sql + " ORDER BY from_unit, line", params).fetchall() + edges = [ + { + "from": r["from_unit"].split("#")[-1], + "to": (r["to_unit"] or "").split("#")[-1] or r["external_name"], + "external": r["to_unit"] is None, + "call_type": r["call_type"], + "line": r["line"], + } + for r in rows + ] + return {"program": p["name"], "unit_filter": unit, "edges": edges[:500], "edge_count": len(edges)} + finally: + con.close() + + +def get_table_usage(table: str) -> dict: + con = connect() + try: + t = table.upper().strip() + rows = con.execute( + "SELECT tr.program, tr.unit_id, tr.mode, u.name AS unit_name, u.unit_type, p.title_ko " + "FROM table_ref tr JOIN unit u ON u.unit_id=tr.unit_id " + "JOIN program p ON p.name=tr.program WHERE tr.table_name=? ORDER BY tr.program", + (t,), + ).fetchall() + if not rows: + cands = con.execute( + "SELECT DISTINCT table_name FROM table_ref WHERE table_name LIKE ? LIMIT 10", + (f"%{t}%",), + ).fetchall() + return {"table": t, "usages": [], "similar_tables": [c["table_name"] for c in cands]} + return { + "table": t, + "usages": [ + {"program": r["program"], "title_ko": r["title_ko"], "unit": r["unit_name"], + "unit_type": r["unit_type"], "mode": r["mode"]} + for r in rows[:200] + ], + } + finally: + con.close() + + +def who_calls(program: str, unit: str) -> dict: + con = connect() + try: + p = _program_or_404(con, program) + u = _find_unit(con, p["name"], unit) + rows = con.execute( + "SELECT from_unit, call_type, line FROM call_edge WHERE to_unit=?", (u["unit_id"],) + ).fetchall() + ext = con.execute( + "SELECT program, from_unit, call_type, line FROM call_edge WHERE external_name LIKE ?", + (f"%{p['name']}:{u['name'].upper()}%",), + ).fetchall() + return { + "unit_id": u["unit_id"], + "callers": [{"from": r["from_unit"].split("#")[-1], "call_type": r["call_type"], "line": r["line"]} for r in rows] + + [{"from": f"{r['program']}:{r['from_unit'].split('#')[-1]}", "call_type": r["call_type"], "line": r["line"]} for r in ext], + } + finally: + con.close() diff --git a/summarize/__init__.py b/summarize/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/summarize/chunks.py b/summarize/chunks.py new file mode 100644 index 0000000..62a15ae --- /dev/null +++ b/summarize/chunks.py @@ -0,0 +1,154 @@ +"""로직 조각 후처리 — LLM 이 준 조각을 코드와 대조해 확정한다 (docs/logic-chunk-design.md). + +원칙: 사실은 파서가, 해석은 LLM 이. +- 줄 번호: first_line 앵커로 검증·보정, 실패하면 버림 +- 테이블 · 호출: 조각 코드 범위를 파서로 다시 돌려 채움 (LLM 값은 쓰지 않음) +- 해시: 조각 코드 sha256 +""" +from __future__ import annotations + +import hashlib +import re +from dataclasses import dataclass, field + +from parser.refs import extract_refs +from parser.statements import split_statements + +from .schemas import CHUNK_KINDS, LogicChunk + +MIN_LINES = 1 +_WS = re.compile(r"\s+") +_SQL_HEAD = re.compile( + r"^\s*(SELECT|OPEN\s+CURSOR|INSERT|UPDATE|MODIFY|DELETE|COMMIT\s+WORK|ROLLBACK\s+WORK|" + r"CALL\s+FUNCTION|CALL\s+TRANSACTION|CALL\s+METHOD|SUBMIT|PERFORM|AUTHORITY-CHECK|" + r"LOOP\s+AT|COLLECT|MESSAGE)\b", + re.I, +) + + +def _norm(s: str) -> str: + return _WS.sub(" ", (s or "").strip()).lower() + + +@dataclass +class ResolvedChunk: + seq: int + line_start: int + line_end: int + code: str + code_hash: str + kind: str + purpose_ko: str + purpose_en: str + keywords_ko: list[str] + keywords_en: list[str] + sap_objects: list[str] + tables_read: list[str] = field(default_factory=list) + tables_write: list[str] = field(default_factory=list) + calls: list[str] = field(default_factory=list) + confidence: float = 0.5 + + +def numbered_code(lines: list[str], line_start: int, line_end: int) -> str: + """include 전체 줄 목록에서 [line_start, line_end] 를 ' 12| code' 형식으로.""" + out = [] + for no in range(line_start, line_end + 1): + if 1 <= no <= len(lines): + out.append(f"{no:5d}| {lines[no - 1]}") + return "\n".join(out) + + +def parser_hints(lines: list[str], line_start: int, line_end: int, limit: int = 40) -> list[str]: + """DB 접근 · 호출 · 검증 문장이 시작되는 줄 — LLM 이 자를 후보 지점 힌트.""" + hints = [] + for no in range(line_start, line_end + 1): + if 1 <= no <= len(lines): + m = _SQL_HEAD.match(lines[no - 1]) + if m: + hints.append(f"L{no} {lines[no - 1].strip()[:80]}") + if len(hints) >= limit: + break + return hints + + +def _find_anchor(lines: list[str], anchor: str, lo: int, hi: int) -> int | None: + """[lo, hi] 안에서 anchor(정규화) 와 같은 줄 번호. 없으면 접두 일치.""" + a = _norm(anchor) + if not a: + return None + for no in range(lo, hi + 1): + if _norm(lines[no - 1]) == a: + return no + head = a[:20] + if len(head) >= 8: + for no in range(lo, hi + 1): + if _norm(lines[no - 1]).startswith(head): + return no + return None + + +def resolve_chunks(raw: list[LogicChunk], lines: list[str], unit_start: int, unit_end: int, + include: str, known_symbols: set[str]) -> tuple[list[ResolvedChunk], list[str]]: + """LLM 조각 → 검증·보정·사실 채움. 반환: (확정 조각(줄 순), 버린 사유 목록).""" + dropped: list[str] = [] + resolved: list[ResolvedChunk] = [] + seen_ranges: set[tuple[int, int]] = set() + + for c in raw: + s, e = int(c.line_start), int(c.line_end) + if e < s: + s, e = e, s + length = e - s + + # 1) 앵커 검증 — line_start 줄이 first_line 과 다르면 unit 안에서 찾아 보정 + if c.first_line: + ok = unit_start <= s <= unit_end and _norm(lines[s - 1]) == _norm(c.first_line) \ + if 1 <= s <= len(lines) else False + if not ok: + found = _find_anchor(lines, c.first_line, unit_start, unit_end) + if found is None: + dropped.append(f"L{s}-L{e}: first_line 을 unit 안에서 찾지 못함 ({c.first_line[:40]!r})") + continue + s, e = found, found + length + + # 2) 범위 클램프 + if s < unit_start or s > unit_end: + dropped.append(f"L{s}-L{e}: unit 범위(L{unit_start}-L{unit_end}) 밖") + continue + e = min(e, unit_end) + if e - s + 1 < MIN_LINES: + dropped.append(f"L{s}-L{e}: 너무 짧음") + continue + if (s, e) in seen_ranges: + dropped.append(f"L{s}-L{e}: 중복 범위") + continue + seen_ranges.add((s, e)) + + # 3) 코드 · 해시 · 파서 사실 + code = "\n".join(lines[s - 1 : e]) + stmts, _ = split_statements(code, include) + refs = extract_refs(stmts, list(range(len(stmts))), set(), known_symbols) + kind = c.kind if c.kind in CHUNK_KINDS else "other" + resolved.append(ResolvedChunk( + seq=0, line_start=s, line_end=e, code=code, + code_hash=hashlib.sha256(code.encode("utf-8")).hexdigest(), + kind=kind, purpose_ko=c.purpose_ko.strip(), purpose_en=c.purpose_en.strip(), + keywords_ko=list(dict.fromkeys(k.strip() for k in c.keywords_ko if k.strip()))[:15], + keywords_en=list(dict.fromkeys(k.strip() for k in c.keywords_en if k.strip()))[:15], + sap_objects=list(dict.fromkeys(k.strip().upper() for k in c.sap_objects if k.strip()))[:20], + tables_read=refs.tables_read, tables_write=refs.tables_write, + calls=[x["target"] for x in refs.calls][:20], + confidence=max(0.0, min(1.0, float(c.confidence))), + )) + + resolved.sort(key=lambda r: (r.line_start, r.line_end)) + for i, r in enumerate(resolved, 1): + r.seq = i + return resolved, dropped + + +def covered_lines(chunks: list[ResolvedChunk]) -> int: + covered: set[int] = set() + for c in chunks: + covered.update(range(c.line_start, c.line_end + 1)) + return len(covered) diff --git a/summarize/jobs.py b/summarize/jobs.py new file mode 100644 index 0000000..f166717 --- /dev/null +++ b/summarize/jobs.py @@ -0,0 +1,204 @@ +"""LLM 작업 큐 CLI — LLM 키 없이 요약/조각 추출을 돌리는 입구. + +`--llm file` 로 러너를 돌리면 프롬프트가 `data/llm_jobs/` 에 파일로 쌓인다. +사람이든 코딩 에이전트든 그 프롬프트를 읽고 응답 JSON 을 채워 넣으면, 러너를 다시 돌릴 때 +그 응답으로 파이프라인이 이어진다. + + # 1) 프롬프트 내놓기 (LLM 호출 0회) + python -m summarize.runner --llm file --program ZFIR10070 --limit 3 + + # 2) 대기 목록 보기 / 프롬프트 읽기 + python -m summarize.jobs list + python -m summarize.jobs show + + # 3) 응답 채우기 (스키마 검증 후 저장) + python -m summarize.jobs answer --file answer.json + python -m summarize.jobs answer --stdin < answer.json + + # 4) 같은 명령을 다시 — 이번엔 응답을 읽어 조각을 적재한다 + python -m summarize.runner --llm file --program ZFIR10070 --limit 3 + +`answer` 는 저장 전에 프롬프트의 [작업] 종류에 맞는 pydantic 스키마로 검증한다 — +잘못된 JSON 을 큐에 넣어두고 나중에 러너에서 실패하는 걸 막는다. +""" +from __future__ import annotations + +import argparse +import json +import re +import sys +from pathlib import Path + +from config.settings import settings + +from .llm_client import JOB_INDEX +from .schemas import ProgramSummary, UnitExtraction + +TASK_SCHEMA = {"program_summary": ProgramSummary, "extract_chunks": UnitExtraction} + + +def jobs_dir(override: str | None = None) -> Path: + return Path(override) if override else Path(settings.data_llm_jobs) + + +def _index_rows(d: Path) -> list[dict]: + idx = d / JOB_INDEX + if not idx.exists(): + return [] + rows = [] + for line in idx.read_text(encoding="utf-8").splitlines(): + if line.strip(): + try: + rows.append(json.loads(line)) + except json.JSONDecodeError: + continue + return rows + + +def _status(d: Path, row: dict) -> str: + return "answered" if (d / f"{row['job_id']}.response.json").exists() else "pending" + + +def task_of(d: Path, jid: str) -> str: + """프롬프트 파일에서 [작업] 종류를 읽는다.""" + p = d / f"{jid}.prompt.md" + if not p.exists(): + return "" + m = re.search(r"^\[작업\]\s*(\S+)", p.read_text(encoding="utf-8"), re.M) + return m.group(1) if m else "" + + +def cmd_list(args) -> int: + d = jobs_dir(args.dir) + rows = _index_rows(d) + if not rows: + print(f"작업이 없습니다: {d}\n먼저 실행: python -m summarize.runner --llm file --program --limit 3") + return 0 + shown = 0 + for r in rows: + st = _status(d, r) + if args.pending and st != "pending": + continue + print(f"{r['job_id']} {st:9s} {r.get('task',''):16s} {r.get('program','')} " + f"{r.get('unit_id','') or '(프로그램 요약)'}" + + (f" 창{r['window']}" if r.get("window") else "")) + shown += 1 + n_pending = sum(1 for r in rows if _status(d, r) == "pending") + print(f"\n총 {len(rows)}건 (표시 {shown}) — 대기 {n_pending}, 응답완료 {len(rows) - n_pending}") + return 0 + + +def cmd_show(args) -> int: + d = jobs_dir(args.dir) + p = d / f"{args.job_id}.prompt.md" + if not p.exists(): + print(f"프롬프트 없음: {p}", file=sys.stderr) + return 1 + sys.stdout.write(p.read_text(encoding="utf-8")) + return 0 + + +def cmd_answer(args) -> int: + d = jobs_dir(args.dir) + prompt = d / f"{args.job_id}.prompt.md" + if not prompt.exists(): + print(f"프롬프트 없음: {prompt}", file=sys.stderr) + return 1 + if args.stdin: + raw = sys.stdin.read() + else: + try: + raw = Path(args.file).read_text(encoding="utf-8") + except OSError as e: + print(f"응답 파일을 읽을 수 없습니다: {e}", file=sys.stderr) + return 1 + try: + data = json.loads(raw) + except json.JSONDecodeError as e: + s, e2 = raw.find("{"), raw.rfind("}") + if s < 0 or e2 <= s: + print(f"JSON 파싱 실패: {e}", file=sys.stderr) + return 1 + data = json.loads(raw[s : e2 + 1]) + + task = task_of(d, args.job_id) + schema = TASK_SCHEMA.get(task) + if schema and not args.no_validate: + try: + schema.model_validate(data) + except Exception as e: # noqa: BLE001 + print(f"[스키마 불일치] task={task}\n{e}", file=sys.stderr) + print("\n무시하고 저장하려면 --no-validate", file=sys.stderr) + return 1 + + out = d / f"{args.job_id}.response.json" + out.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8") + print(f"저장: {out} (task={task or '?'}, 검증={'skip' if args.no_validate else 'ok'})") + n_pending = sum(1 for r in _index_rows(d) if _status(d, r) == "pending") + print(f"남은 대기: {n_pending}건 — 전부 채우면 러너를 같은 옵션으로 다시 실행하세요") + return 0 + + +def cmd_stats(args) -> int: + d = jobs_dir(args.dir) + rows = _index_rows(d) + by_task: dict[str, list[int]] = {} + for r in rows: + t = r.get("task") or "?" + b = by_task.setdefault(t, [0, 0]) + b[0 if _status(d, r) == "pending" else 1] += 1 + print(json.dumps({ + "dir": str(d), + "total": len(rows), + "pending": sum(b[0] for b in by_task.values()), + "answered": sum(b[1] for b in by_task.values()), + "by_task": {k: {"pending": v[0], "answered": v[1]} for k, v in sorted(by_task.items())}, + }, ensure_ascii=False, indent=2)) + return 0 + + +def cmd_clear(args) -> int: + d = jobs_dir(args.dir) + n = 0 + for p in list(d.glob("*.prompt.md")) + list(d.glob("*.response.json")) + [d / JOB_INDEX]: + if p.exists() and (not args.answered_only or p.name.endswith(".response.json")): + p.unlink() + n += 1 + print(f"삭제 {n}개 파일 ({d})") + return 0 + + +def main() -> None: + ap = argparse.ArgumentParser(description="LLM 작업 큐 (키 없이 요약 돌리기)") + ap.add_argument("--dir", default=None, help=f"작업 디렉토리 (기본 {settings.data_llm_jobs})") + sub = ap.add_subparsers(dest="cmd", required=True) + + p = sub.add_parser("list", help="작업 목록") + p.add_argument("--pending", action="store_true", help="대기 중인 것만") + p.set_defaults(func=cmd_list) + + p = sub.add_parser("show", help="프롬프트 출력") + p.add_argument("job_id") + p.set_defaults(func=cmd_show) + + p = sub.add_parser("answer", help="응답 JSON 저장 (스키마 검증)") + p.add_argument("job_id") + g = p.add_mutually_exclusive_group(required=True) + g.add_argument("--file", help="응답 JSON 파일") + g.add_argument("--stdin", action="store_true", help="표준입력에서 읽기") + p.add_argument("--no-validate", action="store_true") + p.set_defaults(func=cmd_answer) + + p = sub.add_parser("stats", help="큐 통계") + p.set_defaults(func=cmd_stats) + + p = sub.add_parser("clear", help="큐 비우기") + p.add_argument("--answered-only", action="store_true") + p.set_defaults(func=cmd_clear) + + args = ap.parse_args() + sys.exit(args.func(args)) + + +if __name__ == "__main__": + main() diff --git a/summarize/llm_client.py b/summarize/llm_client.py new file mode 100644 index 0000000..44fe511 --- /dev/null +++ b/summarize/llm_client.py @@ -0,0 +1,269 @@ +"""LLM 클라이언트 추상화. 백엔드 3종 — api / file / fake. + +실제 모델 정보(LLM_BASE_URL/LLM_API_KEY/LLM_MODEL)는 환경변수에서만 읽는다 (계획서 §11.5). + +## 백엔드 + +- `api` : OpenAI 호환 `/chat/completions`. 429/5xx 는 지수 백오프로 재시도한다. +- `file` : **키 없이 돌리는 입구.** 프롬프트를 `data/llm_jobs/` 에 파일로 내놓고, 누군가(사람이든 + 에이전트든)가 응답 JSON 을 채워 넣으면 그걸 읽어 파이프라인을 계속한다. + 키가 없는 상태에서 몇 건만 실제 품질로 돌려보려면 이 경로를 쓴다 → `summarize/jobs.py` +- `fake` : 스키마만 맞는 더미. 파이프라인 배선 검증용(품질 검증 아님). +""" +from __future__ import annotations + +import hashlib +import json +import random +import re +import threading +import time +import urllib.error +import urllib.request +from pathlib import Path + +from config.settings import settings + + +class LLMClient: + def complete_json(self, system: str, user: str) -> dict: + raise NotImplementedError + + +class PendingResponse(Exception): + """file 백엔드에서 아직 응답이 채워지지 않은 프롬프트 — 실패가 아니라 '대기'다. + + runner 는 이걸 failed 로 기록하지 않고 대기 건수만 집계한다. + """ + + def __init__(self, job_id: str, prompt_path: Path, response_path: Path) -> None: + super().__init__(f"응답 대기: {job_id} → {response_path}") + self.job_id = job_id + self.prompt_path = prompt_path + self.response_path = response_path + + +def _extract_json(content: str) -> dict: + """모델이 코드펜스/서문을 붙이는 경우까지 감안해 JSON 을 뽑아낸다.""" + try: + return json.loads(content) + except json.JSONDecodeError: + s, e = content.find("{"), content.rfind("}") + if s >= 0 and e > s: + return json.loads(content[s : e + 1]) + raise + + +class OpenAICompatClient(LLMClient): + def __init__(self) -> None: + if not settings.llm_base_url or not settings.llm_api_key: + raise RuntimeError("LLM_BASE_URL / LLM_API_KEY 환경변수가 필요합니다") + self.base = settings.llm_base_url.rstrip("/") + self.key = settings.llm_api_key + self.model = settings.llm_model + # 호출 누적 사용량 — runner가 stats에 실어 보고한다 + self.usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0, + "retries": 0} + self._lock = threading.Lock() # 병렬 호출에서 usage 집계가 어긋나지 않게 + + def _post_once(self, system: str, user: str) -> dict: + body = { + "model": self.model, + "temperature": 0.1, + "messages": [ + {"role": "system", "content": system}, + {"role": "user", "content": user}, + ], + "response_format": {"type": "json_object"}, + } + if "openrouter" in self.base: + body["usage"] = {"include": True} # OpenRouter 확장 — usage.cost(USD 크레딧) 포함 + req = urllib.request.Request( + f"{self.base}/chat/completions", + data=json.dumps(body).encode("utf-8"), + headers={"Authorization": f"Bearer {self.key}", "Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=settings.llm_timeout_s) as res: + return json.loads(res.read().decode("utf-8")) + + def complete_json(self, system: str, user: str) -> dict: + """429/5xx 재시도 포함. 동시성을 올리면 429 가 늘어나므로 백오프가 필수다. + + (실측: 무료 티어에서 순차 실행만으로도 429 로 unit 6건이 failed 로 굳었다.) + """ + delay = settings.llm_backoff_base + last: Exception | None = None + for attempt in range(settings.llm_max_retries + 1): + try: + data = self._post_once(system, user) + break + except urllib.error.HTTPError as e: + last = e + retryable = e.code == 429 or 500 <= e.code < 600 + if not retryable or attempt >= settings.llm_max_retries: + raise + wait = delay + hdr = (e.headers or {}).get("Retry-After") if hasattr(e, "headers") else None + if hdr: + try: + wait = max(wait, float(hdr)) + except ValueError: + pass + time.sleep(min(wait, settings.llm_backoff_max) * (1 + random.random() * 0.25)) + delay *= 2 + with self._lock: + self.usage["retries"] += 1 + except (urllib.error.URLError, TimeoutError) as e: + last = e + if attempt >= settings.llm_max_retries: + raise + time.sleep(min(delay, settings.llm_backoff_max)) + delay *= 2 + with self._lock: + self.usage["retries"] += 1 + else: # pragma: no cover — 위 for 는 break/raise 로만 끝난다 + raise last or RuntimeError("LLM 호출 실패") + + u = data.get("usage") or {} + with self._lock: + self.usage["calls"] += 1 + self.usage["prompt_tokens"] += u.get("prompt_tokens", 0) + self.usage["completion_tokens"] += u.get("completion_tokens", 0) + self.usage["cost_usd"] += u.get("cost") or 0.0 + return _extract_json(data["choices"][0]["message"]["content"]) + + +# --------------------------------------------------------------------- file 백엔드 + +JOB_INDEX = "index.jsonl" + + +def job_id(system: str, user: str) -> str: + """프롬프트 내용으로 결정되는 id — 같은 프롬프트는 재실행해도 같은 파일을 가리킨다.""" + return hashlib.sha256((system + "\n\x00\n" + user).encode("utf-8")).hexdigest()[:16] + + +def _meta_from_prompt(user: str) -> dict: + """프롬프트 본문에서 작업 종류·프로그램·unit 을 긁어 index.jsonl 에 남긴다.""" + def grab(pattern: str) -> str: + m = re.search(pattern, user, re.M) + return m.group(1).strip() if m else "" + + return { + "task": grab(r"^\[작업\]\s*(\S+)"), + "program": grab(r"^\[프로그램\]\s*(\S+)"), + # UNIT_PROMPT 는 '[단위] unit_id: ...' 형태라 줄 앞에 [단위] 가 붙는다 + "unit_id": grab(r"^\[단위\]\s*unit_id:\s*(\S+)"), + "unit_type": grab(r"^unit_type:\s*(\w+)"), + "window": grab(r"지금은 (\d+)번째 창"), + } + + +class FileQueueLLM(LLMClient): + """프롬프트를 파일로 내놓고 응답 파일을 기다리는 백엔드 (키 불필요). + + complete_json 은 + - `.response.json` 이 있으면 그 JSON 을 돌려준다 (정상 경로) + - 없으면 `.prompt.md` 를 쓰고 PendingResponse 를 던진다 + + 응답 파일은 사람이 직접 채워도 되고, 코딩 에이전트가 프롬프트를 읽고 채워도 된다. + `python -m summarize.jobs` 가 목록·조회·검증 저장을 돕는다. + """ + + def __init__(self, jobs_dir: Path | None = None, *, emit: bool = True) -> None: + self.dir = Path(jobs_dir or settings.data_llm_jobs) + self.emit = emit + self.dir.mkdir(parents=True, exist_ok=True) + self.usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0, + "retries": 0} + self.pending: list[str] = [] + self.answered: list[str] = [] + self._lock = threading.Lock() + + def prompt_path(self, jid: str) -> Path: + return self.dir / f"{jid}.prompt.md" + + def response_path(self, jid: str) -> Path: + return self.dir / f"{jid}.response.json" + + def _write_prompt(self, jid: str, system: str, user: str) -> None: + meta = _meta_from_prompt(user) + header = [ + "", + "", + "## SYSTEM", "", system, "", "## USER", "", user, "", + ] + self.prompt_path(jid).write_text("\n".join(header), encoding="utf-8") + line = json.dumps({"job_id": jid, **meta, + "prompt": self.prompt_path(jid).name, + "response": self.response_path(jid).name}, ensure_ascii=False) + idx = self.dir / JOB_INDEX + existing = idx.read_text(encoding="utf-8").splitlines() if idx.exists() else [] + if not any(f'"job_id": "{jid}"' in ln for ln in existing): + with idx.open("a", encoding="utf-8") as f: + f.write(line + "\n") + + def complete_json(self, system: str, user: str) -> dict: + jid = job_id(system, user) + rp = self.response_path(jid) + if rp.exists(): + data = _extract_json(rp.read_text(encoding="utf-8")) + with self._lock: + self.usage["calls"] += 1 + self.answered.append(jid) + return data + with self._lock: + if self.emit: + self._write_prompt(jid, system, user) + self.pending.append(jid) + raise PendingResponse(jid, self.prompt_path(jid), rp) + + +class FakeLLM(LLMClient): + """테스트/드라이런용 — 프롬프트 종류([작업] 표식)에 맞는 최소 JSON 을 돌려준다. + + extract_chunks 는 코드의 첫 실행문 한 줄을 조각 하나로 만든다 (파이프라인 검증용). + """ + + def __init__(self) -> None: + self.usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0, + "retries": 0} + + def complete_json(self, system: str, user: str) -> dict: + self.usage["calls"] += 1 + task = "" + for line in user.splitlines(): + if line.startswith("[작업]"): + task = line.split("]", 1)[1].strip() + break + if task == "program_summary": + return {"program": "", "business_purpose_ko": "(fake) 프로그램 요약", "confidence": 0.0} + # extract_chunks — ' 12| code' 형식의 첫 코드 줄을 조각으로 + m = re.search(r"^\s*(\d+)\| (?!FORM |ENDFORM|METHOD |ENDMETHOD|FUNCTION |ENDFUNCTION|MODULE |ENDMODULE)(\S.*)$", + user, re.M) + chunks = [] + if m: + no, text = int(m.group(1)), m.group(2) + chunks.append({"line_start": no, "line_end": no, "first_line": text, "kind": "other", + "purpose_ko": "(fake) 조각", "confidence": 0.0}) + return {"unit_purpose_ko": "(fake) unit 요약", "chunks": chunks} + + +BACKENDS = ("api", "file", "fake") + + +def create_llm(fake: bool = False, backend: str | None = None, **kwargs) -> LLMClient: + """백엔드 선택. `backend` 가 우선이고, 하위호환으로 `fake=True` 도 받는다.""" + name = backend or ("fake" if fake else "api") + if name not in BACKENDS: + raise ValueError(f"알 수 없는 LLM 백엔드: {name} (가능: {', '.join(BACKENDS)})") + if name == "fake": + return FakeLLM() + if name == "file": + return FileQueueLLM(**kwargs) + return OpenAICompatClient() diff --git a/summarize/runner.py b/summarize/runner.py new file mode 100644 index 0000000..947962b --- /dev/null +++ b/summarize/runner.py @@ -0,0 +1,668 @@ +"""Stage 3 실행기 — 프로그램 요약 → unit 별 로직 조각 추출 (docs/logic-chunk-design.md). + +python -m summarize.runner [--program X] [--limit N] [--fake] [--dry-run] + +흐름 (프로그램마다): + 1. 프로그램 요약(ProgramSummary) — 없거나 stale 이거나 프롬프트 버전이 지났으면 생성 + 2. unit(FORM/METHOD/FUNCTION/MODULE/EVENT) 하나씩 → 프로그램 요약을 문맥으로 붙여 + LLM 이 로직 조각(LogicChunk) 을 골라낸다. 300줄 넘는 unit 은 파서 sub_chunks 창으로 나눠 호출. + 3. 조각은 summarize/chunks.py 로 검증(줄 앵커) · 사실 채움(파서) 후 logic_chunk / chunk_fts 에 저장. + +멱등성: unit.summary_status='done' 이고 prompt_version 이 같으면 스킵 (code_hash 가 바뀐 unit 은 +loader 가 재적재 시 상태를 초기화한다). LLM Key 미확보 상태에서는 --fake 로 파이프라인만 검증. +""" +from __future__ import annotations + +import argparse +import json +import re +import sqlite3 +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +from datetime import datetime, timezone + +from config.settings import settings +from index.db import bigrams, clean_comment, connect, loads, text_symbol_phrases +from index.loader import refresh_program_fts +from query.tools import _structure_summary + +from .chunks import ResolvedChunk, covered_lines, numbered_code, parser_hints, resolve_chunks +from .llm_client import PendingResponse, create_llm +from .schemas import CHUNK_KINDS, ProgramSummary, UnitExtraction + +PROMPT_VERSION = 2 +ELIGIBLE = ("FORM", "METHOD", "FUNCTION", "MODULE", "EVENT") +MAX_WINDOW_LINES = 300 # 이보다 긴 unit 은 창으로 나눠 LLM 에 보여준다 +FALLBACK_WINDOW = 250 # sub_chunks 가 없을 때의 고정 창 크기 +MAX_EVENT_CODE_LINES = 150 # 프로그램 요약에 넣는 이벤트 블록 코드 상한 + +SYSTEM_PROMPT = ( + "당신은 SAP ABAP 시니어 개발자다. 코드를 업무 관점으로 한국어로 설명한다. " + "SAP 표준 영어 용어(예: Goods Receipt, G/L Account)와 기술 객체명(테이블·FM·BAPI)은 함께 적는다. " + "추측이 필요한 부분은 confidence 를 낮추고 unclear 에 기록한다. 출력은 JSON 만." +) + +PROGRAM_PROMPT = """[작업] program_summary +다음 ABAP 프로그램을 업무 관점으로 요약하라. ProgramSummary JSON 스키마로만 답하라. + +[프로그램] {program} — {title} +[패키지] {devclass} {pkg_text} +[선택화면] {selection} +[텍스트 심볼] {text_symbols} + +[구조 사실 — 파서 추출] +주 흐름(이벤트 → PERFORM 체인): +{main_flow} +테이블 read: {tables_read} +테이블 write: {tables_write} +외부 호출: {external_calls} +출력 형태: {output_type} + +[unit 목록] (유형 이름 — 헤더 주석) +{unit_list} + +[이벤트 블록 코드 — 줄번호| 내용] +{event_code} + +[출력 JSON 스키마 — 아래 키만 사용] +{{"program": "{program}", "title_ko": "", "business_purpose_ko": "업무 목적 2~3문장", "business_purpose_en": "", + "main_flow": ["처리 순서를 업무 언어로"], "selection_screen": [{{"name": "", "desc_ko": ""}}], + "key_internal_tables": [{{"name": "", "filled_by": [], "consumed_by": [], "desc_ko": ""}}], + "output_type": [], "business_tags": [], "sap_module": "FI/CO/MM/SD 등", + "keywords_ko": ["한국어 검색 키워드"], "keywords_en": ["English search keywords"], + "related_tcodes": [], "notes": [], "confidence": 0.0, "unclear": []}} +""" + +UNIT_PROMPT = """[작업] extract_chunks +다음 ABAP 코드 단위에서 **업무적으로 의미 있는 로직 조각**을 골라내고 각각을 설명하라. +UnitExtraction JSON 스키마로만 답하라. + +[프로그램] {program} — {title} +[프로그램 요약] {program_purpose} +[주 흐름] {main_flow} +[핵심 내부테이블] {key_tables} + +[단위] unit_id: {unit_id} +unit_type: {unit_type}, name: {name} +signature: {signature} +header_comment: {header_comment} +{window_note} +[파서 힌트 — DB 접근 · 호출 · 검증이 시작되는 줄] +{hints} + +[텍스트 심볼] +{text_symbols} + +[코드 — 줄번호| 내용] +{code} + +[조각 선정 규칙] +- 조각 = 하나의 업무 로직을 이루는 연속된 줄 범위. 예: 특정 테이블 SELECT 와 그 직후 결과 정리(SORT/DELETE/LOOP 집계) + 까지가 한 로직이면 하나로 묶는다. BAPI/FM 호출은 파라미터 채우기 ~ 호출 ~ 결과 처리까지 한 조각. +- 조각으로 만들지 않고 버리는 것: 단순 선언(DATA/TYPES), 변수 초기화(CLEAR/REFRESH/FREE), ALV 필드카탈로그·레이아웃· + 컬럼 속성 설정, 화면 속성 LOOP AT SCREEN, 단순 이벤트 등록, 로그성 WRITE, 주석만 있는 구간. +- 조각은 서로 겹치지 않는다. 보통 3~80줄. FORM/METHOD 전체를 통째로 하나의 조각으로 만들지 않는다 + (내부에 로직이 하나뿐이면 그 로직 범위만). +- 의미 있는 조각이 없으면 chunks 를 빈 배열로 둔다. 그래도 unit_purpose_ko 는 채운다. +- line_start / line_end 는 위 코드에 붙은 줄번호 그대로. first_line 에는 line_start 줄의 코드를 그대로 복사한다. +- kind 는 다음 중 하나: {kinds} +- purpose_ko 는 "무엇을 왜 하는지" 한 문장(한국어). keywords_ko 는 업무 용어(입고, 반제, 잔액 …), + keywords_en 은 SAP 표준 영어 용어, sap_objects 는 테이블·FM·BAPI·클래스·T-Code 이름. + +[출력 JSON 스키마] +{{"unit_purpose_ko": "이 단위의 역할 한 문장", + "chunks": [{{"line_start": 0, "line_end": 0, "first_line": "", "kind": "sql_select", + "purpose_ko": "", "purpose_en": "", "keywords_ko": [], "keywords_en": [], "sap_objects": [], + "confidence": 0.0}}], + "unclear": []}} +""" + +_SELSCREEN = re.compile(r"^\s*(PARAMETERS?|SELECT-OPTIONS|SELECTION-SCREEN\s+BEGIN\s+OF\s+BLOCK)\b(.*)$", re.I) +_TEXT_SYM = re.compile(r"TEXT-(\w{3})", re.I) + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat(timespec="seconds") + + +def _j(v) -> str: + return json.dumps(v, ensure_ascii=False) + + +# ------------------------------------------------------------- 프로그램 요약 + +def _include_lines(con: sqlite3.Connection, program: str) -> dict[str, list[str]]: + return { + r["include"]: (r["code"] or "").split("\n") + for r in con.execute("SELECT include, code FROM include WHERE program=?", (program,)) + } + + +def _text_symbols(p: sqlite3.Row) -> dict[str, str]: + return {t["symbol"].upper(): t["text"] for t in (loads(p["text_symbols_json"]) or []) if t.get("symbol")} + + +def _program_context(con: sqlite3.Connection, p: sqlite3.Row, lines_by_inc: dict[str, list[str]]) -> dict: + structure = _structure_summary(con, p["name"]) + selection = [] + for inc_lines in lines_by_inc.values(): + for ln in inc_lines: + m = _SELSCREEN.match(ln) + if m: + selection.append(ln.strip()[:100]) + units = con.execute( + "SELECT * FROM unit WHERE program=? AND unit_type IN ('FORM','METHOD','FUNCTION','MODULE','EVENT') " + "ORDER BY include, line_start", (p["name"],)).fetchall() + unit_list = [ + f"{u['unit_type']} {u['name']} ({u['include']} L{u['line_start']}-{u['line_end']})" + + (f" — {clean_comment(u['header_comment'])}" if clean_comment(u["header_comment"]) else "") + for u in units[:150] + ] + event_code, budget = [], MAX_EVENT_CODE_LINES + for u in units: + if u["unit_type"] != "EVENT" or budget <= 0: + continue + lines = lines_by_inc.get(u["include"], []) + end = min(u["line_end"], u["line_start"] + budget - 1) + event_code.append(numbered_code(lines, u["line_start"], end)) + budget -= end - u["line_start"] + 1 + ts = _text_symbols(p) + return { + "structure": structure, + "selection": "; ".join(selection[:30]) or "-", + "text_symbols": "; ".join(f"{k}={v}" for k, v in list(ts.items())[:40]) or "-", + "unit_list": "\n".join(unit_list) or "-", + "event_code": "\n".join(event_code) or "-", + } + + +def ensure_program_summary(con: sqlite3.Connection, llm, p: sqlite3.Row, + lines_by_inc: dict[str, list[str]], dry_run: bool) -> tuple[dict, str]: + """프로그램 요약을 (필요하면) 생성하고 (summary dict, 상태) 를 돌려준다. + + 상태: done | skipped | failed | dry | pending(file 백엔드에서 응답 대기) + """ + existing = loads(p["summary_json"]) or {} + if p["summary_status"] == "done" and existing.get("prompt_version") == PROMPT_VERSION: + return existing, "skipped" + ctx = _program_context(con, p, lines_by_inc) + st = ctx["structure"] + prompt = PROGRAM_PROMPT.format( + program=p["name"], title=p["title_ko"] or "-", devclass=p["devclass"] or "-", pkg_text=p["pkg_text"] or "", + selection=ctx["selection"], text_symbols=ctx["text_symbols"], + main_flow="\n".join(st["main_flow"]) or "-", tables_read=_j(st["tables_read"][:40]), + tables_write=_j(st["tables_write"][:40]), external_calls=_j(st["external_calls"][:40]), + output_type=_j(st["output_type"]), unit_list=ctx["unit_list"], event_code=ctx["event_code"], + ) + if dry_run: + return existing, "dry" + try: + raw = llm.complete_json(SYSTEM_PROMPT, prompt) + except PendingResponse: + # file 백엔드 — 프롬프트만 내놓고 응답을 기다린다. 실패로 기록하지 않는다. + return existing, "pending" + try: + raw["program"] = p["name"] + summary = ProgramSummary.model_validate(raw) + summary.tables_read = st["tables_read"] + summary.tables_write = st["tables_write"] + summary.external_calls = st["external_calls"] + summary.output_type = summary.output_type or st["output_type"] + summary.title_ko = summary.title_ko or p["title_ko"] or "" + summary.prompt_version = PROMPT_VERSION + con.execute("UPDATE program SET summary_json=?, summary_status='done' WHERE name=?", + (summary.model_dump_json(), p["name"])) + con.commit() + return summary.model_dump(), "done" + except Exception as e: # noqa: BLE001 + con.execute("UPDATE program SET summary_status='failed' WHERE name=?", (p["name"],)) + con.commit() + print(f"[FAIL] program summary {p['name']}: {type(e).__name__}: {e}") + return existing, "failed" + + +# ------------------------------------------------------------- unit 조각 추출 + +def _windows(u: sqlite3.Row) -> list[tuple[int, int]]: + if u["loc"] <= MAX_WINDOW_LINES: + return [(u["line_start"], u["line_end"])] + subs = loads(u["sub_chunks_json"]) or [] + wins = [(s["line_start"], s["line_end"]) for s in subs if s["line_end"] >= s["line_start"]] + if not wins: + wins = [(a, min(a + FALLBACK_WINDOW - 1, u["line_end"])) + for a in range(u["line_start"], u["line_end"] + 1, FALLBACK_WINDOW)] + return wins + + +def _known_symbols(con: sqlite3.Connection, program: str, unit_id: str) -> set[str]: + """조각의 테이블·호출을 파서로 다시 뽑을 때 쓰는 '심볼이라 DB 테이블이 아니다' 집합. + + `TABLES:`/`NODES:` 로 선언된 DDIC 작업영역은 제외한다 — 넣으면 + `SELECT ... FROM zfit0060` 이 심볼로 오인돼 조각의 tables_read 가 비어버린다 + (parser/run.py 의 같은 가드와 기준을 맞춘다). + """ + return {r["name"] for r in con.execute( + "SELECT name FROM symbol WHERE program=? AND (scope='global' OR unit_id=?) " + "AND kind NOT IN ('tables','nodes')", (program, unit_id))} + + +def _store_chunks(con: sqlite3.Connection, u: sqlite3.Row, chunks: list[ResolvedChunk], + text_symbols: dict[str, str] | None = None) -> None: + for r in con.execute("SELECT chunk_id FROM logic_chunk WHERE unit_id=?", (u["unit_id"],)).fetchall(): + con.execute("DELETE FROM chunk_fts WHERE chunk_id=?", (r["chunk_id"],)) + con.execute("DELETE FROM logic_chunk WHERE unit_id=?", (u["unit_id"],)) + now = _now() + for c in chunks: + chunk_id = f"{u['unit_id']}#C{c.seq}" + con.execute( + "INSERT INTO logic_chunk(chunk_id, program, include, unit_id, seq, line_start, line_end, code_hash, " + "kind, purpose_ko, purpose_en, keywords_ko, keywords_en, sap_objects, tables_read, tables_write, " + "calls, confidence, prompt_version, extracted_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + (chunk_id, u["program"], u["include"], u["unit_id"], c.seq, c.line_start, c.line_end, c.code_hash, + c.kind, c.purpose_ko, c.purpose_en, _j(c.keywords_ko), _j(c.keywords_en), _j(c.sap_objects), + _j(c.tables_read), _j(c.tables_write), _j(c.calls), c.confidence, PROMPT_VERSION, now), + ) + # 조각 코드에 쓰인 TEXT-nnn 의 한국어 원문을 색인에 넣는다 (수정사항 3번) — + # LLM 설명과 무관하게 화면 문구로도 조각에 도달할 수 있어야 한다. + ts_phrases = text_symbol_phrases(c.code, text_symbols or {}) + keywords = " ".join(c.keywords_ko + c.keywords_en + [c.kind] + ts_phrases) + objects = " ".join(c.sap_objects + c.tables_read + c.tables_write + c.calls) + con.execute( + "INSERT INTO chunk_fts(chunk_id, program, purpose, keywords, objects, bigrams) VALUES(?,?,?,?,?,?)", + (chunk_id, u["program"], f"{c.purpose_ko} {c.purpose_en}".strip(), keywords, objects, + bigrams(f"{c.purpose_ko} {' '.join(c.keywords_ko)} {' '.join(ts_phrases)}")), + ) + + +def build_unit_prompts(con: sqlite3.Connection, u: sqlite3.Row, program_summary: dict, + title: str, lines: list[str], text_symbols: dict[str, str]) -> list[dict]: + """unit 의 창별 프롬프트를 만든다 (DB 읽기 — 메인 스레드 전용). + + LLM 호출을 병렬화하려면 '프롬프트 조립(DB) → 호출(병렬) → 저장(DB)' 으로 갈라야 한다. + sqlite 커넥션은 스레드 간 공유가 안 되기 때문이다. + """ + windows = _windows(u) + out: list[dict] = [] + for wi, (ws, we) in enumerate(windows, 1): + code = numbered_code(lines, ws, we) + used_ts = {m.group(1).upper() for m in _TEXT_SYM.finditer(code)} + ts_lines = [f"TEXT-{k} = {text_symbols[k]}" for k in sorted(used_ts) if k in text_symbols] + prompt = UNIT_PROMPT.format( + program=u["program"], title=title or "-", + program_purpose=program_summary.get("business_purpose_ko") or "(요약 없음 — 구조 사실만 참고)", + main_flow=" → ".join(program_summary.get("main_flow") or [])[:600] or "-", + key_tables=", ".join(f"{t.get('name')}({t.get('desc_ko', '')})" + for t in (program_summary.get("key_internal_tables") or [])[:10]) or "-", + unit_id=u["unit_id"], unit_type=u["unit_type"], name=u["name"], signature=u["signature"] or "-", + header_comment=clean_comment(u["header_comment"]) or "-", + window_note=(f"[창] 이 단위는 길어서 {len(windows)}개 창으로 나눠 보여준다. 지금은 {wi}번째 창 " + f"(L{ws}-L{we}). 이 창 안의 줄만 조각으로 만들라." if len(windows) > 1 else ""), + hints="\n".join(parser_hints(lines, ws, we)) or "-", + text_symbols="\n".join(ts_lines) or "-", code=code, kinds=", ".join(CHUNK_KINDS), + ) + out.append({"window": (ws, we), "prompt": prompt}) + return out + + +def finish_unit(con: sqlite3.Connection, u: sqlite3.Row, calls: list[dict], lines: list[str], + text_symbols: dict[str, str]) -> dict: + """창별 LLM 응답 → 검증·저장 (DB 쓰기 — 메인 스레드 전용). + + calls 원소: {window, prompt, raw?, error?, pending?} + 한 창이라도 pending 이면 아무것도 저장하지 않는다 (부분 저장 방지). + """ + if any(c.get("pending") for c in calls): + return {"status": "pending", "chunks": 0, "dropped": 0} + errors = [c["error"] for c in calls if c.get("error")] + if errors: + raise errors[0] + + known = _known_symbols(con, u["program"], u["unit_id"]) + all_chunks: list[ResolvedChunk] = [] + dropped_all: list[str] = [] + unit_purpose = "" + for c in calls: + ws, we = c["window"] + ext = UnitExtraction.model_validate(c["raw"]) + unit_purpose = unit_purpose or ext.unit_purpose_ko.strip() + chunks, dropped = resolve_chunks(ext.chunks, lines, ws, we, u["include"], known) + all_chunks.extend(chunks) + dropped_all.extend(dropped) + + all_chunks.sort(key=lambda c: (c.line_start, c.line_end)) + for i, c in enumerate(all_chunks, 1): + c.seq = i + _store_chunks(con, u, all_chunks, text_symbols) + covered = covered_lines(all_chunks) + thin = { + "purpose_ko": unit_purpose or clean_comment(u["header_comment"]), + "chunk_count": len(all_chunks), "covered_lines": covered, + "coverage": round(covered / u["loc"], 3) if u["loc"] else 0.0, + "dropped": dropped_all[:10], + } + _mark_unit_done(con, u, thin, len(all_chunks)) + con.commit() + return {"status": "done", "chunks": len(all_chunks), "dropped": len(dropped_all)} + + +def _mark_unit_done(con: sqlite3.Connection, u: sqlite3.Row, thin: dict, n_chunks: int) -> None: + con.execute( + "UPDATE unit SET summary_json=?, summary_status='done', prompt_version=?, chunk_count=?, " + "summary_error=NULL WHERE unit_id=?", + (_j(thin), PROMPT_VERSION, n_chunks, u["unit_id"]), + ) + text = " ".join(filter(None, [u["name"], u["signature"] or "", thin["purpose_ko"]])) + con.execute("UPDATE unit_fts SET purpose=?, bigrams=? WHERE unit_id=?", + (thin["purpose_ko"], bigrams(text), u["unit_id"])) + + +def clone_unit_chunks(con: sqlite3.Connection, rep: sqlite3.Row, target: sqlite3.Row) -> int: + """code_hash 가 같은 unit 으로 조각을 복제한다 (수정사항 6번). + + _BAK / _COPY 관행 때문에 같은 코드가 여러 프로그램에 그대로 들어 있다. 대표 unit 1건만 + LLM 에 보내고 나머지는 여기서 만든다 (실측 샘플: 중복 그룹 108개, 호출 179회 절감). + + 코드는 같아도 include 안에서의 **줄 위치는 다르다** — line_start 차이만큼 평행이동한다. + """ + shift = target["line_start"] - rep["line_start"] + src = con.execute("SELECT * FROM logic_chunk WHERE unit_id=? ORDER BY seq", (rep["unit_id"],)).fetchall() + for r in con.execute("SELECT chunk_id FROM logic_chunk WHERE unit_id=?", (target["unit_id"],)).fetchall(): + con.execute("DELETE FROM chunk_fts WHERE chunk_id=?", (r["chunk_id"],)) + con.execute("DELETE FROM logic_chunk WHERE unit_id=?", (target["unit_id"],)) + + for r in src: + chunk_id = f"{target['unit_id']}#C{r['seq']}" + con.execute( + "INSERT INTO logic_chunk(chunk_id, program, include, unit_id, seq, line_start, line_end, code_hash, " + "kind, purpose_ko, purpose_en, keywords_ko, keywords_en, sap_objects, tables_read, tables_write, " + "calls, confidence, prompt_version, extracted_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + (chunk_id, target["program"], target["include"], target["unit_id"], r["seq"], + r["line_start"] + shift, r["line_end"] + shift, r["code_hash"], + r["kind"], r["purpose_ko"], r["purpose_en"], r["keywords_ko"], r["keywords_en"], + r["sap_objects"], r["tables_read"], r["tables_write"], r["calls"], + r["confidence"], PROMPT_VERSION, _now()), + ) + f = con.execute("SELECT purpose, keywords, objects, bigrams FROM chunk_fts WHERE chunk_id=?", + (r["chunk_id"],)).fetchone() + if f: + con.execute( + "INSERT INTO chunk_fts(chunk_id, program, purpose, keywords, objects, bigrams) " + "VALUES(?,?,?,?,?,?)", + (chunk_id, target["program"], f["purpose"], f["keywords"], f["objects"], f["bigrams"]), + ) + + thin = dict(loads(rep["summary_json"]) or {}) + thin["cloned_from"] = rep["unit_id"] + _mark_unit_done(con, target, thin, len(src)) + return len(src) + + +# ------------------------------------------------------------------ 배치 진입점 + +def _model_label(fake: bool, backend: str | None) -> str: + """llm_usage_log·대시보드에 남길 '무엇이 요약을 만들었나' 라벨. + + 환경변수의 LLM_MODEL 을 그대로 쓰면 안 된다 — file 백엔드로 사람·에이전트가 채운 결과를 + 쓰지도 않은 모델 이름으로 기록하게 된다(실측: file 백엔드 실행이 'z-ai/glm-5.2:free' 로 남았다). + """ + name = backend or ("fake" if fake else "api") + if name == "fake": + return "fake" + if name == "file": + return "file(사람·에이전트 응답)" + return settings.llm_model + + +def _llm_call(llm, system: str, prompt: str) -> dict: + """스레드에서 도는 부분 — DB 를 건드리지 않는다. 예외는 값으로 돌려준다.""" + try: + return {"raw": llm.complete_json(system, prompt)} + except PendingResponse as e: + return {"pending": True, "job_id": e.job_id} + except Exception as e: # noqa: BLE001 — 호출 실패는 unit 단위로 기록하고 계속 + return {"error": e} + + +def _run_calls_parallel(llm, calls: list[dict], concurrency: int) -> None: + """calls 각 원소의 'prompt' 를 호출하고 결과를 그 자리에 채운다 (in-place).""" + if not calls: + return + if concurrency <= 1 or len(calls) == 1: + for c in calls: + c.update(_llm_call(llm, SYSTEM_PROMPT, c["prompt"])) + return + with ThreadPoolExecutor(max_workers=min(concurrency, len(calls))) as ex: + futures = {ex.submit(_llm_call, llm, SYSTEM_PROMPT, c["prompt"]): c for c in calls} + for fut in as_completed(futures): + futures[fut].update(fut.result()) + + +def _dedupe_plan(con: sqlite3.Connection, pending: list[sqlite3.Row]) -> tuple[list[sqlite3.Row], dict]: + """(LLM 에 보낼 대표 unit 목록, {대표 unit_id: [복제 대상 unit...]}) (수정사항 6번) + + 이미 done 이고 조각이 있는 unit 과 code_hash 가 같으면 LLM 호출 없이 바로 복제한다. + + **배치 전체를 한 번에 넘겨야 한다.** 프로그램별로 나눠 호출하면 공용 인클루드 + (ZFICOM/ZFIALV 처럼 17개 프로그램에 그대로 복사된 코드)가 서로 다른 호출에 흩어져 + 중복이 잡히지 않는다 — 실측에서 절감 0회가 나왔다. 프로그램 안의 중복은 드물고 + 절감분은 거의 전부 프로그램을 가로지르는 중복이다. + """ + reps: list[sqlite3.Row] = [] + followers: dict[str, list[sqlite3.Row]] = {} + rep_by_hash: dict[str, sqlite3.Row] = {} + + for u in pending: + h = u["code_hash"] + if not h: + reps.append(u) + continue + if h in rep_by_hash: + followers.setdefault(rep_by_hash[h]["unit_id"], []).append(u) + continue + # 이번 배치 밖에서 이미 추출된 동일 코드 unit 이 있으면 그걸 대표로 쓴다 (호출 0회) + done = con.execute( + "SELECT * FROM unit WHERE code_hash=? AND unit_id!=? AND summary_status='done' " + "AND prompt_version=? AND chunk_count>0 LIMIT 1", + (h, u["unit_id"], PROMPT_VERSION), + ).fetchone() + if done: + followers.setdefault(done["unit_id"], []).append(u) + rep_by_hash[h] = done + continue + rep_by_hash[h] = u + reps.append(u) + return reps, followers + + +def summarize_units(program: str | None, limit: int | None, fake: bool = False, dry_run: bool = False, + trigger: str = "manual", backend: str | None = None, + concurrency: int | None = None, dedupe: bool = True) -> dict: + """프로그램(들)의 요약 + unit 조각 추출을 실행한다. 이름은 API 호환을 위해 유지.""" + con = connect() + llm = create_llm(fake=fake, backend=backend) + conc = max(1, concurrency or settings.llm_concurrency) + stats = {"programs": 0, "program_summaries": 0, "done": 0, "skipped": 0, "failed": 0, + "cloned": 0, "awaiting_response": 0, "chunks": 0, "dropped": 0, "llm_calls_saved": 0, + "elapsed_s": 0} + t0 = time.time() + run_id: int | None = None + try: + sql = ("SELECT p.*, COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass=p.devclass WHERE p.has_source=1") + params: list = [] + if program: + sql += " AND p.name=?" + params.append(program.upper()) + programs = con.execute(sql + " ORDER BY p.name", params).fetchall() + + # 대상 unit 수집 (leaf 부터 — topo 역순) + pending: list[sqlite3.Row] = [] + for p in programs: + rows = con.execute( + "SELECT u.*, t.ord FROM unit u LEFT JOIN topo t ON t.unit_id=u.unit_id " + "WHERE u.program=? AND u.unit_type IN ('FORM','METHOD','FUNCTION','MODULE','EVENT') " + "ORDER BY COALESCE(t.ord, 9999) DESC", (p["name"],)).fetchall() + for u in rows: + if u["summary_status"] == "done" and u["prompt_version"] == PROMPT_VERSION: + stats["skipped"] += 1 + else: + pending.append(u) + if limit: + pending = pending[:limit] + # 주의: "pending" = 이번 실행의 대상 unit 수(기존 의미, API/대시보드가 사용). + # file 백엔드의 '응답 대기' 는 별 키인 "awaiting_response" 다. + stats["pending"] = len(pending) + + # 중복 제거는 **배치 전체**를 대상으로 한 번만 세운다 (프로그램별로 나누면 공용 + # 인클루드의 교차 중복이 잡히지 않는다). LLM 은 대표 unit 만 보고, 나머지는 복제한다. + reps, followers = _dedupe_plan(con, pending) if dedupe else (pending, {}) + stats["llm_calls_saved"] = sum(len(v) for v in followers.values()) + + pending_by_prog: dict[str, list[sqlite3.Row]] = {} + for u in reps: + pending_by_prog.setdefault(u["program"], []).append(u) + + needs_summary = {p["name"] for p in programs if not ( + p["summary_status"] == "done" and (loads(p["summary_json"]) or {}).get("prompt_version") == PROMPT_VERSION)} + if (pending or needs_summary) and not dry_run: + cur = con.execute( + "INSERT INTO llm_usage_log(ts, program, model, trigger_by, status, total, " + "calls, prompt_tokens, completion_tokens, cost_usd, done, failed, skipped, elapsed_s, chunks) " + "VALUES(datetime('now','localtime'),?,?,?,'running',?,0,0,0,0.0,0,0,?,0,0)", + (program or "*", _model_label(fake, backend), trigger, len(pending), stats["skipped"]), + ) + run_id = cur.lastrowid + con.commit() + + for p in programs: + units = pending_by_prog.get(p["name"], []) + if not units and p["name"] not in needs_summary: + continue + stats["programs"] += 1 + lines_by_inc = _include_lines(con, p["name"]) + summary, st = ensure_program_summary(con, llm, p, lines_by_inc, dry_run) + if st == "done": + stats["program_summaries"] += 1 + elif st == "pending": + # 프로그램 요약은 unit 프롬프트의 **문맥**이다 (2단계 설계). 요약이 아직 없는데 + # unit 프롬프트를 내놓으면 "(요약 없음)" 으로 만들어진 프롬프트를 받게 되고, + # 요약이 채워진 다음 패스에서 프롬프트 내용이 달라져 전부 다시 답해야 한다. + # 그래서 요약이 대기 중이면 이 프로그램의 unit 은 이번 패스에서 건너뛴다. + stats["awaiting_response"] += 1 + stats["blocked_units"] = stats.get("blocked_units", 0) + len(units) + continue + text_symbols = _text_symbols(p) + + if dry_run: + continue + + # 1) 프롬프트 조립 (DB 읽기, 메인 스레드) — units 는 이미 대표 unit 만 들어 있다 + jobs: list[tuple[sqlite3.Row, list[dict]]] = [] + for u in units: + prompts = build_unit_prompts(con, u, summary, p["title_ko"] or "", + lines_by_inc.get(u["include"], []), text_symbols) + jobs.append((u, [dict(x) for x in prompts])) + + # 2) LLM 호출 (병렬, DB 접근 없음) — 수정사항 10번 + _run_calls_parallel(llm, [c for _, calls in jobs for c in calls], conc) + + # 3) 검증·저장 (DB 쓰기, 메인 스레드) + for u, calls in jobs: + lines = lines_by_inc.get(u["include"], []) + try: + r = finish_unit(con, u, calls, lines, text_symbols) + except Exception as e: # noqa: BLE001 + err = f"{type(e).__name__}: {e}"[:500] + con.execute("UPDATE unit SET summary_status='failed', summary_error=? WHERE unit_id=?", + (err, u["unit_id"])) + con.commit() + stats["failed"] += 1 + print(f"[FAIL] {u['unit_id']}: {err}") + continue + if r["status"] == "pending": + stats["awaiting_response"] += 1 + continue + stats["done"] += 1 + stats["chunks"] += r["chunks"] + stats["dropped"] += r["dropped"] + con.commit() + + if run_id is not None: + _update_run(con, run_id, stats, llm, t0, status="running") + + # ---- 복제 패스: code_hash 가 같은 나머지 unit 에 조각을 복제한다 (LLM 호출 없음) ---- + # 대표와 복제 대상이 서로 다른 프로그램일 수 있어 프로그램 루프가 끝난 뒤에 돈다. + touched_programs = {p["name"] for p in programs if pending_by_prog.get(p["name"])} + if not dry_run: + for rep_id, targets in followers.items(): + rep_row = con.execute("SELECT * FROM unit WHERE unit_id=?", (rep_id,)).fetchone() + if not rep_row or rep_row["summary_status"] != "done": + continue # 대표가 아직 안 끝났다(응답 대기·실패) — 다음 실행에서 복제된다 + for tgt in targets: + stats["chunks"] += clone_unit_chunks(con, rep_row, tgt) + stats["cloned"] += 1 + touched_programs.add(tgt["program"]) + con.commit() + + # 요약·조각이 생긴 프로그램의 색인을 다시 만든다 (수정사항 1번) — 단건 경로 + for name in sorted(touched_programs): + refresh_program_fts(con, name) + con.commit() + finally: + if run_id is not None: + stats["elapsed_s"] = round(time.time() - t0, 1) + _update_run(con, run_id, stats, llm, t0, status="done") + con.close() + if hasattr(llm, "usage"): + stats["llm_usage"] = llm.usage + stats["elapsed_s"] = round(time.time() - t0, 1) + return stats + + +def _update_run(con, run_id: int, stats: dict, llm, t0: float, status: str) -> None: + u = getattr(llm, "usage", None) or {} + con.execute( + "UPDATE llm_usage_log SET status=?, calls=?, prompt_tokens=?, completion_tokens=?, " + "cost_usd=?, done=?, failed=?, skipped=?, elapsed_s=?, chunks=? WHERE id=?", + (status, u.get("calls", 0), u.get("prompt_tokens", 0), u.get("completion_tokens", 0), + u.get("cost_usd", 0.0), stats["done"], stats["failed"], stats["skipped"], + round(time.time() - t0, 1), stats["chunks"], run_id), + ) + con.commit() + + +def main() -> None: + ap = argparse.ArgumentParser( + description="Stage 3 — 프로그램 요약 + 로직 조각 추출", + epilog="LLM 키가 없으면: --llm file 로 프롬프트를 파일로 내놓고 " + "python -m summarize.jobs 로 응답을 채운 뒤 같은 명령을 다시 실행한다.", + ) + ap.add_argument("--program", default=None) + ap.add_argument("--limit", type=int, default=None, help="처리할 unit 수 상한") + ap.add_argument("--llm", choices=["api", "file", "fake"], default=None, + help="api=환경변수 키로 호출 / file=프롬프트 파일 큐(키 불필요) / fake=더미") + ap.add_argument("--fake", action="store_true", help="--llm fake 의 하위호환 별칭") + ap.add_argument("--concurrency", type=int, default=None, + help=f"동시 LLM 호출 수 (기본 LLM_CONCURRENCY={settings.llm_concurrency})") + ap.add_argument("--no-dedupe", action="store_true", + help="code_hash 가 같은 unit 도 각각 LLM 에 보낸다 (기본은 대표 1건만)") + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + stats = summarize_units( + args.program, args.limit, fake=args.fake, dry_run=args.dry_run, + backend=args.llm, concurrency=args.concurrency, dedupe=not args.no_dedupe, + ) + print(json.dumps(stats, ensure_ascii=False)) + if stats.get("pending"): + print(f"\n응답 대기 {stats['awaiting_response']}건 — 프롬프트: {settings.data_llm_jobs}\n" + f" python -m summarize.jobs list --pending\n" + f" python -m summarize.jobs show \n" + f" python -m summarize.jobs answer --file <응답.json>\n" + f" → 응답을 채운 뒤 같은 명령을 다시 실행하면 적재된다.") + if stats.get("blocked_units"): + print(f"\nunit {stats['blocked_units']}건은 프로그램 요약을 문맥으로 쓰므로 대기 중이다 — " + f"먼저 program_summary 작업에 답하고 다시 실행하면 unit 프롬프트가 나온다.") + + +if __name__ == "__main__": + main() diff --git a/summarize/schemas.py b/summarize/schemas.py new file mode 100644 index 0000000..dbb47a6 --- /dev/null +++ b/summarize/schemas.py @@ -0,0 +1,78 @@ +"""Stage 3 — LLM 출력 스키마 (docs/logic-chunk-design.md). pydantic 검증. + +- ProgramSummary : 프로그램 1건 요약 (unit 추출의 문맥으로도 쓰임) +- UnitExtraction : unit 하나에서 LLM 이 골라낸 로직 조각 목록 + unit 한 줄 요약 +- LogicChunk : 로직 조각 하나 — 인덱스의 1차 단위 +""" +from __future__ import annotations + +from pydantic import BaseModel, Field + +CHUNK_KINDS = ( + "sql_select", # DB 조회 (SELECT / OPEN CURSOR) + "db_write", # DB 갱신 (INSERT / UPDATE / MODIFY / DELETE / COMMIT) + "fm_call", # BAPI · 펑션모듈 · RFC · 메서드 호출로 업무 처리 + "aggregation", # 내부테이블 집계 · 가공 · 병합 (LOOP / COLLECT / SORT …) + "validation", # 입력 검증 · 권한 체크 · 존재 확인 + "calculation", # 금액 · 수량 · 환율 · 날짜 계산 + "output", # ALV · 리스트 · 화면 · 파일 · 메일 출력 + "interface", # 외부 시스템 송수신 (파일 · IDoc · HTTP · RFC destination) + "control_flow", # 처리 흐름 분기 · 하위 로직 호출 순서 + "other", +) + + +class LogicChunk(BaseModel): + """LLM 이 반환하는 조각. line_* 는 include 기준 줄 번호(코드에 붙여 준 번호 그대로).""" + line_start: int + line_end: int + first_line: str = "" # line_start 줄의 코드 원문 — 줄 번호 검증용 앵커 + kind: str = "other" + purpose_ko: str + purpose_en: str = "" + keywords_ko: list[str] = Field(default_factory=list) + keywords_en: list[str] = Field(default_factory=list) + sap_objects: list[str] = Field(default_factory=list) # 테이블 · FM · BAPI · 클래스 · T-Code + confidence: float = 0.5 + + +class UnitExtraction(BaseModel): + unit_purpose_ko: str = "" # unit 한 줄 요약 — 얇은 색인용 (조각이 없어도 채운다) + chunks: list[LogicChunk] = Field(default_factory=list) + unclear: list[str] = Field(default_factory=list) + + +class SelectionParam(BaseModel): + name: str + desc_ko: str = "" + + +class KeyInternalTable(BaseModel): + name: str + filled_by: list[str] = Field(default_factory=list) + consumed_by: list[str] = Field(default_factory=list) + desc_ko: str = "" + + +class ProgramSummary(BaseModel): + program: str + title_ko: str = "" + business_purpose_ko: str = "" + business_purpose_en: str = "" + main_flow: list[str] = Field(default_factory=list) + selection_screen: list[SelectionParam] = Field(default_factory=list) + key_internal_tables: list[KeyInternalTable] = Field(default_factory=list) + tables_read: list[str] = Field(default_factory=list) # 파서 값으로 덮어씀 + tables_write: list[str] = Field(default_factory=list) # 파서 값으로 덮어씀 + external_calls: list[str] = Field(default_factory=list) # 파서 값으로 덮어씀 + output_type: list[str] = Field(default_factory=list) + business_tags: list[str] = Field(default_factory=list) + proposed_tags: list[str] = Field(default_factory=list) + sap_module: str = "" + keywords_ko: list[str] = Field(default_factory=list) + keywords_en: list[str] = Field(default_factory=list) + related_tcodes: list[str] = Field(default_factory=list) + notes: list[str] = Field(default_factory=list) + confidence: float = 0.5 + unclear: list[str] = Field(default_factory=list) + prompt_version: int = 0 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..a153567 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,21 @@ +"""테스트 공용 격리. + +`/ingest` 는 적재 후 백그라운드로 요약 → **위키 생성**까지 이어 돌린다. TestClient 는 백그라운드 +작업을 동기로 실행하므로, `wiki_dir` 을 격리하지 않은 테스트가 실제 `wiki/` 에 파일을 쓸 수 있다 +(실제로 `wiki/programs/ZBK_T1.md` 가 새어 나온 적이 있다). + +테스트가 직접 monkeypatch 하면 그 값이 이기므로(autouse 가 먼저 적용된다) 안전망으로만 동작한다. +""" +from __future__ import annotations + +import pytest + +from config.settings import settings + + +@pytest.fixture(autouse=True) +def _isolate_writable_dirs(tmp_path_factory, monkeypatch): + base = tmp_path_factory.mktemp("isolated") + monkeypatch.setattr(settings, "wiki_dir", base / "wiki") + monkeypatch.setattr(settings, "data_llm_jobs", base / "llm_jobs") + yield diff --git a/tests/test_chunks.py b/tests/test_chunks.py new file mode 100644 index 0000000..c417ce2 --- /dev/null +++ b/tests/test_chunks.py @@ -0,0 +1,72 @@ +"""로직 조각 후처리(summarize/chunks.py) — 줄 앵커 검증·보정, 파서 사실 채움, 버림 규칙.""" +from __future__ import annotations + +from summarize.chunks import numbered_code, parser_hints, resolve_chunks +from summarize.schemas import LogicChunk + +CODE = """REPORT ztest. +FORM select_data. + CLEAR gt_t001. + SELECT bukrs waers FROM t001 + INTO TABLE gt_t001 + WHERE bukrs IN s_bukrs. + SORT gt_t001 BY bukrs. + CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' + EXPORTING amount = lv_amt. +ENDFORM.""".split("\n") +UNIT = (2, 10) + + +def _chunk(**kw) -> LogicChunk: + base = {"line_start": 4, "line_end": 7, "first_line": "SELECT bukrs waers FROM t001", + "kind": "sql_select", "purpose_ko": "회사코드별 통화 조회", "confidence": 0.8} + base.update(kw) + return LogicChunk(**base) + + +def test_exact_anchor_and_parser_facts(): + chunks, dropped = resolve_chunks([_chunk()], CODE, *UNIT, "ZTEST", known_symbols={"GT_T001"}) + assert dropped == [] + c = chunks[0] + assert (c.line_start, c.line_end, c.seq) == (4, 7, 1) + assert c.tables_read == ["T001"] # LLM 이 아니라 파서가 채운 값 + assert c.code.startswith(" SELECT bukrs") + assert len(c.code_hash) == 64 + + +def test_anchor_shift_corrects_line_numbers(): + """LLM 이 줄 번호를 2줄 어긋나게 줘도 first_line 으로 보정된다.""" + chunks, dropped = resolve_chunks([_chunk(line_start=6, line_end=9)], CODE, *UNIT, "ZTEST", set()) + assert dropped == [] + assert (chunks[0].line_start, chunks[0].line_end) == (4, 7) + + +def test_unfindable_anchor_is_dropped(): + chunks, dropped = resolve_chunks( + [_chunk(first_line="SELECT * FROM nowhere_table_xyz")], CODE, *UNIT, "ZTEST", set()) + assert chunks == [] and len(dropped) == 1 + + +def test_out_of_unit_range_dropped_and_end_clamped(): + chunks, dropped = resolve_chunks( + [_chunk(line_start=1, line_end=3, first_line="REPORT ztest."), # unit 밖 → 버림 + _chunk(line_start=8, line_end=40, first_line="CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'", + kind="fm_call", purpose_ko="환율 변환 BAPI 호출")], # 끝은 unit 끝으로 클램프 + CODE, *UNIT, "ZTEST", set()) + assert len(dropped) == 1 and dropped[0].startswith("L1-L3") + assert (chunks[0].line_start, chunks[0].line_end) == (8, 10) + assert "BAPI_CURRENCY_CONV_TO_EXTERNAL" in chunks[0].calls + + +def test_unknown_kind_falls_back_and_duplicates_dropped(): + chunks, dropped = resolve_chunks([_chunk(kind="weird"), _chunk()], CODE, *UNIT, "ZTEST", set()) + assert len(chunks) == 1 and chunks[0].kind == "other" + assert any("중복" in d for d in dropped) + + +def test_numbered_code_and_hints(): + txt = numbered_code(CODE, 2, 4) + assert txt.splitlines()[0].startswith(" 2| FORM select_data.") + hints = parser_hints(CODE, *UNIT) + assert any(h.startswith("L4 SELECT") for h in hints) + assert any("CALL FUNCTION" in h for h in hints) diff --git a/tests/test_declarations.py b/tests/test_declarations.py new file mode 100644 index 0000000..4c19891 --- /dev/null +++ b/tests/test_declarations.py @@ -0,0 +1,194 @@ +"""정의부(선언) 수집·조립 — parser/declarations.py, index/decls.py. + +인덱스의 코드 원문은 로직만이라, 붙여넣으려면 선언이 따로 필요하다. 여기서 지키는 것: + 1. 잘라낸 선언 원문이 **그대로 붙여넣을 수 있는 한 문장**일 것 (체인 항목도) + 2. `BEGIN OF … END OF` 구조는 한 덩어리일 것 + 3. 의존을 따라가되(`LIKE GT_DATA` → GT_DATA) 사전 타입 참조(`LIKE BSEG-WRBTR`)는 끌어오지 말 것 + 4. 조각 안에 이미 있는 선언은 다시 붙이지 말 것 +""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +from index import decls as decls_mod +from parser.declarations import extract_declaration_blocks, type_name_after, type_refs +from parser.statements import split_statements + +TOP = """REPORT zdecl_t1. +TYPES: BEGIN OF ty_item, + matnr TYPE matnr, + menge TYPE menge_d, + END OF ty_item, + ty_items TYPE STANDARD TABLE OF ty_item. + +TABLES: bseg. + +DATA: gt_items TYPE ty_items, + gs_item TYPE ty_item, + gv_cnt TYPE i. + +DATA: BEGIN OF gt_log OCCURS 0, + msg(80) TYPE c, + END OF gt_log. + +CONSTANTS gc_bwart TYPE bwart VALUE '101'. +FIELD-SYMBOLS TYPE ty_item. +""" + +FORM_CODE = """FORM collect_items. + DATA lv_local TYPE i. + LOOP AT gt_items INTO gs_item. + lv_local = lv_local + 1. + ADD gs_item-menge TO gv_cnt. + ENDLOOP. + IF gv_cnt > 0. + gt_log-msg = gc_bwart. + APPEND gt_log. + ENDIF. +ENDFORM. +""" + + +def _blocks(src: str): + sts, _ = split_statements(src, "ZDECL_T1TOP") + return {d.name: d for d in extract_declaration_blocks( + sts, list(range(len(sts))), src.split("\n"), "ZDECL_T1TOP", "global")} + + +# ------------------------------------------------------------------ 파서 + + +def test_chain_item_is_pasteable(): + """체인 항목은 헤드(`DATA:`)를 다시 붙이고 ',' 를 '.' 로 닫아야 유효한 문장이 된다.""" + d = _blocks(TOP)["GS_ITEM"] + assert d.code.startswith("DATA:") + assert d.code.rstrip().endswith(".") + assert "gs_item" in d.code and "gv_cnt" not in d.code # 형제 항목이 딸려오지 않는다 + + +def test_begin_of_block_is_one_declaration(): + d = _blocks(TOP)["TY_ITEM"] + assert d.kind == "types" + assert "BEGIN OF ty_item" in d.code and d.code.rstrip().endswith("END OF ty_item.") + assert d.line_end - d.line_start == 3 + + +def test_declaration_dependencies(): + b = _blocks(TOP) + assert b["TY_ITEMS"].depends == ["TY_ITEM"] + assert b["GT_ITEMS"].depends == ["TY_ITEMS"] + assert b["TY_ITEM"].depends == ["MATNR", "MENGE_D"] # DDIC — 프로그램 안에는 없다 + + +@pytest.mark.parametrize("expr,expected", [ + ("TYPE ANY", None), # 이름 없는 타입식 — 뒤 토큰을 삼키면 안 된다 + ("TYPE STANDARD TABLE OF TY_X", "TY_X"), + ("TYPE REF TO LCL_Y", "LCL_Y"), + ("LIKE GT_DATA", "GT_DATA"), + ("TYPE C", "C"), +]) +def test_type_name_after(expr, expected): + assert type_name_after(expr.split(), 0)[0] == expected + + +def test_type_any_does_not_swallow_next_token(): + """`USING p_a TYPE ANY pv_b TYPE x` 의 pv_b 를 타입으로 오인하면 파라미터가 사라진다.""" + _name, nxt = type_name_after("TYPE ANY PV_CLASS TYPE SETHIER-SETCLASS".split(), 0) + assert "TYPE ANY PV_CLASS TYPE SETHIER-SETCLASS".split()[nxt] == "PV_CLASS" + + +def test_type_refs_keeps_ddic_component(): + assert type_refs("DATA LV_X LIKE BSEG-WRBTR".split()) == ["BSEG-WRBTR"] + + +def test_deferred_class_is_not_a_block(): + """`CLASS x DEFINITION DEFERRED.` 뒤의 선언이 살아 있어야 한다 (ENDCLASS 가 없다).""" + src = ("CLASS lcl_a DEFINITION DEFERRED.\n" + "DATA go_ref TYPE REF TO lcl_a.\n") + assert "GO_REF" in _blocks(src) + + +def test_form_signature_params(): + """타입이 붙은 파라미터가 여러 개여도 전부 잡아야 한다.""" + from parser.dataflow import extract_declarations + + sig = "USING P_DATE LIKE P0001-BEGDA P_DAYS LIKE T5A4A-DLYDY CHANGING P_OUT TYPE ANY" + names = [d.name for d in extract_declarations([], [], "U1", "unit", unit_type="FORM", signature=sig)] + assert names == ["P_DATE", "P_DAYS", "P_OUT"] + + +# ------------------------------------------------------------------ 조립 (DB) + + +@pytest.fixture() +def client(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "llm_base_url", "") + c = TestClient(api.app) + payload = { + "MAIN_PROGRAM": "ZDECL_T1", + "DESCRIPTION": "정의부 테스트", + "INCLUDE_PROGRAM": [ + {"INCLUDE": "ZDECL_T1TOP", "SOURCE_CODE": TOP}, + {"INCLUDE": "ZDECL_T1F01", "SOURCE_CODE": FORM_CODE}, + ], + } + assert c.post("/ingest", json=payload).json()["status"] == "loaded" + return c + + +def test_program_declarations_endpoint(client): + r = client.get("/programs/ZDECL_T1/declarations").json() + names = {d["name"] for d in r["declarations"]} + assert {"TY_ITEM", "TY_ITEMS", "GT_ITEMS", "GT_LOG", "GC_BWART", ""} <= names + assert r["count"] == len(r["declarations"]) + + +def test_unit_code_carries_declarations(client): + r = client.get("/programs/ZDECL_T1/units/COLLECT_ITEMS/code").json() + picked = [d["name"] for d in r["declarations"]] + # 쓰인 것 + 그 의존까지 (GT_ITEMS → TY_ITEMS → TY_ITEM) + assert {"GT_ITEMS", "TY_ITEMS", "TY_ITEM", "GS_ITEM", "GV_CNT", "GT_LOG", "GC_BWART"} <= set(picked) + # 의존이 먼저 나와야 그대로 붙여넣어 컴파일된다 + assert picked.index("TY_ITEM") < picked.index("TY_ITEMS") < picked.index("GT_ITEMS") + # unit 안에서 선언된 로컬 변수는 이미 코드에 있으므로 다시 붙이지 않는다 + assert "LV_LOCAL" not in picked + assert "DATA: BEGIN OF gt_log" in r["declaration_code"] + + +def test_ddic_field_reference_is_not_a_work_area(client): + """`LIKE BSEG-WRBTR` 은 사전 타입 참조다 — `TABLES: bseg` 를 딸려오게 하면 안 된다.""" + from index.db import connect + + con = connect() + try: + d = decls_mod.resolve(con, "ZDECL_T1", None, " DATA lv_amt LIKE bseg-wrbtr.") + assert [x["name"] for x in d["declarations"]] == [] + assert "BSEG" in d["external_refs"] + # 반면 작업영역을 실제로 쓰면 선언이 필요하다 + d2 = decls_mod.resolve(con, "ZDECL_T1", None, " bseg-wrbtr = 100.") + assert [x["name"] for x in d2["declarations"]] == ["BSEG"] + finally: + con.close() + + +def test_unresolved_reports_missing_declaration(client): + from index.db import connect + + con = connect() + try: + d = decls_mod.resolve(con, "ZDECL_T1", None, " gv_missing = 1.") + assert d["unresolved"] == ["GV_MISSING"] + # 호출문의 형식 파라미터·예외 이름은 '선언 없음'이 아니다 + d2 = decls_mod.resolve( + con, "ZDECL_T1", None, + " CALL FUNCTION 'Z_X' EXPORTING i_bukrs = gv_cnt EXCEPTIONS no_rate_found = 1.") + assert d2["unresolved"] == [] + finally: + con.close() diff --git a/tests/test_dedupe_parallel.py b/tests/test_dedupe_parallel.py new file mode 100644 index 0000000..10f81f8 --- /dev/null +++ b/tests/test_dedupe_parallel.py @@ -0,0 +1,246 @@ +"""중복 unit 조각 복제(수정사항 6번)와 병렬 실행(10번), 요약→색인 반영(1번)·텍스트심볼 색인(3번). + +_BAK / _COPY 관행 때문에 같은 코드가 여러 프로그램에 그대로 들어 있다. code_hash 가 같으면 +대표 1건만 LLM 에 보내고 나머지는 조각을 평행이동해 복제한다. +""" +from __future__ import annotations + +import threading + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +from index.db import connect, loads +import summarize.runner as runner + +BODY = ( + "FORM select_t001.\n" + " SELECT * FROM t001 INTO TABLE gt_t001.\n" + " SORT gt_t001 BY bukrs.\n" + "ENDFORM.\n" +) + +# 같은 FORM 을 서로 다른 줄 위치에 둔 두 프로그램 — 복제 시 줄 평행이동이 필요하다 +ORIG = { + "MAIN_PROGRAM": "ZDUP_A", + "DESCRIPTION": "원본", + "TEXT_SYMBOL": [{"SYMBOL": "001", "TEXT": "회사코드 목록 조회"}], + "INCLUDE_PROGRAM": [{"INCLUDE": "ZDUP_A", "SOURCE_CODE": "REPORT zdup_a.\n" + BODY}], +} +COPY = { + "MAIN_PROGRAM": "ZDUP_A_COPY", + "DESCRIPTION": "복사본", + "INCLUDE_PROGRAM": [{ + "INCLUDE": "ZDUP_A_COPY", + # 앞에 주석 3줄을 더 넣어 FORM 시작 줄을 밀어낸다 + "SOURCE_CODE": "REPORT zdup_a_copy.\n* c1\n* c2\n* c3\n" + BODY, + }], +} + + +class CountingLLM: + """호출 수와 호출 스레드를 기록하는 스텁.""" + + def __init__(self) -> None: + self.usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0} + self.unit_calls: list[str] = [] + self.threads: set[str] = set() + self._lock = threading.Lock() + + def complete_json(self, system: str, user: str) -> dict: + with self._lock: + self.usage["calls"] += 1 + self.threads.add(threading.current_thread().name) + if "[작업] program_summary" in user: + return {"program": "x", "business_purpose_ko": "회사코드 마스터를 조회하는 테스트 리포트", + "main_flow": ["회사코드 조회"], "business_tags": ["마스터관리"], + "keywords_ko": ["회사코드", "마스터"], "keywords_en": ["company code"], + "sap_module": "FI", "confidence": 0.8} + with self._lock: + self.unit_calls.append(user) + if "name: SELECT_T001" in user: + return {"unit_purpose_ko": "회사코드 마스터를 읽는다", + "chunks": [{"line_start": 2, "line_end": 3, + "first_line": "SELECT * FROM t001 INTO TABLE gt_t001.", + "kind": "sql_select", "purpose_ko": "회사코드 마스터(T001) 전체 조회", + "keywords_ko": ["회사코드"], "keywords_en": ["company code"], + "sap_objects": ["T001"], "confidence": 0.9}]} + return {"unit_purpose_ko": "요약", "chunks": []} + + +@pytest.fixture() +def two_programs(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "llm_base_url", "") + c = TestClient(api.app) + for payload in (ORIG, COPY): + assert c.post("/ingest", json=payload).json()["status"] == "loaded" + return c + + +def _chunks(con, program: str): + return con.execute( + "SELECT unit_id, line_start, line_end, purpose_ko, code_hash FROM logic_chunk " + "WHERE program=? ORDER BY seq", (program,) + ).fetchall() + + +def test_duplicate_units_share_one_llm_call(two_programs, monkeypatch): + llm = CountingLLM() + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: llm) + stats = runner.summarize_units(None, None, trigger="test") + + # SELECT_T001 은 두 프로그램에 동일 코드로 있다 → unit 추출 호출은 1회뿐 + select_prompts = [u for u in llm.unit_calls if "name: SELECT_T001" in u] + assert len(select_prompts) == 1, "같은 code_hash 는 대표 1건만 호출해야 한다" + assert stats["cloned"] == 1 + assert stats["llm_calls_saved"] == 1 + + con = connect() + try: + a, b = _chunks(con, "ZDUP_A"), _chunks(con, "ZDUP_A_COPY") + assert len(a) == 1 and len(b) == 1 + # 코드가 같으므로 조각 해시와 설명은 같고, 줄 번호는 주석 3줄만큼 밀려 있어야 한다 + assert a[0]["code_hash"] == b[0]["code_hash"] + assert a[0]["purpose_ko"] == b[0]["purpose_ko"] + assert b[0]["line_start"] - a[0]["line_start"] == 3 + assert b[0]["line_end"] - a[0]["line_end"] == 3 + # 복제 사실을 unit 요약에 남긴다 + tgt = con.execute("SELECT summary_json, chunk_count, summary_status FROM unit " + "WHERE program='ZDUP_A_COPY' AND name='SELECT_T001'").fetchone() + assert tgt["summary_status"] == "done" and tgt["chunk_count"] == 1 + assert loads(tgt["summary_json"])["cloned_from"].startswith("ZDUP_A#") + # 복제된 조각도 검색 가능해야 한다 + n = con.execute("SELECT COUNT(*) c FROM chunk_fts WHERE program='ZDUP_A_COPY'").fetchone()["c"] + assert n == 1 + finally: + con.close() + + +def test_cloned_chunk_lines_point_at_same_code(two_programs, monkeypatch): + """복제된 줄 범위가 실제로 같은 코드를 가리키는지 원문으로 확인한다.""" + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: CountingLLM()) + runner.summarize_units(None, None, trigger="test") + con = connect() + try: + out = {} + for prog in ("ZDUP_A", "ZDUP_A_COPY"): + c = _chunks(con, prog)[0] + code = con.execute("SELECT code FROM include WHERE program=? AND include=?", + (prog, prog)).fetchone()["code"].split("\n") + out[prog] = "\n".join(code[c["line_start"] - 1 : c["line_end"]]) + assert out["ZDUP_A"] == out["ZDUP_A_COPY"] + assert "SELECT * FROM t001" in out["ZDUP_A"] + finally: + con.close() + + +def test_no_dedupe_flag_calls_each_unit(two_programs, monkeypatch): + llm = CountingLLM() + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: llm) + stats = runner.summarize_units(None, None, trigger="test", dedupe=False) + assert len([u for u in llm.unit_calls if "name: SELECT_T001" in u]) == 2 + assert stats["cloned"] == 0 + + +def test_parallel_and_serial_give_same_result(two_programs, monkeypatch): + llm = CountingLLM() + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: llm) + stats = runner.summarize_units(None, None, trigger="test", concurrency=4) + assert stats["failed"] == 0 and stats["chunks"] >= 1 + # 동시성 4로 돌렸으면 워커 스레드에서 호출돼야 한다 (unit 이 2개 이상일 때) + assert llm.threads, "호출 스레드가 기록돼야 한다" + + +def test_summary_and_text_symbol_reach_program_index(two_programs, monkeypatch): + """수정사항 1·3 — 요약 문장과 텍스트 심볼 한국어로 프로그램이 검색돼야 한다.""" + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: CountingLLM()) + runner.summarize_units(None, None, trigger="test") + from query import tools + + by_purpose = [r["program"] for r in tools.search_programs("마스터를 조회하는 테스트", top_k=5)] + assert "ZDUP_A" in by_purpose, "요약 본문이 program_fts 에 반영돼야 한다" + + by_tag = [r["program"] for r in tools.search_programs("마스터관리", top_k=5)] + assert "ZDUP_A" in by_tag, "business_tags 가 색인돼야 한다" + + by_text_symbol = [r["program"] for r in tools.search_programs("회사코드 목록 조회", top_k=5)] + assert "ZDUP_A" in by_text_symbol, "텍스트 심볼 한국어가 색인돼야 한다" + + +def test_long_summary_does_not_outrank_title_match(tmp_path, monkeypatch): + """회귀 방지 — 요약을 붙인 프로그램이 타이틀만 있는 프로그램에 밀리면 안 된다. + + bm25 는 행 전체 길이로 정규화한다. 짧은 타이틀과 긴 요약을 한 FTS 행에 넣었더니 + 타이틀이 정확히 일치하는 프로그램이 1위 → 33위로 밀렸다. 그래서 색인을 + program_fts(이름·타이틀) / program_desc_fts(서술) 로 분리했다. + """ + import query.api as api + from index.loader import refresh_program_fts + from query import tools + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'i.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "n") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "p") + monkeypatch.setattr(settings, "llm_base_url", "") + c = TestClient(api.app) + + src = "REPORT z.\nSTART-OF-SELECTION.\n WRITE 1." + # 타이틀이 정확히 일치하는 프로그램 (요약 있음, 매우 김) + c.post("/ingest", json={"MAIN_PROGRAM": "ZTITLE_HIT", "DESCRIPTION": "총계정원장 조회", + "INCLUDE_PROGRAM": [{"INCLUDE": "ZTITLE_HIT", "SOURCE_CODE": src}]}) + # 타이틀만 있는 경쟁 프로그램들 (요약 없음, 매우 짧음) + for i in range(4): + c.post("/ingest", json={"MAIN_PROGRAM": f"ZSHORT{i}", "DESCRIPTION": "총계정원장(월별)", + "INCLUDE_PROGRAM": [{"INCLUDE": f"ZSHORT{i}", "SOURCE_CODE": src}]}) + + con = connect() + try: + long_summary = { + "program": "ZTITLE_HIT", "business_purpose_ko": "회사코드와 회계기간 조건으로 " * 30, + "main_flow": ["단계 " + "설명 " * 20] * 6, + "keywords_ko": [f"키워드{i}" for i in range(40)], + "business_tags": ["총계정원장", "계정잔액"], "sap_module": "FI", "prompt_version": 2, + } + con.execute("UPDATE program SET summary_json=?, summary_status='done' WHERE name='ZTITLE_HIT'", + (__import__("json").dumps(long_summary, ensure_ascii=False),)) + refresh_program_fts(con) + con.commit() + finally: + con.close() + + found = [r["program"] for r in tools.search_programs("총계정원장 조회하는 프로그램", top_k=5)] + assert "ZTITLE_HIT" in found, f"긴 요약 때문에 타이틀 일치가 밀렸다: {found}" + assert found[0] == "ZTITLE_HIT", f"타이틀 정확 일치가 1위여야 한다: {found}" + + +def test_unit_fts_purpose_has_no_decoration(tmp_path, monkeypatch): + """수정사항 1 — 적재 시점 unit_fts.purpose 에 '----' 장식이 들어가면 안 된다.""" + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'i.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "n") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "p") + monkeypatch.setattr(settings, "llm_base_url", "") + c = TestClient(api.app) + c.post("/ingest", json={ + "MAIN_PROGRAM": "ZDECO", + "INCLUDE_PROGRAM": [{"INCLUDE": "ZDECO", "SOURCE_CODE": + "REPORT zdeco.\n" + "*&---------------------------------------------------------------------*\n" + "*& Form BUILD_LIST\n" + "*&---------------------------------------------------------------------*\n" + "FORM build_list.\n WRITE 1.\nENDFORM."}], + }) + con = connect() + try: + rows = [r["purpose"] for r in con.execute("SELECT purpose FROM unit_fts WHERE program='ZDECO'")] + assert not any("----" in (p or "") for p in rows), rows + assert any("BUILD_LIST" in (p or "") for p in rows), rows + finally: + con.close() diff --git a/tests/test_entities.py b/tests/test_entities.py new file mode 100644 index 0000000..eb387ae --- /dev/null +++ b/tests/test_entities.py @@ -0,0 +1,127 @@ +"""엔티티 위키 페이지 검증 (수정사항 8번) + 외부 호출 필터.""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +from index.db import connect +from wiki_out.entities import write_entity_wiki +from wiki_out.merge import get_scalar, split_frontmatter +from wiki_out.okf_writer import write_program_wiki +from wiki_out.validate import validate + +PAYLOAD = { + "MAIN_PROGRAM": "ZENT_A", + "DESCRIPTION": "엔티티 테스트", + "INCLUDE_PROGRAM": [{"INCLUDE": "ZENT_A", "SOURCE_CODE": ( + "REPORT zent_a.\n" + "START-OF-SELECTION.\n" + " PERFORM load.\n" + "FORM load.\n" + " SELECT * FROM t001 INTO TABLE gt_t001.\n" + " INSERT zfit_log FROM ls_log.\n" + " CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'\n" + " EXPORTING input = lv_in\n" + " IMPORTING output = lv_out.\n" + " CALL FUNCTION 'Z_REMOTE_POST' DESTINATION 'RFCDEST'\n" + " EXPORTING i_x = lv_x.\n" + " CALL SCREEN 100.\n" + " lv_style = cl_gui_alv_grid=>mc_style_enabled.\n" + "ENDFORM." + )}], +} + + +@pytest.fixture() +def wiki(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "wiki_dir", tmp_path / "wiki") + monkeypatch.setattr(settings, "llm_base_url", "") + c = TestClient(api.app) + assert c.post("/ingest", json=PAYLOAD).json()["status"] == "loaded" + con = connect() + write_program_wiki("ZENT_A", con=con, wiki_dir=tmp_path / "wiki") + stats = write_entity_wiki(con, tmp_path / "wiki") + con.close() + return tmp_path / "wiki", stats + + +def test_table_pages_split_read_and_write(wiki): + root, stats = wiki + assert stats["tables"] >= 2 + + read_page = (root / "tables" / "T001.md").read_text(encoding="utf-8") + fm, body = split_frontmatter(read_page) + assert get_scalar(fm, "type") == "abap-table" + assert get_scalar(fm, "x-read-programs") == "1" + assert get_scalar(fm, "x-write-programs") == "0" + assert "[ZENT_A](/programs/ZENT_A.md)" in body + + write_page = (root / "tables" / "ZFIT_LOG.md").read_text(encoding="utf-8") + fm2, body2 = split_frontmatter(write_page) + assert get_scalar(fm2, "x-write-programs") == "1" + assert "## 쓰기 (1개 프로그램)" in body2 + + +def test_function_pages_list_callers_and_mark_rfc(wiki): + root, stats = wiki + assert stats["functions"] >= 2 + + fm_page = (root / "functions" / "CONVERSION_EXIT_ALPHA_INPUT.md").read_text(encoding="utf-8") + fm, body = split_frontmatter(fm_page) + assert get_scalar(fm, "type") == "abap-function" + assert get_scalar(fm, "x-caller-programs") == "1" + assert "[ZENT_A](/programs/ZENT_A.md)" in body + + rfc_page = (root / "functions" / "Z_REMOTE_POST.md").read_text(encoding="utf-8") + fm_rfc, body_rfc = split_frontmatter(rfc_page) + assert "RFC" in (get_scalar(fm_rfc, "tags") or "") + assert "call_function_rfc" in body_rfc + + +def test_constants_and_screen_numbers_are_not_function_pages(wiki): + """`CL_GUI_ALV_GRID=>MC_STYLE_ENABLED`(상수)와 `CALL SCREEN 100`(화면번호)은 호출이 아니다.""" + root, _ = wiki + names = {p.stem for p in (root / "functions").glob("*.md")} + assert not any("MC_STYLE" in n for n in names), names + assert "100" not in names, names + + +def test_program_x_calls_excludes_constants_and_screens(wiki): + root, _ = wiki + fm, _ = split_frontmatter((root / "programs" / "ZENT_A.md").read_text(encoding="utf-8")) + calls = get_scalar(fm, "x-calls") or "" + assert "CONVERSION_EXIT_ALPHA_INPUT" in calls and "Z_REMOTE_POST" in calls + assert "MC_STYLE_ENABLED" not in calls, calls + assert '"100"' not in calls, calls + + +def test_manifest_lists_entities_and_hierarchy(wiki): + root, _ = wiki + text = (root / "index.md").read_text(encoding="utf-8") + assert "[tables/](/tables/)" in text and "[functions/](/functions/)" in text + assert "## 계층 — 모듈 → 패키지 → 프로그램" in text + assert "[ZENT_A](/programs/ZENT_A.md)" in text + + +def test_entity_pages_pass_okf_validation(wiki): + root, _ = wiki + assert validate(root) == [] + + +def test_entity_pages_are_idempotent(wiki): + """재실행해도 사람 교정이 없으면 같은 내용(생성 시각 제외)이어야 한다.""" + root, _ = wiki + page = root / "tables" / "T001.md" + before = page.read_text(encoding="utf-8") + con = connect() + write_entity_wiki(con, root) + con.close() + after = page.read_text(encoding="utf-8") + strip = lambda t: "\n".join(l for l in t.splitlines() if not l.startswith("generated:")) + assert strip(before) == strip(after) diff --git a/tests/test_expand.py b/tests/test_expand.py new file mode 100644 index 0000000..186d2aa --- /dev/null +++ b/tests/test_expand.py @@ -0,0 +1,69 @@ +"""질의 확장 검증 (수정사항 4번).""" +from config.glossary import parse_glossary, synonym_map +from index.db import fts_or, query_tokens +from query import expand + + +def test_parse_glossary_ignores_nested_and_comments(): + g = parse_glossary( + "# 주석\n" + "총계정원장: [G/L, GL, ACDOCT]\n" + "tags:\n" + " - 전표\n" + "입고: [GR, 101]\n" + ) + assert g == {"총계정원장": ["G/L", "GL", "ACDOCT"], "입고": ["GR", "101"]} + + +def test_synonym_map_is_bidirectional(tmp_path): + p = tmp_path / "g.yaml" + p.write_text("입고: [GR, MSEG, 101]\n", encoding="utf-8") + m = synonym_map(p) + # 대표어로 물어도, 동의어로 물어도 나머지가 나온다 + assert set(m["입고"]) == {"GR", "MSEG", "101"} + assert "입고" in m["GR"] and "MSEG" in m["GR"] + assert "입고" in m["101"] + + +def test_expansion_terms_excludes_query_itself(): + terms = expand.expansion_terms("총계정원장") + assert terms, "사전에 있는 용어는 동의어가 나와야 한다" + assert "총계정원장" not in terms + assert "ACDOCT" in [t.upper() for t in terms] + + +def test_expansion_terms_empty_for_unknown_word(): + assert expand.expansion_terms("zzz알수없는말") == [] + + +def test_match_exprs_separates_primary_and_expanded(): + primary, expanded = expand.match_exprs("총계정원장") + assert '"총계정원장"' in primary + # 동의어는 별 식으로 나와야 한다 — 같은 OR 버킷에 섞으면 정밀도가 떨어진다 + assert expanded is not None + assert "ACDOCT" in expanded.upper() + assert "ACDOCT" not in primary.upper() + + +def test_no_expansion_returns_none(): + _, expanded = expand.match_exprs("zzz알수없는말") + assert expanded is None + + +def test_expanded_weight_is_a_penalty(): + assert 0 < expand.EXPANDED_WEIGHT < 1, "동의어 히트는 원질의 히트보다 낮게 점수화돼야 한다" + + +def test_fts_or_quotes_and_adds_bigrams(): + expr = fts_or(["총계정원장"]) + assert '"총계정원장"' in expr + assert '"총계' in expr and " OR " in expr + + +def test_fts_or_strips_quotes_to_keep_match_valid(): + assert '""' not in fts_or(['A"B']).replace('"A', "").replace('B"', "") + assert fts_or([]) == '""' + + +def test_query_tokens_drops_punctuation(): + assert query_tokens("총계정원장, 잔액 조회!") == ["총계정원장", "잔액", "조회"] diff --git a/tests/test_ingest_summarize.py b/tests/test_ingest_summarize.py new file mode 100644 index 0000000..f187af5 --- /dev/null +++ b/tests/test_ingest_summarize.py @@ -0,0 +1,93 @@ +"""/ingest 의 요약 트리거 규칙. + +- 신규/변경 적재(loaded) → scheduled +- 소스 동일(skip)이라도 요약 미완료 unit 이 있으면 → resumed (재인덱싱 = 요약 재시도) +- 소스 동일 + 요약 전부 완료 → skip +""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +from index.db import connect +from summarize.runner import PROMPT_VERSION + +PAYLOAD = { + "MAIN_PROGRAM": "ZINGEST_T1", + "DESCRIPTION": "인제스트 테스트", + "INCLUDE_PROGRAM": [ + { + "INCLUDE": "ZINGEST_T1", + "SOURCE_CODE": ( + "REPORT zingest_t1.\n" + "START-OF-SELECTION.\n" + " PERFORM main.\n" + "FORM main.\n" + " SELECT * FROM t001 INTO TABLE gt_t001.\n" + "ENDFORM." + ), + } + ], +} + + +@pytest.fixture() +def client(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "llm_base_url", "http://fake") + monkeypatch.setattr(settings, "llm_api_key", "fake-key") + + calls: list[str] = [] + + def fake_summarize_bg(program: str) -> None: # 실제 LLM/위키는 건드리지 않는다 + calls.append(program) + with api._summarizing_lock: + api._summarizing.discard(program) + + monkeypatch.setattr(api, "_summarize_bg", fake_summarize_bg) + return TestClient(api.app), calls + + +def test_summarize_trigger_rules(client): + c, calls = client + + # 1) 신규 적재 → scheduled + r = c.post("/ingest", json=PAYLOAD).json() + assert r["status"] == "loaded" + assert r["summarize"] == "scheduled" + assert r["pending_units"] > 0 + assert calls == ["ZINGEST_T1"] + + # 2) 같은 소스 재인덱싱 — 요약은 아직 미완료(가짜 bg) → resumed + r = c.post("/ingest", json=PAYLOAD).json() + assert r["status"] == "skip" + assert r["summarize"] == "resumed" + assert calls == ["ZINGEST_T1", "ZINGEST_T1"] + + # 3) 요약 전부 완료 처리 후 재인덱싱 → skip (요약 재실행 없음) + con = connect() + try: + con.execute( + "UPDATE unit SET summary_status='done', summary_json='{}', prompt_version=? " + "WHERE program='ZINGEST_T1'", (PROMPT_VERSION,)) + con.commit() + finally: + con.close() + r = c.post("/ingest", json=PAYLOAD).json() + assert r["status"] == "skip" + assert r["summarize"] == "skip" + assert r["pending_units"] == 0 + assert calls == ["ZINGEST_T1", "ZINGEST_T1"] # 더 안 불림 + + +def test_llm_disabled(client, monkeypatch): + c, calls = client + monkeypatch.setattr(settings, "llm_base_url", "") + r = c.post("/ingest", json=PAYLOAD).json() + assert r["summarize"] == "disabled" + assert calls == [] diff --git a/tests/test_llm_backends.py b/tests/test_llm_backends.py new file mode 100644 index 0000000..a80f1bb --- /dev/null +++ b/tests/test_llm_backends.py @@ -0,0 +1,203 @@ +"""LLM 백엔드 검증 — file 큐(키 불필요 입구)와 재시도/백오프.""" +import json +import urllib.error + +import pytest + +from summarize import jobs +from summarize.llm_client import ( + FileQueueLLM, + PendingResponse, + _extract_json, + _meta_from_prompt, + create_llm, + job_id, +) + +UNIT_PROMPT_SAMPLE = """[작업] extract_chunks +[프로그램] ZFIR10070 — 총계정원장 조회 +[단위] unit_id: ZFIR10070#ZFIR10070_F01#FORM#SELECT_DATA +unit_type: FORM, name: SELECT_DATA +[창] 이 단위는 길어서 3개 창으로 나눠 보여준다. 지금은 2번째 창 (L10-L20). +""" + + +def test_job_id_is_stable_and_content_addressed(): + a = job_id("sys", "user") + assert a == job_id("sys", "user") + assert a != job_id("sys", "user2") + + +def test_meta_parsed_from_prompt(): + m = _meta_from_prompt(UNIT_PROMPT_SAMPLE) + assert m["task"] == "extract_chunks" + assert m["program"] == "ZFIR10070" + assert m["unit_id"] == "ZFIR10070#ZFIR10070_F01#FORM#SELECT_DATA" + assert m["unit_type"] == "FORM" + assert m["window"] == "2" + + +def test_file_backend_emits_prompt_then_reads_answer(tmp_path): + llm = FileQueueLLM(tmp_path) + + # 1) 응답이 없으면 프롬프트를 내놓고 PendingResponse + with pytest.raises(PendingResponse) as ei: + llm.complete_json("sys", UNIT_PROMPT_SAMPLE) + jid = ei.value.job_id + assert llm.prompt_path(jid).exists() + prompt_text = llm.prompt_path(jid).read_text(encoding="utf-8") + assert "## SYSTEM" in prompt_text and "extract_chunks" in prompt_text + # 인덱스에 메타가 기록된다 + rows = [json.loads(l) for l in (tmp_path / "index.jsonl").read_text(encoding="utf-8").splitlines()] + assert rows[0]["job_id"] == jid and rows[0]["program"] == "ZFIR10070" + + # 2) 응답을 채우면 그걸 돌려준다 + llm.response_path(jid).write_text('{"unit_purpose_ko": "x", "chunks": []}', encoding="utf-8") + out = llm.complete_json("sys", UNIT_PROMPT_SAMPLE) + assert out == {"unit_purpose_ko": "x", "chunks": []} + assert llm.usage["calls"] == 1 + + +def test_file_backend_does_not_duplicate_index_rows(tmp_path): + llm = FileQueueLLM(tmp_path) + for _ in range(3): + with pytest.raises(PendingResponse): + llm.complete_json("sys", UNIT_PROMPT_SAMPLE) + lines = (tmp_path / "index.jsonl").read_text(encoding="utf-8").strip().splitlines() + assert len(lines) == 1 + + +def test_create_llm_backends(tmp_path): + from summarize.llm_client import FakeLLM + + assert isinstance(create_llm(backend="fake"), FakeLLM) + assert isinstance(create_llm(fake=True), FakeLLM) # 하위호환 + assert isinstance(create_llm(backend="file", jobs_dir=tmp_path), FileQueueLLM) + with pytest.raises(ValueError): + create_llm(backend="없는백엔드") + + +def test_extract_json_survives_code_fence(): + assert _extract_json('```json\n{"a": 1}\n```') == {"a": 1} + assert _extract_json('설명입니다\n{"a": 2}\n끝') == {"a": 2} + + +def test_api_backend_retries_on_429(monkeypatch): + from config.settings import settings + from summarize import llm_client + + monkeypatch.setattr(settings, "llm_base_url", "http://x") + monkeypatch.setattr(settings, "llm_api_key", "k") + monkeypatch.setattr(settings, "llm_backoff_base", 0.0) + monkeypatch.setattr(settings, "llm_backoff_max", 0.0) + monkeypatch.setattr(llm_client.time, "sleep", lambda *_: None) + + client = llm_client.OpenAICompatClient() + calls = {"n": 0} + + def flaky(system, user): + calls["n"] += 1 + if calls["n"] < 3: + raise urllib.error.HTTPError("u", 429, "Too Many Requests", {}, None) + return {"choices": [{"message": {"content": '{"ok": true}'}}], "usage": {"prompt_tokens": 5}} + + monkeypatch.setattr(client, "_post_once", flaky) + assert client.complete_json("s", "u") == {"ok": True} + assert calls["n"] == 3 + assert client.usage["retries"] == 2 + assert client.usage["calls"] == 1 + + +def test_api_backend_does_not_retry_on_400(monkeypatch): + from config.settings import settings + from summarize import llm_client + + monkeypatch.setattr(settings, "llm_base_url", "http://x") + monkeypatch.setattr(settings, "llm_api_key", "k") + client = llm_client.OpenAICompatClient() + calls = {"n": 0} + + def bad(system, user): + calls["n"] += 1 + raise urllib.error.HTTPError("u", 400, "Bad Request", {}, None) + + monkeypatch.setattr(client, "_post_once", bad) + with pytest.raises(urllib.error.HTTPError): + client.complete_json("s", "u") + assert calls["n"] == 1, "4xx(429 제외)는 재시도하지 않아야 한다" + + +# ------------------------------------------------------------------ jobs CLI + +def test_jobs_answer_validates_schema(tmp_path, capsys): + llm = FileQueueLLM(tmp_path) + with pytest.raises(PendingResponse) as ei: + llm.complete_json("sys", UNIT_PROMPT_SAMPLE) + jid = ei.value.job_id + + bad = tmp_path / "bad.json" + bad.write_text('{"unit_purpose_ko": 1, "chunks": [{"line_start": "x"}]}', encoding="utf-8") + args = type("A", (), {"dir": str(tmp_path), "job_id": jid, "file": str(bad), + "stdin": False, "no_validate": False})() + assert jobs.cmd_answer(args) == 1 + assert not llm.response_path(jid).exists() + + good = tmp_path / "good.json" + good.write_text('{"unit_purpose_ko": "정상", "chunks": []}', encoding="utf-8") + args.file = str(good) + assert jobs.cmd_answer(args) == 0 + assert json.loads(llm.response_path(jid).read_text(encoding="utf-8"))["unit_purpose_ko"] == "정상" + + +def test_jobs_answer_reports_missing_file(tmp_path): + args = type("A", (), {"dir": str(tmp_path), "job_id": "deadbeef", "file": "nope.json", + "stdin": False, "no_validate": False})() + assert jobs.cmd_answer(args) == 1 # 프롬프트도 없으므로 1 + + +# ------------------------------------------------- /ingest 의 백엔드 선택 + +INGEST_PAYLOAD = { + "MAIN_PROGRAM": "ZBK_T1", + "INCLUDE_PROGRAM": [{"INCLUDE": "ZBK_T1", "SOURCE_CODE": + "REPORT zbk_t1.\nSTART-OF-SELECTION.\n PERFORM go.\n" + "FORM go.\n SELECT * FROM t001 INTO TABLE gt.\nENDFORM."}], +} + + +@pytest.fixture() +def api_client(tmp_path, monkeypatch): + from fastapi.testclient import TestClient + + import query.api as api + from config.settings import settings + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'i.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "n") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "p") + monkeypatch.setattr(settings, "data_llm_jobs", tmp_path / "jobs") + # /ingest 의 백그라운드 작업이 요약 후 위키를 쓴다 — 실제 wiki/ 로 새지 않게 격리 + monkeypatch.setattr(settings, "wiki_dir", tmp_path / "wiki") + return TestClient(api.app), settings, tmp_path + + +def test_ingest_backend_off_skips_summary(api_client, monkeypatch): + c, settings, _ = api_client + monkeypatch.setattr(settings, "summarize_backend", "off") + monkeypatch.setattr(settings, "llm_base_url", "http://x") + monkeypatch.setattr(settings, "llm_api_key", "k") + r = c.post("/ingest", json=INGEST_PAYLOAD).json() + assert r["summarize"] == "disabled" and r["summarize_backend"] == "off" + + +def test_ingest_backend_file_queues_without_key(api_client, monkeypatch): + """키가 없어도 file 백엔드면 프롬프트가 큐에 쌓인다.""" + c, settings, tmp_path = api_client + monkeypatch.setattr(settings, "summarize_backend", "file") + monkeypatch.setattr(settings, "llm_base_url", "") # 키 없음 + monkeypatch.setattr(settings, "llm_api_key", "") + r = c.post("/ingest", json=INGEST_PAYLOAD).json() + assert r["summarize"] == "scheduled", r + q = c.get("/summaries/jobs").json() + assert q["pending"] >= 1, q + assert any(n["task"] == "program_summary" for n in q["next"]), q diff --git a/tests/test_normalize.py b/tests/test_normalize.py new file mode 100644 index 0000000..3a80389 --- /dev/null +++ b/tests/test_normalize.py @@ -0,0 +1,43 @@ +"""Stage 1 검증 (계획서 §3) — 샘플 원본이 data/raw 에 있을 때만 실행.""" +import json +from pathlib import Path + +import pytest + +from ingest.normalize import clean_text_field, normalize_raw_text, parse_collected_file + +ROOT = Path(__file__).resolve().parent.parent +RAW = ROOT / "data" / "raw" + + +def test_normalize_regex_removes_wrap_artifact(): + raw = '{"A":"REPORT\n zfir10070 MESSAGE-ID zfim01."}' + assert json.loads(normalize_raw_text(raw))["A"] == "REPORT zfir10070 MESSAGE-ID zfim01." + + +def test_escaped_newline_preserved(): + # 이스케이프된 \n(백슬래시+n)은 json.loads 후 진짜 줄바꿈이 되어야 한다 + raw = '{"A":"LINE1\\nLINE2"}' + assert json.loads(normalize_raw_text(raw))["A"] == "LINE1\nLINE2" + + +def test_clean_text_field(): + assert clean_text_field("총계정원장 조회") == "총계정원장 조회" + + +@pytest.mark.skipif(not (RAW / "ZFIR10070.txt").exists(), reason="샘플 원본 없음") +def test_sample_program_source(): + data = parse_collected_file((RAW / "ZFIR10070.txt").read_text(encoding="utf-8")) + assert clean_text_field(data["DESCRIPTION"]) == "총계정원장 조회" + f01 = next(i for i in data["INCLUDE_PROGRAM"] if "F01" in i["INCLUDE"]) + form_lines = [ + ln for ln in f01["SOURCE_CODE"].split("\n") if ln.strip().upper().startswith("FORM ") + ] + assert len(form_lines) == 73 + + +@pytest.mark.skipif(not (RAW / "ZFI01.txt").exists(), reason="샘플 원본 없음") +def test_sample_package_list(): + data = parse_collected_file((RAW / "ZFI01.txt").read_text(encoding="utf-8")) + assert isinstance(data, list) and len(data) > 900 + assert data[0]["DEVCLASS"] == "ZFI01" diff --git a/tests/test_parser.py b/tests/test_parser.py new file mode 100644 index 0000000..843336f --- /dev/null +++ b/tests/test_parser.py @@ -0,0 +1,76 @@ +"""Stage 2 검증 (계획서 §4.6) — 정규화 산출물이 있을 때 ZFIR10070 실측 + 단위 테스트.""" +from pathlib import Path + +import pytest + +from parser.run import parse_program +from parser.statements import split_statements +from parser.tokenizer import split_comment, tokenize_code + +ROOT = Path(__file__).resolve().parent.parent +PROG_DIR = ROOT / "data" / "normalized" / "ZFIR10070" + + +def test_split_comment(): + assert split_comment("* full comment") == ("", "full comment", True) + code, comment, full = split_comment("DATA lv_x TYPE i. \" inline") + assert comment == "inline" and not full and "DATA" in code + + +def test_string_literal_quote_not_comment(): + code, comment, _ = split_comment("WRITE 'has \" inside'.") + assert comment == "" and "'has \" inside'" in code + + +def test_chain_expansion(): + sts, _ = split_statements("DATA: a TYPE i,\n b TYPE i.", "T") + assert len(sts) == 2 + assert sts[0].upper[:2] == ["DATA", "A"] + assert sts[1].upper[:2] == ["DATA", "B"] + + +def test_tokenizer_identifiers(): + toks = tokenize_code("zcl_fi_common=>f4_bukrs( ) gs_head-belnr TEXT-004 ") + assert "zcl_fi_common=>f4_bukrs" in toks + assert "gs_head-belnr" in toks + assert "TEXT-004" in toks + assert "" in toks + + +@pytest.fixture(scope="module") +def parsed(): + if not PROG_DIR.exists(): + pytest.skip("정규화 산출물 없음 — python -m ingest.normalize 먼저 실행") + return parse_program(PROG_DIR) + + +def test_f01_has_73_forms(parsed): + forms = [u for u in parsed["units"] if u["unit_type"] == "FORM" and u["include"] == "ZFIR10070_F01"] + assert len(forms) == 73 + + +def test_gt_acdoct_declared_in_top(parsed): + decls = [s for s in parsed["symbols"] if s["name"] == "GT_ACDOCT"] + assert decls and decls[0]["decl_include"] == "ZFIR10070_TOP" + assert decls[0]["scope"] == "global" + + +def test_select_data_calls_select_gl_list(parsed): + sd = next(u for u in parsed["units"] if u["name"] == "SELECT_DATA") + targets = [c["target"] for c in sd["refs"]["calls"]] + assert "SELECT_GL_LIST" in targets + + +def test_external_perform_zfir00010(parsed): + ext = [e for e in parsed["call_edges"] + if e["external_name"] and "ZFIR00010" in str(e["external_name"])] + assert any("CHECK_BUKRS" in e["external_name"] for e in ext) + + +def test_text_symbol_004(parsed): + t = next(x for x in parsed["text_symbols"] if x["symbol"] == "004") + assert t["text"] == "회계단위 간편선택" + + +def test_unknown_ratio_below_3pct(parsed): + assert parsed["stats"]["unknown_ratio"] < 0.03 diff --git a/tests/test_parser_fieldsymbol.py b/tests/test_parser_fieldsymbol.py new file mode 100644 index 0000000..d703c84 --- /dev/null +++ b/tests/test_parser_fieldsymbol.py @@ -0,0 +1,96 @@ +"""필드심볼·테이블본문 대입 파싱 검증. + +이 문장 형태들이 토큰 3개로 쪼개지면 (a) 쓰기 지점이 누락되고 (b) 미인식 문장으로 잡힌다. +ALV 필드카탈로그를 채우는 관용구라 프로그램에 따라 미인식률이 12% 까지 올라갔다. +""" +from pathlib import Path + +import pytest + +from parser.dataflow import base_symbol, extract_writes +from parser.run import parse_program +from parser.statements import assignment_eq_index, split_statements +from parser.tokenizer import tokenize_code + +ROOT = Path(__file__).resolve().parent.parent +NORM = ROOT / "data" / "normalized" + + +def test_field_symbol_component_is_one_token(): + assert tokenize_code("-fieldname = 'X'.")[:2] == ["-fieldname", "="] + assert tokenize_code("->check_changed_data( ).")[0] == "->check_changed_data" + assert tokenize_code("-a-b = 1.")[0] == "-a-b" + + +def test_plain_field_symbol_unaffected(): + assert tokenize_code("READ TABLE t ASSIGNING .")[-2] == "" + assert tokenize_code(" = ls_y.")[:2] == ["", "="] + + +def test_macro_param_tokenized(): + assert tokenize_code("&1 = |{ &2 }|.")[0] == "&1" + + +def test_base_symbol_normalizes_field_symbol(): + assert base_symbol("-FIELDNAME") == "" + assert base_symbol("->METH") == "" + assert base_symbol("GS_HEAD-BELNR") == "GS_HEAD" + + +@pytest.mark.parametrize( + "code, expect_eq", + [ + ("lv_a = 1.", 1), + ("-fieldname = 'X'.", 1), + ("gt_tab[] = gt_src[].", 3), + ("ls_r-opt[] = VALUE #( ).", 3), + ("IF lv_a = 1.", None), # 조건문은 대입이 아니다 + ("CLEAR lv_a.", None), + ("PERFORM f USING a.", None), + ], +) +def test_assignment_eq_index(code, expect_eq): + sts, _ = split_statements(code, "T") + assert assignment_eq_index(sts[0].upper) == expect_eq + + +def _writes_for(code: str): + sts, _ = split_statements(code, "T") + known = {"GT_TAB", "GT_SRC", "", "LS_R"} + writes, _ = extract_writes(sts, list(range(len(sts))), "U", known) + return {(w.symbol, w.kind) for w in writes} + + +def test_field_symbol_component_write_recorded(): + got = _writes_for("-fieldname = 'X'.") + assert ("", "assign:field=FIELDNAME") in got + + +def test_object_attribute_write_has_clean_field_name(): + got = _writes_for("->html_control = x.") + # '->' 가 field 이름에 '>' 로 새어 들어가지 않아야 한다 + assert ("", "assign:field=HTML_CONTROL") in got + + +def test_table_body_assignment_write_recorded(): + got = _writes_for("gt_tab[] = gt_src[].") + assert ("GT_TAB", "assign") in got + + +def _normalized_dirs() -> list[Path]: + return sorted(p for p in NORM.iterdir() if p.is_dir()) if NORM.exists() else [] + + +@pytest.mark.skipif(not _normalized_dirs(), reason="정규화 산출물 없음") +def test_unknown_ratio_low_across_all_programs(): + """§4.6 — 한 프로그램만 보면 놓친다. 전체를 재고 최악값도 함께 본다. + + 특정 샘플 이름에 묶지 않는다 — 어떤 덤프가 들어와도 전체를 재야 의미가 있다. + """ + worst = [] + for d in _normalized_dirs(): + stats = parse_program(d)["stats"] + worst.append((stats["unknown_ratio"], d.name)) + worst.sort(reverse=True) + top_ratio, top_name = worst[0] + assert top_ratio < 0.03, f"미인식률 최악: {top_name} {top_ratio:.2%} (전체: {worst[:5]})" diff --git a/tests/test_search_logic.py b/tests/test_search_logic.py new file mode 100644 index 0000000..09b7d2d --- /dev/null +++ b/tests/test_search_logic.py @@ -0,0 +1,96 @@ +"""/search/logic, /chunks/{id}, /programs/{name}/chunks — 로직 조각 검색·조회 API.""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +import summarize.runner as runner + +PAYLOAD = { + "MAIN_PROGRAM": "ZLOGIC_T1", + "DESCRIPTION": "로직 검색 테스트", + "INCLUDE_PROGRAM": [{ + "INCLUDE": "ZLOGIC_T1", + "SOURCE_CODE": ( + "REPORT zlogic_t1.\n" + "START-OF-SELECTION.\n" + " PERFORM get_gr.\n" + "FORM get_gr.\n" + " SELECT mblnr FROM mseg INTO TABLE gt_mseg WHERE bwart = '101'.\n" + " SORT gt_mseg BY mblnr.\n" + "ENDFORM." + ), + }], +} + + +class StubLLM: + usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0} + + def complete_json(self, system: str, user: str) -> dict: + if "[작업] program_summary" in user: + return {"program": "x", "business_purpose_ko": "구매오더 입고 자재문서 조회", "confidence": 0.8} + if "name: GET_GR" in user: + return {"unit_purpose_ko": "입고 자재문서 조회", "chunks": [{ + "line_start": 5, "line_end": 6, "first_line": "SELECT mblnr FROM mseg INTO TABLE gt_mseg WHERE bwart = '101'.", + "kind": "sql_select", "purpose_ko": "이동유형 101(입고) 자재문서를 MSEG 에서 조회", + "purpose_en": "Read goods receipt material documents (movement type 101) from MSEG", + "keywords_ko": ["입고", "자재문서", "이동유형 101"], "keywords_en": ["goods receipt", "GR"], + "sap_objects": ["MSEG", "BWART"], "confidence": 0.9}]} + return {"unit_purpose_ko": "요약", "chunks": []} + + +@pytest.fixture() +def client(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "llm_base_url", "") + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: StubLLM()) + c = TestClient(api.app) + assert c.post("/ingest", json=PAYLOAD).json()["status"] == "loaded" + runner.summarize_units("ZLOGIC_T1", None, fake=False, dry_run=False, trigger="test") + return c + + +def test_search_logic_groups_by_program(client): + r = client.get("/search/logic", params={"q": "입고 처리하는 로직"}).json() + assert r["total"] >= 1 + g = r["programs"][0] + assert g["program"] == "ZLOGIC_T1" + assert g["purpose"].startswith("구매오더 입고") + c = g["chunks"][0] + assert c["unit"] == "GET_GR" and c["kind"] == "sql_select" + assert (c["line_start"], c["line_end"]) == (5, 6) + assert c["tables_read"] == ["MSEG"] + + # 영어 · 객체명으로도 맞는다 + assert client.get("/search/logic", params={"q": "goods receipt"}).json()["total"] >= 1 + assert client.get("/search/logic", params={"q": "MSEG"}).json()["total"] >= 1 + assert client.get("/search/logic", params={"q": "MSEG", "kind": "db_write"}).json()["total"] == 0 + + +def test_chunk_code_and_program_chunks(client): + from urllib.parse import quote + + chunk_id = client.get("/search/logic", params={"q": "입고"}).json()["programs"][0]["chunks"][0]["chunk_id"] + r = client.get(f"/chunks/{quote(chunk_id, safe='')}").json() # chunk_id 의 '#' 은 URL 인코딩 필요 + assert r["code"].startswith(" SELECT mblnr FROM mseg") + assert r["unit_lines"] == "4-7" + assert client.get("/chunks/NOPE#C9").status_code == 404 + + lst = client.get("/programs/ZLOGIC_T1/chunks").json()["chunks"] + assert len(lst) == 1 and lst[0]["chunk_id"] == chunk_id + + s = client.get("/programs/ZLOGIC_T1/summary").json() + assert s["structure"]["logic_chunks"][0]["chunk_id"] == chunk_id + assert s["summary"]["business_purpose_ko"].startswith("구매오더") + u = client.get("/programs/ZLOGIC_T1/units/GET_GR/code").json() + assert u["chunks"][0]["chunk_id"] == chunk_id + + assert client.get("/health").json()["logic_chunks"] == 1 + st = client.get("/summaries/status").json() + assert st["programs"][0]["chunks"] == 1 and st["programs"][0]["program_summary"] == "done" diff --git a/tests/test_settings_api.py b/tests/test_settings_api.py new file mode 100644 index 0000000..51e6f5b --- /dev/null +++ b/tests/test_settings_api.py @@ -0,0 +1,40 @@ +"""GET/PUT /settings/llm — 요약 모델 런타임 전환과 .env 영속화.""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings + + +@pytest.fixture() +def client(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "llm_model", "minimax/minimax-m2.7:free") + env = tmp_path / ".env" + env.write_text("LLM_BASE_URL=https://x\nLLM_MODEL=minimax/minimax-m2.7:free\n", encoding="utf-8") + monkeypatch.setattr(api, "ENV_PATH", env) + return TestClient(api.app), env + + +def test_get_and_put_model(client): + c, env = client + assert c.get("/settings/llm").json()["model"] == "minimax/minimax-m2.7:free" + + r = c.put("/settings/llm", json={"model": "z-ai/glm-5.2"}) + assert r.status_code == 200 and r.json() == {"model": "z-ai/glm-5.2"} + assert settings.llm_model == "z-ai/glm-5.2" # 즉시 반영 + text = env.read_text(encoding="utf-8") + assert "LLM_MODEL=z-ai/glm-5.2" in text + assert "LLM_BASE_URL=https://x" in text # 다른 줄은 보존 + assert text.count("LLM_MODEL=") == 1 + + +def test_put_model_rejects_bad_input(client): + c, env = client + for bad in ("", " ", "a b", "x\nLLM_API_KEY=evil", "한글모델"): + assert c.put("/settings/llm", json={"model": bad}).status_code == 400 + assert settings.llm_model == "minimax/minimax-m2.7:free" + assert "evil" not in env.read_text(encoding="utf-8") diff --git a/tests/test_summarize_runner.py b/tests/test_summarize_runner.py new file mode 100644 index 0000000..1fc512e --- /dev/null +++ b/tests/test_summarize_runner.py @@ -0,0 +1,206 @@ +"""summarize.runner — 프로그램 요약 + unit 조각 추출의 상태·실패 사유·실행로그 라이프사이클. + +- 프로그램 요약이 먼저 생성되고 program.summary_json 에 저장된다 +- 실패 unit → summary_error 에 예외명+메시지, 재실행 시 실패분만 재시도 +- 조각은 logic_chunk / chunk_fts 에 저장되고 unit.chunk_count 에 반영된다 +- --fake 는 FakeLLM 으로 파이프라인 전체(조각 1개/unit)를 통과한다 +""" +from __future__ import annotations + +import pytest +from fastapi.testclient import TestClient + +from config.settings import settings +from index.db import connect, loads +import summarize.runner as runner + +PAYLOAD = { + "MAIN_PROGRAM": "ZRUNNER_T1", + "DESCRIPTION": "러너 테스트", + "TEXT_SYMBOL": [{"SYMBOL": "001", "TEXT": "회사코드 조회"}], + "INCLUDE_PROGRAM": [ + { + "INCLUDE": "ZRUNNER_T1", + "SOURCE_CODE": ( + "REPORT zrunner_t1.\n" + "START-OF-SELECTION.\n" + " PERFORM ok_one.\n" + " PERFORM fail_me.\n" + "FORM ok_one.\n" + " SELECT * FROM t001 INTO TABLE gt_t001.\n" + " SORT gt_t001 BY bukrs.\n" + "ENDFORM.\n" + "FORM fail_me.\n" + " WRITE 2.\n" + "ENDFORM." + ), + } + ], +} + + +class StubLLM: + """FAIL_ME unit 에서만 예외. ok_one 에는 SELECT 조각 하나를 (줄 번호를 틀리게) 돌려준다.""" + + def __init__(self, fail_names: set[str]): + self.fail_names = fail_names + self.usage = {"calls": 0, "prompt_tokens": 0, "completion_tokens": 0, "cost_usd": 0.0} + self.prompts: list[str] = [] + + def complete_json(self, system: str, user: str) -> dict: + self.prompts.append(user) + for name in self.fail_names: + if f"name: {name}" in user: + raise RuntimeError("HTTP Error 429: rate limited") + self.usage["calls"] += 1 + self.usage["prompt_tokens"] += 10 + self.usage["completion_tokens"] += 20 + if "[작업] program_summary" in user: + return {"program": "x", "business_purpose_ko": "회사코드 마스터 조회 테스트", + "main_flow": ["회사코드 조회", "출력"], "business_tags": ["마스터관리"], "confidence": 0.7} + if "name: OK_ONE" in user: + return {"unit_purpose_ko": "회사코드 마스터를 읽는다", + "chunks": [{"line_start": 7, "line_end": 8, # 실제는 6~7 — 앵커로 보정되어야 함 + "first_line": "SELECT * FROM t001 INTO TABLE gt_t001.", + "kind": "sql_select", "purpose_ko": "회사코드 마스터(T001) 전체 조회", + "purpose_en": "Read company code master", "keywords_ko": ["회사코드"], + "keywords_en": ["company code"], "sap_objects": ["T001"], "confidence": 0.9}]} + return {"unit_purpose_ko": "요약", "chunks": []} + + +@pytest.fixture() +def ingested(tmp_path, monkeypatch): + import query.api as api + + monkeypatch.setattr(settings, "database_url", f"sqlite:///{tmp_path / 'index.db'}") + monkeypatch.setattr(settings, "data_normalized", tmp_path / "normalized") + monkeypatch.setattr(settings, "data_parsed", tmp_path / "parsed") + monkeypatch.setattr(settings, "llm_base_url", "") # ingest 의 자동 요약은 끔 + c = TestClient(api.app) + assert c.post("/ingest", json=PAYLOAD).json()["status"] == "loaded" + return c + + +def _unit(con, name: str): + return con.execute( + "SELECT summary_status, summary_error, chunk_count, summary_json FROM unit " + "WHERE program='ZRUNNER_T1' AND name=?", (name,), + ).fetchone() + + +def test_program_summary_chunks_failure_and_retry(ingested, monkeypatch): + stub = StubLLM({"FAIL_ME"}) + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: stub) + stats = runner.summarize_units("ZRUNNER_T1", None, fake=False, dry_run=False, trigger="test") + assert stats["program_summaries"] == 1 + assert stats["failed"] == 1 + assert stats["done"] == 2 # OK_ONE + START-OF-SELECTION + assert stats["chunks"] == 1 + + # 프롬프트에 프로그램 요약 문맥과 텍스트 심볼·파서 힌트가 들어갔는가 + unit_prompt = next(p for p in stub.prompts if "name: OK_ONE" in p) + assert "회사코드 마스터 조회 테스트" in unit_prompt # 프로그램 요약 문맥 + assert "L6 SELECT" in unit_prompt # 파서 힌트 + assert " 6| " in unit_prompt # 줄번호 붙은 코드 + + con = connect() + try: + p = con.execute("SELECT summary_status, summary_json FROM program WHERE name='ZRUNNER_T1'").fetchone() + assert p["summary_status"] == "done" + assert loads(p["summary_json"])["prompt_version"] == runner.PROMPT_VERSION + + fail = _unit(con, "FAIL_ME") + assert fail["summary_status"] == "failed" + assert "RuntimeError: HTTP Error 429" in fail["summary_error"] + + ok = _unit(con, "OK_ONE") + assert ok["summary_status"] == "done" and ok["summary_error"] is None + assert ok["chunk_count"] == 1 + thin = loads(ok["summary_json"]) + assert thin["purpose_ko"] == "회사코드 마스터를 읽는다" and thin["chunk_count"] == 1 + + ch = con.execute("SELECT * FROM logic_chunk WHERE program='ZRUNNER_T1'").fetchone() + assert ch["chunk_id"].endswith("#FORM#OK_ONE#C1") + assert (ch["line_start"], ch["line_end"]) == (6, 7) # 앵커로 보정됨 + assert loads(ch["tables_read"]) == ["T001"] # 파서가 채움 + assert ch["kind"] == "sql_select" + # 검색 색인에 들어갔는가 + hit = con.execute("SELECT chunk_id FROM chunk_fts WHERE chunk_fts MATCH '\"회사코드\"'").fetchone() + assert hit and hit["chunk_id"] == ch["chunk_id"] + # 얇은 unit 색인도 한 줄 요약으로 갱신 + u = con.execute("SELECT purpose FROM unit_fts WHERE unit_id=?", (ch["unit_id"],)).fetchone() + assert u["purpose"] == "회사코드 마스터를 읽는다" + + log = con.execute("SELECT * FROM llm_usage_log ORDER BY id DESC").fetchall() + assert len(log) == 1 + assert log[0]["status"] == "done" + assert log[0]["total"] == stats["done"] + stats["failed"] + assert log[0]["failed"] == 1 and log[0]["chunks"] == 1 + assert log[0]["trigger_by"] == "test" + finally: + con.close() + + # 재실행(전부 성공) → 실패분만 재시도, 프로그램 요약은 스킵 + stub2 = StubLLM(set()) + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: stub2) + stats2 = runner.summarize_units("ZRUNNER_T1", None, fake=False, dry_run=False, trigger="test") + assert stats2["failed"] == 0 and stats2["done"] == 1 and stats2["program_summaries"] == 0 + assert stats2["skipped"] == stats["done"] + assert not any("[작업] program_summary" in p for p in stub2.prompts) + + con = connect() + try: + fail = _unit(con, "FAIL_ME") + assert fail["summary_status"] == "done" and fail["summary_error"] is None and fail["chunk_count"] == 0 + assert con.execute("SELECT COUNT(*) FROM llm_usage_log").fetchone()[0] == 2 + finally: + con.close() + + +def test_all_skipped_writes_no_log(ingested, monkeypatch): + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: StubLLM(set())) + runner.summarize_units("ZRUNNER_T1", None, fake=False, dry_run=False, trigger="test") + stats = runner.summarize_units("ZRUNNER_T1", None, fake=False, dry_run=False, trigger="test") + assert stats["done"] == 0 and stats["failed"] == 0 and stats["program_summaries"] == 0 + con = connect() + try: # 두 번째 실행은 전부 스킵 — 로그 행이 추가되지 않는다 + assert con.execute("SELECT COUNT(*) FROM llm_usage_log").fetchone()[0] == 1 + finally: + con.close() + + +def test_fake_llm_pipeline(ingested): + """--fake: FakeLLM 이 unit 마다 첫 실행문을 조각으로 만들어 파이프라인 전체를 통과한다.""" + stats = runner.summarize_units("ZRUNNER_T1", None, fake=True, dry_run=False, trigger="test") + assert stats["failed"] == 0 and stats["program_summaries"] == 1 + assert stats["chunks"] >= 1 + con = connect() + try: + n = con.execute("SELECT COUNT(*) FROM logic_chunk WHERE program='ZRUNNER_T1'").fetchone()[0] + assert n == stats["chunks"] + for r in con.execute("SELECT c.*, u.line_start us, u.line_end ue FROM logic_chunk c " + "JOIN unit u ON u.unit_id=c.unit_id"): + assert r["us"] <= r["line_start"] <= r["line_end"] <= r["ue"] + finally: + con.close() + + +def test_reload_keeps_chunks_for_unchanged_units(ingested, monkeypatch): + """소스가 바뀐 unit 의 조각만 버리고, 같은 unit 의 조각은 재적재 후에도 남는다.""" + monkeypatch.setattr(runner, "create_llm", lambda fake=False, **kw: StubLLM(set())) + runner.summarize_units("ZRUNNER_T1", None, fake=False, dry_run=False, trigger="test") + + changed = dict(PAYLOAD) + changed["INCLUDE_PROGRAM"] = [dict(PAYLOAD["INCLUDE_PROGRAM"][0])] + changed["INCLUDE_PROGRAM"][0]["SOURCE_CODE"] = PAYLOAD["INCLUDE_PROGRAM"][0]["SOURCE_CODE"].replace( + "WRITE 2.", "WRITE 3.") # FAIL_ME 만 바뀜 + assert ingested.post("/ingest", json=changed).json()["status"] == "loaded" + + con = connect() + try: + assert con.execute("SELECT COUNT(*) FROM logic_chunk WHERE unit_id LIKE '%#OK_ONE'").fetchone()[0] == 1 + assert _unit(con, "OK_ONE")["summary_status"] == "done" + assert _unit(con, "FAIL_ME")["summary_status"] == "none" # 재추출 대상 + assert con.execute("SELECT summary_status FROM program WHERE name='ZRUNNER_T1'").fetchone()[0] == "stale" + finally: + con.close() diff --git a/tests/test_wiki_out.py b/tests/test_wiki_out.py new file mode 100644 index 0000000..621b205 --- /dev/null +++ b/tests/test_wiki_out.py @@ -0,0 +1,208 @@ +"""wiki_out — OKF 출력·사람 교정 보존 검증 (계획서 v4 §5.7, §11.10, docs/logic-chunk-design.md). + +핵심 합격 기준: 사람 검토(verified: human:) 문서의 본문이 배치 재실행에 덮어써지면 실패. +로직 조각은 프로그램 문서 안의 `## 로직 조각` 섹션으로 들어간다 (unit 개별 문서 없음). +""" +from __future__ import annotations + +import json +import re +import sqlite3 + +import pytest + +from index.db import SCHEMA +from wiki_out import merge +from wiki_out.okf_writer import write_program_wiki +from wiki_out.validate import validate + +UNIT_ID = "ZTEST1#ZTEST1_F01#FORM#SELECT_GL_LIST" + + +@pytest.fixture() +def con(): + con = sqlite3.connect(":memory:") + con.row_factory = sqlite3.Row + con.executescript(SCHEMA) + con.execute("INSERT INTO package VALUES('ZFI01','재무회계 공통',NULL)") + prog_summary = json.dumps({"program": "ZTEST1", "business_purpose_ko": "총계정원장 잔액을 조회해 월별로 집계한다", + "main_flow": ["조회", "집계", "ALV 출력"], "business_tags": ["총계정원장"], + "sap_module": "FI-GL", "prompt_version": 2}, ensure_ascii=False) + con.execute( + "INSERT INTO program(name, devclass, title_ko, changed_on, source_hash, summary_json, summary_status, has_source) " + "VALUES('ZTEST1','ZFI01','총계정원장 조회','2023-01-30','hash-v1',?,'done',1)", (prog_summary,)) + # 조각 섹션은 소스 원문을 함께 실어야 한다 → include 코드가 있어야 검증된다. + # L130-149 가 조각 범위이므로 그 구간에 알아볼 수 있는 코드를 둔다. + code_lines = [f"* filler {i}" for i in range(1, 130)] + [ + " SELECT racct SUM( hsl ) AS hsl", # 130 + " INTO TABLE gt_acdoct", # 131 + " FROM acdoct", # 132 + " WHERE rbukrs EQ p_bukrs", # 133 + " AND gjahr EQ p_gjahr.", # 134 + ] + [f" WRITE {i}." for i in range(135, 150)] + con.execute("INSERT INTO include(program, include, code_hash, line_count, code) VALUES(?,?,?,?,?)", + ("ZTEST1", "ZTEST1_F01", "ihash", len(code_lines), "\n".join(code_lines))) + con.execute("INSERT INTO topo VALUES('ZTEST1',?,0)", (UNIT_ID,)) + refs = json.dumps({"tables_read": ["ACDOCT", "SKAT"], "tables_write": [], + "calls": [{"target": "FORM GET_DATE_PREVIOUS_YEAR"}]}) + thin = json.dumps({"purpose_ko": "ACDOCT 를 조회해 gt_acdoct 에 적재", "chunk_count": 1, + "covered_lines": 20, "coverage": 0.29}, ensure_ascii=False) + con.execute( + "INSERT INTO unit(unit_id, program, include, unit_type, name, line_start, line_end, " + "code_hash, signature, refs_json, summary_json, summary_status, prompt_version, loc, chunk_count) " + f"VALUES('{UNIT_ID}','ZTEST1','ZTEST1_F01','FORM','SELECT_GL_LIST'," + "120,188,'uhash-v1','',?,?,'done',2,69,1)", (refs, thin)) + con.execute( + "INSERT INTO logic_chunk(chunk_id, program, include, unit_id, seq, line_start, line_end, code_hash, kind, " + "purpose_ko, purpose_en, keywords_ko, keywords_en, sap_objects, tables_read, tables_write, calls, " + "confidence, prompt_version, extracted_at) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + (f"{UNIT_ID}#C1", "ZTEST1", "ZTEST1_F01", UNIT_ID, 1, 130, 149, "chash", "sql_select", + "ACDOCT 에서 계정별 기말잔액을 조회한다", "Read period-end balances from ACDOCT", + '["기말잔액", "총계정원장"]', '["G/L balance"]', '["ACDOCT"]', '["ACDOCT"]', "[]", "[]", + 0.85, 2, "2026-09-16T00:00:00+00:00")) + yield con + con.close() + + +def test_write_program_wiki(con, tmp_path): + stats = write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + assert stats == {"chunks": 1, "programs": 1, "packages": 1} + assert not (tmp_path / "units").exists() # unit 개별 문서는 만들지 않는다 + + prog = (tmp_path / "programs" / "ZTEST1.md").read_text(encoding="utf-8") + assert "type: abap-program" in prog + assert "status: stable" in prog # 프로그램 요약 있음 + assert "x-chunk-count: 1" in prog + assert "총계정원장 잔액을 조회해 월별로 집계한다" in prog + assert "## 로직 조각 (1건 / unit 1개)" in prog + assert "#### [sql_select] ACDOCT 에서 계정별 기말잔액을 조회한다" in prog + assert "`abap://ZTEST1/ZTEST1_F01#L130-L149`" in prog # 조각 resource + + # --- 핵심: 조각은 소스 원문 + 자연어 설명이 한 쌍이어야 한다 --- + assert "```abap" in prog, "조각에 코드펜스가 없다" + assert re.search(r"^\s*130\|.*SELECT racct SUM\( hsl \)", prog, re.M), \ + "조각 시작 줄의 소스 원문(줄번호 포함)이 없다" + assert re.search(r"^\s*134\|.*AND gjahr\s+EQ p_gjahr\.", prog, re.M), \ + "조각 마지막 줄까지 실려야 한다" + assert re.search(r"^\s*149\|", prog, re.M), "조각 line_end(149)까지 실려야 한다" + assert "* filler 129" not in prog, "조각 범위 밖의 코드가 새어 들어갔다" + code_at = prog.index("```abap") + desc_at = prog.index("Read period-end balances from ACDOCT") + assert code_at < desc_at, "코드가 설명보다 먼저 와야 한다 (읽고 나서 설명을 대조)" + + assert "read [ACDOCT](/tables/ACDOCT.md)" in prog # 파서 사실 + 테이블 문서 링크 + assert "이 unit 의 조각 1개가 20/69줄(29%)을 덮는다" in prog # 커버리지 안내 + assert "| SELECT_GL_LIST | FORM |" in prog # unit 컨테이너 표 + assert '"기말잔액"' in prog.split("---")[1] # 조각 키워드가 tags 로 + + manifest = (tmp_path / "index.md").read_text(encoding="utf-8") + assert 'okf_version: "0.2"' in manifest + assert "로직 조각 1건" in manifest + + assert validate(tmp_path) == [] # OKF conformance: 모든 문서에 type + + +def test_chunk_links_to_declaration(con, tmp_path): + """조각의 정의부 이름 → 아래 `## 정의부` 항목으로 가는 문서 내 링크가 걸려야 한다. + + 뷰어에서 눌러 이동하는 UX 다. 링크와 앵커가 어긋나면 조용히 죽으므로 여기서 짝을 검사한다. + """ + con.execute( + "INSERT INTO declaration(program, name, kind, scope, unit_id, include, line_start, " + "line_end, code, type_text, depends_json) VALUES(?,?,?,?,?,?,?,?,?,?,?)", + ("ZTEST1", "GT_ACDOCT", "data", "global", None, "ZTEST1_TOP", 10, 10, + "DATA gt_acdoct TYPE TABLE OF acdoct.", "TYPE TABLE OF acdoct", "[]")) + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + prog = (tmp_path / "programs" / "ZTEST1.md").read_text(encoding="utf-8") + + assert "## 정의부 (1건)" in prog + assert "[`GT_ACDOCT`](#decl-ztest1_top-10-gt_acdoct)" in prog # 조각 쪽 링크 + assert "{#decl-ztest1_top-10-gt_acdoct}" in prog # 정의부 쪽 앵커 + assert "DATA gt_acdoct TYPE TABLE OF acdoct." in prog # 원문은 한 번만 + assert prog.count("DATA gt_acdoct TYPE TABLE OF acdoct.") == 1 + + links = set(re.findall(r"\]\(#(decl-[^)]+)\)", prog)) + anchors = set(re.findall(r"\{#(decl-[^}]+)\}", prog)) + assert links and not (links - anchors), f"갈 곳 없는 링크: {links - anchors}" + + +def test_program_without_chunks_is_draft(con, tmp_path): + con.execute("DELETE FROM logic_chunk") + con.execute("UPDATE program SET summary_json=NULL, summary_status='none'") + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + prog = (tmp_path / "programs" / "ZTEST1.md").read_text(encoding="utf-8") + assert "status: draft" in prog + assert "아직 추출된 로직 조각이 없다" in prog + assert 'by: "abap-indexing/parser"' in prog + + +def _human_edit(path): + text = path.read_text(encoding="utf-8") + fm, body = merge.split_frontmatter(text) + fm += '\nverified: { by: "human:tester", at: "2026-08-26T00:00:00Z" }' + human_line = "사람이 고친 설명: 이 프로그램은 결산용이다." + path.write_text(f"---\n{fm}\n---\n{human_line}\n{body}", encoding="utf-8") + return human_line + + +def test_human_verified_body_preserved(con, tmp_path): + """사람 검토 문서 본문 보존 — 덮어써지면 실패 (계획서 §11.10).""" + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + path = tmp_path / "programs" / "ZTEST1.md" + human_line = _human_edit(path) + + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) # 소스 변경 없이 재실행 + after = path.read_text(encoding="utf-8") + assert human_line in after + assert merge.AUTO_SECTION not in after + assert 'verified: { by: "human:tester"' in after + + +def test_code_change_appends_draft(con, tmp_path): + """사람 검토 후 코드 변경 → status: draft + 자동 생성 섹션 + _review.md.""" + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + path = tmp_path / "programs" / "ZTEST1.md" + human_line = _human_edit(path) + + con.execute("UPDATE program SET source_hash='hash-v2' WHERE name='ZTEST1'") + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + + after = path.read_text(encoding="utf-8") + fm_after, body_after = merge.split_frontmatter(after) + assert human_line in body_after + assert merge.AUTO_SECTION in body_after + assert re.search(r"^status: draft$", fm_after, re.M) + assert 'x-code-hash: "hash-v2"' in fm_after + review = (tmp_path / "_review.md").read_text(encoding="utf-8") + assert "programs/ZTEST1.md" in review + + +def test_unverified_doc_overwritten(con, tmp_path): + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + path = tmp_path / "programs" / "ZTEST1.md" + path.write_text("---\ntype: abap-program\n---\n임의 수정(verified 없음)\n", encoding="utf-8") + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + assert "임의 수정" not in path.read_text(encoding="utf-8") + + +def test_wiki_endpoint(con, tmp_path, monkeypatch): + """GET /wiki/{path} — wiki 루트 상대 규약 + 경로 탈출 차단 (계획서 v4 §7.2).""" + from fastapi.testclient import TestClient + + from config.settings import settings + from query.api import app + + write_program_wiki("ZTEST1", con=con, wiki_dir=tmp_path) + monkeypatch.setattr(settings, "wiki_dir", tmp_path) + client = TestClient(app) + + r = client.get("/wiki/programs/ZTEST1.md") + assert r.status_code == 200 + data = r.json() + assert data["path"] == "programs/ZTEST1.md" + assert data["human_verified"] is False + assert "## 로직 조각" in data["content"] + + assert client.get("/wiki/programs/ZTEST1").status_code == 200 + assert client.get("/wiki/programs/NOPE.md").status_code == 404 + assert client.get("/wiki/..%2F..%2Fsecret.md").status_code in (400, 404) diff --git a/wiki/concepts/계정과목.md b/wiki/concepts/계정과목.md new file mode 100644 index 0000000..5fb1bcd --- /dev/null +++ b/wiki/concepts/계정과목.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "계정과목" +description: "계정과목 — 도메인 개념 (질의 확장용)" +tags: ["계정", "RACCT", "SAKNR", "SKA1", "SKAT"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 계정 +- RACCT +- SAKNR +- SKA1 +- SKAT diff --git a/wiki/concepts/공급업체.md b/wiki/concepts/공급업체.md new file mode 100644 index 0000000..c8cabdb --- /dev/null +++ b/wiki/concepts/공급업체.md @@ -0,0 +1,16 @@ +--- +type: concept +title: "공급업체" +description: "공급업체 — 도메인 개념 (질의 확장용)" +tags: ["벤더", "LIFNR", "LFA1", "XK03"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 벤더 +- LIFNR +- LFA1 +- XK03 diff --git a/wiki/concepts/구매오더.md b/wiki/concepts/구매오더.md new file mode 100644 index 0000000..3058a96 --- /dev/null +++ b/wiki/concepts/구매오더.md @@ -0,0 +1,18 @@ +--- +type: concept +title: "구매오더" +description: "구매오더 — 도메인 개념 (질의 확장용)" +tags: ["PO", "Purchase Order", "EBELN", "EKKO", "EKPO", "ME23N"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- PO +- Purchase Order +- EBELN +- EKKO +- EKPO +- ME23N diff --git a/wiki/concepts/구매요청.md b/wiki/concepts/구매요청.md new file mode 100644 index 0000000..5a0cd74 --- /dev/null +++ b/wiki/concepts/구매요청.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "구매요청" +description: "구매요청 — 도메인 개념 (질의 확장용)" +tags: ["PR", "Purchase Requisition", "BANFN", "EBAN", "ME53N"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- PR +- Purchase Requisition +- BANFN +- EBAN +- ME53N diff --git a/wiki/concepts/기능영역.md b/wiki/concepts/기능영역.md new file mode 100644 index 0000000..7773779 --- /dev/null +++ b/wiki/concepts/기능영역.md @@ -0,0 +1,14 @@ +--- +type: concept +title: "기능영역" +description: "기능영역 — 도메인 개념 (질의 확장용)" +tags: ["FAREA", "RFAREA"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- FAREA +- RFAREA diff --git a/wiki/concepts/반제.md b/wiki/concepts/반제.md new file mode 100644 index 0000000..e0df196 --- /dev/null +++ b/wiki/concepts/반제.md @@ -0,0 +1,18 @@ +--- +type: concept +title: "반제" +description: "반제 — 도메인 개념 (질의 확장용)" +tags: ["클리어링", "미결정리", "BSIS", "BSAS", "F-03", "F.13"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 클리어링 +- 미결정리 +- BSIS +- BSAS +- F-03 +- F.13 diff --git a/wiki/concepts/사업영역.md b/wiki/concepts/사업영역.md new file mode 100644 index 0000000..d1a3fae --- /dev/null +++ b/wiki/concepts/사업영역.md @@ -0,0 +1,14 @@ +--- +type: concept +title: "사업영역" +description: "사업영역 — 도메인 개념 (질의 확장용)" +tags: ["BUSA", "GSBER"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- BUSA +- GSBER diff --git a/wiki/concepts/손익.md b/wiki/concepts/손익.md new file mode 100644 index 0000000..9573b70 --- /dev/null +++ b/wiki/concepts/손익.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "손익" +description: "손익 — 도메인 개념 (질의 확장용)" +tags: ["P/L", "손익계산서", "GVTYP"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- P/L +- 손익계산서 +- GVTYP diff --git a/wiki/concepts/송장.md b/wiki/concepts/송장.md new file mode 100644 index 0000000..5ef49dc --- /dev/null +++ b/wiki/concepts/송장.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "송장" +description: "송장 — 도메인 개념 (질의 확장용)" +tags: ["인보이스", "Invoice", "RBKP", "RSEG", "MIRO"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 인보이스 +- Invoice +- RBKP +- RSEG +- MIRO diff --git a/wiki/concepts/이동유형.md b/wiki/concepts/이동유형.md new file mode 100644 index 0000000..13fab96 --- /dev/null +++ b/wiki/concepts/이동유형.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "이동유형" +description: "이동유형 — 도메인 개념 (질의 확장용)" +tags: ["BWART", "이동타입", "movement type"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- BWART +- 이동타입 +- movement type diff --git a/wiki/concepts/입고.md b/wiki/concepts/입고.md new file mode 100644 index 0000000..53330e6 --- /dev/null +++ b/wiki/concepts/입고.md @@ -0,0 +1,19 @@ +--- +type: concept +title: "입고" +description: "입고 — 도메인 개념 (질의 확장용)" +tags: ["GR", "Goods Receipt", "101", "MSEG", "MKPF", "MB51", "MIGO"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- GR +- Goods Receipt +- 101 +- MSEG +- MKPF +- MB51 +- MIGO diff --git a/wiki/concepts/자재.md b/wiki/concepts/자재.md new file mode 100644 index 0000000..b743c11 --- /dev/null +++ b/wiki/concepts/자재.md @@ -0,0 +1,18 @@ +--- +type: concept +title: "자재" +description: "자재 — 도메인 개념 (질의 확장용)" +tags: ["품목", "자재마스터", "MATNR", "MARA", "MAKT", "MM03"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 품목 +- 자재마스터 +- MATNR +- MARA +- MAKT +- MM03 diff --git a/wiki/concepts/자재문서.md b/wiki/concepts/자재문서.md new file mode 100644 index 0000000..880d3c4 --- /dev/null +++ b/wiki/concepts/자재문서.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "자재문서" +description: "자재문서 — 도메인 개념 (질의 확장용)" +tags: ["물자문서", "MBLNR", "MKPF", "MSEG", "MB51"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 물자문서 +- MBLNR +- MKPF +- MSEG +- MB51 diff --git a/wiki/concepts/잔액.md b/wiki/concepts/잔액.md new file mode 100644 index 0000000..a7fb41b --- /dev/null +++ b/wiki/concepts/잔액.md @@ -0,0 +1,16 @@ +--- +type: concept +title: "잔액" +description: "잔액 — 도메인 개념 (질의 확장용)" +tags: ["기말잔액", "이월", "HSL", "BALANCE"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 기말잔액 +- 이월 +- HSL +- BALANCE diff --git a/wiki/concepts/재고.md b/wiki/concepts/재고.md new file mode 100644 index 0000000..bd76f1e --- /dev/null +++ b/wiki/concepts/재고.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "재고" +description: "재고 — 도메인 개념 (질의 확장용)" +tags: ["재고수량", "LABST", "MARD", "MBEW", "MMBE"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 재고수량 +- LABST +- MARD +- MBEW +- MMBE diff --git a/wiki/concepts/저장위치.md b/wiki/concepts/저장위치.md new file mode 100644 index 0000000..4e8b7a1 --- /dev/null +++ b/wiki/concepts/저장위치.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "저장위치" +description: "저장위치 — 도메인 개념 (질의 확장용)" +tags: ["LGORT", "창고", "T001L"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- LGORT +- 창고 +- T001L diff --git a/wiki/concepts/전표.md b/wiki/concepts/전표.md new file mode 100644 index 0000000..f690caf --- /dev/null +++ b/wiki/concepts/전표.md @@ -0,0 +1,17 @@ +--- +type: concept +title: "전표" +description: "전표 — 도메인 개념 (질의 확장용)" +tags: ["회계전표", "BKPF", "BSEG", "ACDOCA", "FB03"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 회계전표 +- BKPF +- BSEG +- ACDOCA +- FB03 diff --git a/wiki/concepts/제조원가.md b/wiki/concepts/제조원가.md new file mode 100644 index 0000000..aceb2f4 --- /dev/null +++ b/wiki/concepts/제조원가.md @@ -0,0 +1,20 @@ +--- +type: concept +title: "제조원가" +description: "제조원가 — 도메인 개념 (질의 확장용)" +tags: ["원가계산", "CO-PC", "오더결산", "COEP", "COSS", "CKMLHD", "KKS1", "KO88"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 원가계산 +- CO-PC +- 오더결산 +- COEP +- COSS +- CKMLHD +- KKS1 +- KO88 diff --git a/wiki/concepts/총계정원장.md b/wiki/concepts/총계정원장.md new file mode 100644 index 0000000..1870b84 --- /dev/null +++ b/wiki/concepts/총계정원장.md @@ -0,0 +1,20 @@ +--- +type: concept +title: "총계정원장" +description: "총계정원장 — 도메인 개념 (질의 확장용)" +tags: ["G/L", "GL", "원장", "ACDOCA", "ACDOCT", "SKAT", "FAGLL03", "FS10N"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- G/L +- GL +- 원장 +- ACDOCA +- ACDOCT +- SKAT +- FAGLL03 +- FS10N diff --git a/wiki/concepts/출고.md b/wiki/concepts/출고.md new file mode 100644 index 0000000..a715f80 --- /dev/null +++ b/wiki/concepts/출고.md @@ -0,0 +1,18 @@ +--- +type: concept +title: "출고" +description: "출고 — 도메인 개념 (질의 확장용)" +tags: ["GI", "Goods Issue", "201", "261", "MSEG", "MB1A"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- GI +- Goods Issue +- 201 +- 261 +- MSEG +- MB1A diff --git a/wiki/concepts/코스트센터.md b/wiki/concepts/코스트센터.md new file mode 100644 index 0000000..26af5e3 --- /dev/null +++ b/wiki/concepts/코스트센터.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "코스트센터" +description: "코스트센터 — 도메인 개념 (질의 확장용)" +tags: ["CCTR", "CSKS", "KSB1"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- CCTR +- CSKS +- KSB1 diff --git a/wiki/concepts/플랜트.md b/wiki/concepts/플랜트.md new file mode 100644 index 0000000..56f79a0 --- /dev/null +++ b/wiki/concepts/플랜트.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "플랜트" +description: "플랜트 — 도메인 개념 (질의 확장용)" +tags: ["WERKS", "사업장", "T001W"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- WERKS +- 사업장 +- T001W diff --git a/wiki/concepts/회계단위.md b/wiki/concepts/회계단위.md new file mode 100644 index 0000000..02142b6 --- /dev/null +++ b/wiki/concepts/회계단위.md @@ -0,0 +1,15 @@ +--- +type: concept +title: "회계단위" +description: "회계단위 — 도메인 개념 (질의 확장용)" +tags: ["회사코드", "BUKRS", "T001"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +--- + +## 관련 용어 + +이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다. + +- 회사코드 +- BUKRS +- T001 diff --git a/wiki/functions/ALSM_EXCEL_TO_INTERNAL_TABLE.md b/wiki/functions/ALSM_EXCEL_TO_INTERNAL_TABLE.md new file mode 100644 index 0000000..ea16d7f --- /dev/null +++ b/wiki/functions/ALSM_EXCEL_TO_INTERNAL_TABLE.md @@ -0,0 +1,109 @@ +--- +type: abap-function +title: "ALSM_EXCEL_TO_INTERNAL_TABLE" +description: "ALSM_EXCEL_TO_INTERNAL_TABLE — 호출 프로그램 30개" +resource: "abap://function/ALSM_EXCEL_TO_INTERNAL_TABLE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 58 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0010](/programs/ZCOC0010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0020](/programs/ZCOC0020.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0020](/programs/ZCOC0020.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0030](/programs/ZCOC0030.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0030](/programs/ZCOC0030.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0040](/programs/ZCOC0040.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0040](/programs/ZCOC0040.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0050](/programs/ZCOC0050.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0050](/programs/ZCOC0050.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0060](/programs/ZCOC0060.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0060](/programs/ZCOC0060.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0070](/programs/ZCOC0070.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0070](/programs/ZCOC0070.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0080](/programs/ZCOC0080.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0080](/programs/ZCOC0080.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0090](/programs/ZCOC0090.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0090](/programs/ZCOC0090.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0100](/programs/ZCOC0100.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0100](/programs/ZCOC0100.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0110](/programs/ZCOC0110.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0110](/programs/ZCOC0110.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0120](/programs/ZCOC0120.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0120](/programs/ZCOC0120.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC0130](/programs/ZCOC0130.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC0130](/programs/ZCOC0130.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC1010](/programs/ZCOC1010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC1010](/programs/ZCOC1010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC2010](/programs/ZCOC2010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC2010](/programs/ZCOC2010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC2020](/programs/ZCOC2020.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC2020](/programs/ZCOC2020.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC2030](/programs/ZCOC2030.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC2030](/programs/ZCOC2030.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC2040](/programs/ZCOC2040.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC2040](/programs/ZCOC2040.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC9010](/programs/ZCOC9010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC9010](/programs/ZCOC9010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC9020](/programs/ZCOC9020.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC9020](/programs/ZCOC9020.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC9030](/programs/ZCOC9030.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC9030](/programs/ZCOC9030.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOC9040](/programs/ZCOC9040.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOC9040](/programs/ZCOC9040.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR0010](/programs/ZCOR0010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR0010](/programs/ZCOR0010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR0020](/programs/ZCOR0020.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR0020](/programs/ZCOR0020.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR0030](/programs/ZCOR0030.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR0030](/programs/ZCOR0030.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR0040](/programs/ZCOR0040.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR0040](/programs/ZCOR0040.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR1010](/programs/ZCOR1010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR1010](/programs/ZCOR1010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZCOR2010](/programs/ZCOR2010.md) | UPLOAD_DATA | call_function | 610 | +| [ZCOR2010](/programs/ZCOR2010.md) | UPLOAD_XLS_STRUCT | call_function | 2203 | +| [ZFIR0020](/programs/ZFIR0020.md) | UPLOAD_DATA | call_function | 597 | +| [ZFIR0040](/programs/ZFIR0040.md) | UPLOAD_DATA | call_function | 597 | diff --git a/wiki/functions/BAL_DSP_LOG_DISPLAY.md b/wiki/functions/BAL_DSP_LOG_DISPLAY.md new file mode 100644 index 0000000..40ac116 --- /dev/null +++ b/wiki/functions/BAL_DSP_LOG_DISPLAY.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "BAL_DSP_LOG_DISPLAY" +description: "BAL_DSP_LOG_DISPLAY — 호출 프로그램 17개" +resource: "abap://function/BAL_DSP_LOG_DISPLAY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIC0020](/programs/ZFIC0020.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0010](/programs/ZFIR0010.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0030](/programs/ZFIR0030.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0031](/programs/ZFIR0031.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0032](/programs/ZFIR0032.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0050](/programs/ZFIR0050.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0060](/programs/ZFIR0060.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0061](/programs/ZFIR0061.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0070](/programs/ZFIR0070.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0071](/programs/ZFIR0071.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0072](/programs/ZFIR0072.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0080](/programs/ZFIR0080.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0090](/programs/ZFIR0090.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0120](/programs/ZFIR0120.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0130](/programs/ZFIR0130.md) | LOG_ALV_DISPLAY | call_function | 852 | +| [ZFIR0170](/programs/ZFIR0170.md) | LOG_ALV_DISPLAY | call_function | 852 | diff --git a/wiki/functions/BAL_LOG_CREATE.md b/wiki/functions/BAL_LOG_CREATE.md new file mode 100644 index 0000000..fcd98d8 --- /dev/null +++ b/wiki/functions/BAL_LOG_CREATE.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "BAL_LOG_CREATE" +description: "BAL_LOG_CREATE — 호출 프로그램 17개" +resource: "abap://function/BAL_LOG_CREATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | LOG_CREATE | call_function | 905 | +| [ZFIC0020](/programs/ZFIC0020.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0010](/programs/ZFIR0010.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0030](/programs/ZFIR0030.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0031](/programs/ZFIR0031.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0032](/programs/ZFIR0032.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0050](/programs/ZFIR0050.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0060](/programs/ZFIR0060.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0061](/programs/ZFIR0061.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0070](/programs/ZFIR0070.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0071](/programs/ZFIR0071.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0072](/programs/ZFIR0072.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0080](/programs/ZFIR0080.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0090](/programs/ZFIR0090.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0120](/programs/ZFIR0120.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0130](/programs/ZFIR0130.md) | LOG_CREATE | call_function | 905 | +| [ZFIR0170](/programs/ZFIR0170.md) | LOG_CREATE | call_function | 905 | diff --git a/wiki/functions/BAL_LOG_MSG_ADD.md b/wiki/functions/BAL_LOG_MSG_ADD.md new file mode 100644 index 0000000..6e74e6a --- /dev/null +++ b/wiki/functions/BAL_LOG_MSG_ADD.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "BAL_LOG_MSG_ADD" +description: "BAL_LOG_MSG_ADD — 호출 프로그램 17개" +resource: "abap://function/BAL_LOG_MSG_ADD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | LOG_CREATE | call_function | 924 | +| [ZFIC0020](/programs/ZFIC0020.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0010](/programs/ZFIR0010.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0030](/programs/ZFIR0030.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0031](/programs/ZFIR0031.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0032](/programs/ZFIR0032.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0050](/programs/ZFIR0050.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0060](/programs/ZFIR0060.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0061](/programs/ZFIR0061.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0070](/programs/ZFIR0070.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0071](/programs/ZFIR0071.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0072](/programs/ZFIR0072.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0080](/programs/ZFIR0080.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0090](/programs/ZFIR0090.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0120](/programs/ZFIR0120.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0130](/programs/ZFIR0130.md) | LOG_CREATE | call_function | 924 | +| [ZFIR0170](/programs/ZFIR0170.md) | LOG_CREATE | call_function | 924 | diff --git a/wiki/functions/BAPI_COSTACTPLN_POSTPRIMCOST.md b/wiki/functions/BAPI_COSTACTPLN_POSTPRIMCOST.md new file mode 100644 index 0000000..0fc97ab --- /dev/null +++ b/wiki/functions/BAPI_COSTACTPLN_POSTPRIMCOST.md @@ -0,0 +1,35 @@ +--- +type: abap-function +title: "BAPI_COSTACTPLN_POSTPRIMCOST" +description: "BAPI_COSTACTPLN_POSTPRIMCOST — 호출 프로그램 7개" +resource: "abap://function/BAPI_COSTACTPLN_POSTPRIMCOST" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 7 +x-call-sites: 7 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (7개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | MAKE_BAPI_DATA | call_function | 595 | +| [ZCOC0020](/programs/ZCOC0020.md) | MAKE_BAPI_DATA | call_function | 595 | +| [ZCOC0030](/programs/ZCOC0030.md) | BAPI_CARRY_FWD_POST | call_function | 348 | +| [ZCOC0050](/programs/ZCOC0050.md) | BAPI_POST_SENDER | call_function | 577 | +| [ZCOC0060](/programs/ZCOC0060.md) | BAPI_POST | call_function | 607 | +| [ZCOC0070](/programs/ZCOC0070.md) | BAPI_POST | call_function | 632 | +| [ZCOC0080](/programs/ZCOC0080.md) | BAPI_POST_SENDER | call_function | 591 | diff --git a/wiki/functions/BAPI_COSTCENTER_CHANGEMULTIPLE.md b/wiki/functions/BAPI_COSTCENTER_CHANGEMULTIPLE.md new file mode 100644 index 0000000..8689faa --- /dev/null +++ b/wiki/functions/BAPI_COSTCENTER_CHANGEMULTIPLE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "BAPI_COSTCENTER_CHANGEMULTIPLE" +description: "BAPI_COSTCENTER_CHANGEMULTIPLE — 호출 프로그램 1개" +resource: "abap://function/BAPI_COSTCENTER_CHANGEMULTIPLE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZCOC9020](/programs/ZCOC9020.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC9020](/programs/ZCOC9020.md) | RUN_BAPI | call_function | 531 | diff --git a/wiki/functions/BAPI_COSTCENTER_CREATEMULTIPLE.md b/wiki/functions/BAPI_COSTCENTER_CREATEMULTIPLE.md new file mode 100644 index 0000000..cfa6942 --- /dev/null +++ b/wiki/functions/BAPI_COSTCENTER_CREATEMULTIPLE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "BAPI_COSTCENTER_CREATEMULTIPLE" +description: "BAPI_COSTCENTER_CREATEMULTIPLE — 호출 프로그램 1개" +resource: "abap://function/BAPI_COSTCENTER_CREATEMULTIPLE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZCOC9010](/programs/ZCOC9010.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC9010](/programs/ZCOC9010.md) | RUN_BAPI | call_function | 502 | diff --git a/wiki/functions/BAPI_COSTELEMENTGRP_GETDETAIL.md b/wiki/functions/BAPI_COSTELEMENTGRP_GETDETAIL.md new file mode 100644 index 0000000..4891a38 --- /dev/null +++ b/wiki/functions/BAPI_COSTELEMENTGRP_GETDETAIL.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "BAPI_COSTELEMENTGRP_GETDETAIL" +description: "BAPI_COSTELEMENTGRP_GETDETAIL — 호출 프로그램 1개" +resource: "abap://function/BAPI_COSTELEMENTGRP_GETDETAIL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZCOR0010](/programs/ZCOR0010.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOR0010](/programs/ZCOR0010.md) | SELECT_DATA | call_function | 116 | diff --git a/wiki/functions/BAPI_CURRENCY_CONV_TO_INTERNAL.md b/wiki/functions/BAPI_CURRENCY_CONV_TO_INTERNAL.md new file mode 100644 index 0000000..05be0b2 --- /dev/null +++ b/wiki/functions/BAPI_CURRENCY_CONV_TO_INTERNAL.md @@ -0,0 +1,111 @@ +--- +type: abap-function +title: "BAPI_CURRENCY_CONV_TO_INTERNAL" +description: "BAPI_CURRENCY_CONV_TO_INTERNAL — 호출 프로그램 30개" +resource: "abap://function/BAPI_CURRENCY_CONV_TO_INTERNAL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 60 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0010](/programs/ZCOC0010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0020](/programs/ZCOC0020.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0030](/programs/ZCOC0030.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0030](/programs/ZCOC0030.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0040](/programs/ZCOC0040.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0040](/programs/ZCOC0040.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0050](/programs/ZCOC0050.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0060](/programs/ZCOC0060.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0070](/programs/ZCOC0070.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0080](/programs/ZCOC0080.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0090](/programs/ZCOC0090.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0100](/programs/ZCOC0100.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0110](/programs/ZCOC0110.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0120](/programs/ZCOC0120.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC0130](/programs/ZCOC0130.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC0130](/programs/ZCOC0130.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC1010](/programs/ZCOC1010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC1010](/programs/ZCOC1010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC2010](/programs/ZCOC2010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC2020](/programs/ZCOC2020.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC2030](/programs/ZCOC2030.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC2040](/programs/ZCOC2040.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC9010](/programs/ZCOC9010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC9020](/programs/ZCOC9020.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC9030](/programs/ZCOC9030.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOC9040](/programs/ZCOC9040.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR0010](/programs/ZCOR0010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR0010](/programs/ZCOR0010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR0020](/programs/ZCOR0020.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR0020](/programs/ZCOR0020.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR0030](/programs/ZCOR0030.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR0030](/programs/ZCOR0030.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR0040](/programs/ZCOR0040.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR0040](/programs/ZCOR0040.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR1010](/programs/ZCOR1010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR1010](/programs/ZCOR1010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZCOR2010](/programs/ZCOR2010.md) | CONVERT_CHAR_TO_AMT | call_function | 949 | +| [ZCOR2010](/programs/ZCOR2010.md) | AMT_CONV_TO_INTERNAL | call_function | 1151 | +| [ZFIR0020](/programs/ZFIR0020.md) | CONVERT_CHAR_TO_AMT | call_function | 905 | +| [ZFIR0020](/programs/ZFIR0020.md) | AMT_CONV_TO_INTERNAL | call_function | 1108 | +| [ZFIR0040](/programs/ZFIR0040.md) | CONVERT_CHAR_TO_AMT | call_function | 905 | +| [ZFIR0040](/programs/ZFIR0040.md) | AMT_CONV_TO_INTERNAL | call_function | 1108 | diff --git a/wiki/functions/BAPI_FIXEDASSET_CREATE.md b/wiki/functions/BAPI_FIXEDASSET_CREATE.md new file mode 100644 index 0000000..b6934c2 --- /dev/null +++ b/wiki/functions/BAPI_FIXEDASSET_CREATE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "BAPI_FIXEDASSET_CREATE" +description: "BAPI_FIXEDASSET_CREATE — 호출 프로그램 1개" +resource: "abap://function/BAPI_FIXEDASSET_CREATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZCOC0120](/programs/ZCOC0120.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_FIXED_ASSET | call_function | 1024 | diff --git a/wiki/functions/BAPI_PROFITCENTER_CREATE.md b/wiki/functions/BAPI_PROFITCENTER_CREATE.md new file mode 100644 index 0000000..f5c0fd2 --- /dev/null +++ b/wiki/functions/BAPI_PROFITCENTER_CREATE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "BAPI_PROFITCENTER_CREATE" +description: "BAPI_PROFITCENTER_CREATE — 호출 프로그램 1개" +resource: "abap://function/BAPI_PROFITCENTER_CREATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZCOC9030](/programs/ZCOC9030.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC9030](/programs/ZCOC9030.md) | RUN_BAPI | call_function | 390 | diff --git a/wiki/functions/BAPI_TRANSACTION_COMMIT.md b/wiki/functions/BAPI_TRANSACTION_COMMIT.md new file mode 100644 index 0000000..a9e41ec --- /dev/null +++ b/wiki/functions/BAPI_TRANSACTION_COMMIT.md @@ -0,0 +1,47 @@ +--- +type: abap-function +title: "BAPI_TRANSACTION_COMMIT" +description: "BAPI_TRANSACTION_COMMIT — 호출 프로그램 13개" +resource: "abap://function/BAPI_TRANSACTION_COMMIT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 13 +x-call-sites: 13 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (13개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | MAKE_BAPI_DATA | call_function | 608 | +| [ZCOC0020](/programs/ZCOC0020.md) | MAKE_BAPI_DATA | call_function | 608 | +| [ZCOC0030](/programs/ZCOC0030.md) | BAPI_CARRY_FWD_POST | call_function | 362 | +| [ZCOC0050](/programs/ZCOC0050.md) | BAPI_POST_SENDER | call_function | 590 | +| [ZCOC0060](/programs/ZCOC0060.md) | BAPI_POST | call_function | 620 | +| [ZCOC0070](/programs/ZCOC0070.md) | BAPI_POST | call_function | 645 | +| [ZCOC0080](/programs/ZCOC0080.md) | BAPI_POST_SENDER | call_function | 604 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_INITIAL_BUDGET | call_function | 925 | +| [ZCOC0100](/programs/ZCOC0100.md) | RUN_BAPI | call_function | 745 | +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_FIXED_ASSET | call_function | 1045 | +| [ZCOC9010](/programs/ZCOC9010.md) | RUN_BAPI | call_function | 520 | +| [ZCOC9020](/programs/ZCOC9020.md) | RUN_BAPI | call_function | 549 | +| [ZCOC9030](/programs/ZCOC9030.md) | RUN_BAPI | call_function | 409 | diff --git a/wiki/functions/BAPI_TRANSACTION_ROLLBACK.md b/wiki/functions/BAPI_TRANSACTION_ROLLBACK.md new file mode 100644 index 0000000..7426e49 --- /dev/null +++ b/wiki/functions/BAPI_TRANSACTION_ROLLBACK.md @@ -0,0 +1,47 @@ +--- +type: abap-function +title: "BAPI_TRANSACTION_ROLLBACK" +description: "BAPI_TRANSACTION_ROLLBACK — 호출 프로그램 13개" +resource: "abap://function/BAPI_TRANSACTION_ROLLBACK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 13 +x-call-sites: 13 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (13개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | MAKE_BAPI_DATA | call_function | 612 | +| [ZCOC0020](/programs/ZCOC0020.md) | MAKE_BAPI_DATA | call_function | 612 | +| [ZCOC0030](/programs/ZCOC0030.md) | BAPI_CARRY_FWD_POST | call_function | 372 | +| [ZCOC0050](/programs/ZCOC0050.md) | BAPI_POST_SENDER | call_function | 604 | +| [ZCOC0060](/programs/ZCOC0060.md) | BAPI_POST | call_function | 632 | +| [ZCOC0070](/programs/ZCOC0070.md) | BAPI_POST | call_function | 657 | +| [ZCOC0080](/programs/ZCOC0080.md) | BAPI_POST_SENDER | call_function | 615 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_INITIAL_BUDGET | call_function | 934 | +| [ZCOC0100](/programs/ZCOC0100.md) | RUN_BAPI | call_function | 756 | +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_FIXED_ASSET | call_function | 1064 | +| [ZCOC9010](/programs/ZCOC9010.md) | RUN_BAPI | call_function | 528 | +| [ZCOC9020](/programs/ZCOC9020.md) | RUN_BAPI | call_function | 557 | +| [ZCOC9030](/programs/ZCOC9030.md) | RUN_BAPI | call_function | 414 | diff --git a/wiki/functions/CALCULATE_TAXES_GROSS.md b/wiki/functions/CALCULATE_TAXES_GROSS.md new file mode 100644 index 0000000..b1b2744 --- /dev/null +++ b/wiki/functions/CALCULATE_TAXES_GROSS.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "CALCULATE_TAXES_GROSS" +description: "CALCULATE_TAXES_GROSS — 호출 프로그램 1개" +resource: "abap://function/CALCULATE_TAXES_GROSS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | call_function | 1326 | diff --git a/wiki/functions/CALL_BROWSER.md b/wiki/functions/CALL_BROWSER.md new file mode 100644 index 0000000..33893e1 --- /dev/null +++ b/wiki/functions/CALL_BROWSER.md @@ -0,0 +1,28 @@ +--- +type: abap-function +title: "CALL_BROWSER" +description: "CALL_BROWSER — 호출 프로그램 3개" +resource: "abap://function/CALL_BROWSER" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 3 +x-call-sites: 4 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (3개) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | call_function | 1526 | +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_PROCESSING_DATA | call_function | 2119 | +| [ZFIR0090](/programs/ZFIR0090.md) | DISPLAY_PROCESSING_DATA | call_function | 678 | +| [ZFIR0130](/programs/ZFIR0130.md) | DISPLAY_PROCESSING_DATA | call_function | 594 | diff --git a/wiki/functions/CLOI_PUT_SIGN_IN_FRONT.md b/wiki/functions/CLOI_PUT_SIGN_IN_FRONT.md new file mode 100644 index 0000000..92e0df8 --- /dev/null +++ b/wiki/functions/CLOI_PUT_SIGN_IN_FRONT.md @@ -0,0 +1,132 @@ +--- +type: abap-function +title: "CLOI_PUT_SIGN_IN_FRONT" +description: "CLOI_PUT_SIGN_IN_FRONT — 호출 프로그램 47개" +resource: "abap://function/CLOI_PUT_SIGN_IN_FRONT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 47 +x-call-sites: 64 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (47개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_MINUS_FRONT | call_function | 546 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0020](/programs/ZFIR0020.md) | SET_MINUS_FRONT | call_function | 533 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0040](/programs/ZFIR0040.md) | SET_MINUS_FRONT | call_function | 533 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_UNIT | call_function | 1047 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_UNIT | call_function | 324 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_UNIT | call_function | 1047 | diff --git a/wiki/functions/CLOSE_FORM.md b/wiki/functions/CLOSE_FORM.md new file mode 100644 index 0000000..4726e0f --- /dev/null +++ b/wiki/functions/CLOSE_FORM.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "CLOSE_FORM" +description: "CLOSE_FORM — 호출 프로그램 1개" +resource: "abap://function/CLOSE_FORM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4497 | diff --git a/wiki/functions/CONVERSION_EXIT_ALPHA_INPUT.md b/wiki/functions/CONVERSION_EXIT_ALPHA_INPUT.md new file mode 100644 index 0000000..db34ef2 --- /dev/null +++ b/wiki/functions/CONVERSION_EXIT_ALPHA_INPUT.md @@ -0,0 +1,117 @@ +--- +type: abap-function +title: "CONVERSION_EXIT_ALPHA_INPUT" +description: "CONVERSION_EXIT_ALPHA_INPUT — 호출 프로그램 48개" +resource: "abap://function/CONVERSION_EXIT_ALPHA_INPUT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 48 +x-call-sites: 48 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (48개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | ZERO_I | call_function | 391 | +| [ZCOC0020](/programs/ZCOC0020.md) | ZERO_I | call_function | 391 | +| [ZCOC0030](/programs/ZCOC0030.md) | ZERO_I | call_function | 391 | +| [ZCOC0040](/programs/ZCOC0040.md) | ZERO_I | call_function | 391 | +| [ZCOC0050](/programs/ZCOC0050.md) | ZERO_I | call_function | 391 | +| [ZCOC0060](/programs/ZCOC0060.md) | ZERO_I | call_function | 391 | +| [ZCOC0070](/programs/ZCOC0070.md) | ZERO_I | call_function | 391 | +| [ZCOC0080](/programs/ZCOC0080.md) | ZERO_I | call_function | 391 | +| [ZCOC0090](/programs/ZCOC0090.md) | ZERO_I | call_function | 391 | +| [ZCOC0100](/programs/ZCOC0100.md) | ZERO_I | call_function | 391 | +| [ZCOC0110](/programs/ZCOC0110.md) | ZERO_I | call_function | 391 | +| [ZCOC0120](/programs/ZCOC0120.md) | ZERO_I | call_function | 391 | +| [ZCOC0130](/programs/ZCOC0130.md) | ZERO_I | call_function | 391 | +| [ZCOC1010](/programs/ZCOC1010.md) | ZERO_I | call_function | 391 | +| [ZCOC2010](/programs/ZCOC2010.md) | ZERO_I | call_function | 391 | +| [ZCOC2020](/programs/ZCOC2020.md) | ZERO_I | call_function | 391 | +| [ZCOC2030](/programs/ZCOC2030.md) | ZERO_I | call_function | 391 | +| [ZCOC2040](/programs/ZCOC2040.md) | ZERO_I | call_function | 391 | +| [ZCOC9010](/programs/ZCOC9010.md) | ZERO_I | call_function | 391 | +| [ZCOC9020](/programs/ZCOC9020.md) | ZERO_I | call_function | 391 | +| [ZCOC9030](/programs/ZCOC9030.md) | ZERO_I | call_function | 391 | +| [ZCOC9040](/programs/ZCOC9040.md) | ZERO_I | call_function | 391 | +| [ZCOR0010](/programs/ZCOR0010.md) | ZERO_I | call_function | 391 | +| [ZCOR0020](/programs/ZCOR0020.md) | ZERO_I | call_function | 391 | +| [ZCOR0030](/programs/ZCOR0030.md) | ZERO_I | call_function | 391 | +| [ZCOR0040](/programs/ZCOR0040.md) | ZERO_I | call_function | 391 | +| [ZCOR1010](/programs/ZCOR1010.md) | ZERO_I | call_function | 391 | +| [ZCOR2010](/programs/ZCOR2010.md) | ZERO_I | call_function | 391 | +| [ZFIC0010](/programs/ZFIC0010.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0020](/programs/ZFIR0020.md) | ZERO_I | call_function | 389 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0040](/programs/ZFIR0040.md) | ZERO_I | call_function | 389 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | D_ALPHA | call_function | 104 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALPHA_INPUT | call_function | 268 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALPHA_INPUT | call_function | 268 | diff --git a/wiki/functions/CONVERSION_EXIT_ALPHA_OUTPUT.md b/wiki/functions/CONVERSION_EXIT_ALPHA_OUTPUT.md new file mode 100644 index 0000000..9957188 --- /dev/null +++ b/wiki/functions/CONVERSION_EXIT_ALPHA_OUTPUT.md @@ -0,0 +1,115 @@ +--- +type: abap-function +title: "CONVERSION_EXIT_ALPHA_OUTPUT" +description: "CONVERSION_EXIT_ALPHA_OUTPUT — 호출 프로그램 47개" +resource: "abap://function/CONVERSION_EXIT_ALPHA_OUTPUT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 47 +x-call-sites: 47 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (47개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | ZERO_O | call_function | 376 | +| [ZCOC0020](/programs/ZCOC0020.md) | ZERO_O | call_function | 376 | +| [ZCOC0030](/programs/ZCOC0030.md) | ZERO_O | call_function | 376 | +| [ZCOC0040](/programs/ZCOC0040.md) | ZERO_O | call_function | 376 | +| [ZCOC0050](/programs/ZCOC0050.md) | ZERO_O | call_function | 376 | +| [ZCOC0060](/programs/ZCOC0060.md) | ZERO_O | call_function | 376 | +| [ZCOC0070](/programs/ZCOC0070.md) | ZERO_O | call_function | 376 | +| [ZCOC0080](/programs/ZCOC0080.md) | ZERO_O | call_function | 376 | +| [ZCOC0090](/programs/ZCOC0090.md) | ZERO_O | call_function | 376 | +| [ZCOC0100](/programs/ZCOC0100.md) | ZERO_O | call_function | 376 | +| [ZCOC0110](/programs/ZCOC0110.md) | ZERO_O | call_function | 376 | +| [ZCOC0120](/programs/ZCOC0120.md) | ZERO_O | call_function | 376 | +| [ZCOC0130](/programs/ZCOC0130.md) | ZERO_O | call_function | 376 | +| [ZCOC1010](/programs/ZCOC1010.md) | ZERO_O | call_function | 376 | +| [ZCOC2010](/programs/ZCOC2010.md) | ZERO_O | call_function | 376 | +| [ZCOC2020](/programs/ZCOC2020.md) | ZERO_O | call_function | 376 | +| [ZCOC2030](/programs/ZCOC2030.md) | ZERO_O | call_function | 376 | +| [ZCOC2040](/programs/ZCOC2040.md) | ZERO_O | call_function | 376 | +| [ZCOC9010](/programs/ZCOC9010.md) | ZERO_O | call_function | 376 | +| [ZCOC9020](/programs/ZCOC9020.md) | ZERO_O | call_function | 376 | +| [ZCOC9030](/programs/ZCOC9030.md) | ZERO_O | call_function | 376 | +| [ZCOC9040](/programs/ZCOC9040.md) | ZERO_O | call_function | 376 | +| [ZCOR0010](/programs/ZCOR0010.md) | ZERO_O | call_function | 376 | +| [ZCOR0020](/programs/ZCOR0020.md) | ZERO_O | call_function | 376 | +| [ZCOR0030](/programs/ZCOR0030.md) | ZERO_O | call_function | 376 | +| [ZCOR0040](/programs/ZCOR0040.md) | ZERO_O | call_function | 376 | +| [ZCOR1010](/programs/ZCOR1010.md) | ZERO_O | call_function | 376 | +| [ZCOR2010](/programs/ZCOR2010.md) | ZERO_O | call_function | 376 | +| [ZFIC0010](/programs/ZFIC0010.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0020](/programs/ZFIR0020.md) | ZERO_O | call_function | 374 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0040](/programs/ZFIR0040.md) | ZERO_O | call_function | 374 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALPHA_OUTPUT | call_function | 283 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALPHA_OUTPUT | call_function | 283 | diff --git a/wiki/functions/CONVERT_OTF.md b/wiki/functions/CONVERT_OTF.md new file mode 100644 index 0000000..bcf2f16 --- /dev/null +++ b/wiki/functions/CONVERT_OTF.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "CONVERT_OTF" +description: "CONVERT_OTF — 호출 프로그램 30개" +resource: "abap://function/CONVERT_OTF" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0020](/programs/ZCOC0020.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0030](/programs/ZCOC0030.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0040](/programs/ZCOC0040.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0050](/programs/ZCOC0050.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0060](/programs/ZCOC0060.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0070](/programs/ZCOC0070.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0080](/programs/ZCOC0080.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0090](/programs/ZCOC0090.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0100](/programs/ZCOC0100.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0110](/programs/ZCOC0110.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0120](/programs/ZCOC0120.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC0130](/programs/ZCOC0130.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC1010](/programs/ZCOC1010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC2010](/programs/ZCOC2010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC2020](/programs/ZCOC2020.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC2030](/programs/ZCOC2030.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC2040](/programs/ZCOC2040.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC9010](/programs/ZCOC9010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC9020](/programs/ZCOC9020.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC9030](/programs/ZCOC9030.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOC9040](/programs/ZCOC9040.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR0010](/programs/ZCOR0010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR0020](/programs/ZCOR0020.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR0030](/programs/ZCOR0030.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR0040](/programs/ZCOR0040.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR1010](/programs/ZCOR1010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZCOR2010](/programs/ZCOR2010.md) | F_PDF_DOWNLOAD | call_function | 1794 | +| [ZFIR0020](/programs/ZFIR0020.md) | F_PDF_DOWNLOAD | call_function | 1751 | +| [ZFIR0040](/programs/ZFIR0040.md) | F_PDF_DOWNLOAD | call_function | 1751 | diff --git a/wiki/functions/CONVERT_TO_FOREIGN_CURRENCY.md b/wiki/functions/CONVERT_TO_FOREIGN_CURRENCY.md new file mode 100644 index 0000000..508822d --- /dev/null +++ b/wiki/functions/CONVERT_TO_FOREIGN_CURRENCY.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "CONVERT_TO_FOREIGN_CURRENCY" +description: "CONVERT_TO_FOREIGN_CURRENCY — 호출 프로그램 17개" +resource: "abap://function/CONVERT_TO_FOREIGN_CURRENCY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIC0020](/programs/ZFIC0020.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0010](/programs/ZFIR0010.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0030](/programs/ZFIR0030.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0031](/programs/ZFIR0031.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0032](/programs/ZFIR0032.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0050](/programs/ZFIR0050.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0060](/programs/ZFIR0060.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0061](/programs/ZFIR0061.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0070](/programs/ZFIR0070.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0071](/programs/ZFIR0071.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0072](/programs/ZFIR0072.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0080](/programs/ZFIR0080.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0090](/programs/ZFIR0090.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0120](/programs/ZFIR0120.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0130](/programs/ZFIR0130.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | +| [ZFIR0170](/programs/ZFIR0170.md) | CONVERT_TO_FOREIGN_CURRENCY | call_function | 970 | diff --git a/wiki/functions/CONVERT_TO_LOCAL_CURRENCY.md b/wiki/functions/CONVERT_TO_LOCAL_CURRENCY.md new file mode 100644 index 0000000..ccb9a38 --- /dev/null +++ b/wiki/functions/CONVERT_TO_LOCAL_CURRENCY.md @@ -0,0 +1,118 @@ +--- +type: abap-function +title: "CONVERT_TO_LOCAL_CURRENCY" +description: "CONVERT_TO_LOCAL_CURRENCY — 호출 프로그램 48개" +resource: "abap://function/CONVERT_TO_LOCAL_CURRENCY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 48 +x-call-sites: 49 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (48개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0141](/programs/ZFIR0141.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0030](/programs/ZCOC0030.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0040](/programs/ZCOC0040.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC0130](/programs/ZCOC0130.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC1010](/programs/ZCOC1010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR0010](/programs/ZCOR0010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR0020](/programs/ZCOR0020.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR0030](/programs/ZCOR0030.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR0040](/programs/ZCOR0040.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR1010](/programs/ZCOR1010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZCOR2010](/programs/ZCOR2010.md) | CONVERT_CURRENCY | call_function | 909 | +| [ZFIC0010](/programs/ZFIC0010.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIC0020](/programs/ZFIC0020.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0010](/programs/ZFIR0010.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0020](/programs/ZFIR0020.md) | CONVERT_CURRENCY | call_function | 865 | +| [ZFIR0030](/programs/ZFIR0030.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0031](/programs/ZFIR0031.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0032](/programs/ZFIR0032.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0040](/programs/ZFIR0040.md) | CONVERT_CURRENCY | call_function | 865 | +| [ZFIR0050](/programs/ZFIR0050.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0060](/programs/ZFIR0060.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0061](/programs/ZFIR0061.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0070](/programs/ZFIR0070.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0071](/programs/ZFIR0071.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0072](/programs/ZFIR0072.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0080](/programs/ZFIR0080.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0090](/programs/ZFIR0090.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0120](/programs/ZFIR0120.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0130](/programs/ZFIR0130.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | +| [ZFIR0141](/programs/ZFIR0141.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 4559 | +| [ZFIR0141](/programs/ZFIR0141.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 4581 | +| [ZFIR0170](/programs/ZFIR0170.md) | CONVERT_TO_LOCAL_CURRENCY | call_function | 1019 | diff --git a/wiki/functions/CURRENCY_AMOUNT_IDOC_TO_SAP.md b/wiki/functions/CURRENCY_AMOUNT_IDOC_TO_SAP.md new file mode 100644 index 0000000..01f17d9 --- /dev/null +++ b/wiki/functions/CURRENCY_AMOUNT_IDOC_TO_SAP.md @@ -0,0 +1,128 @@ +--- +type: abap-function +title: "CURRENCY_AMOUNT_IDOC_TO_SAP" +description: "CURRENCY_AMOUNT_IDOC_TO_SAP — 호출 프로그램 45개" +resource: "abap://function/CURRENCY_AMOUNT_IDOC_TO_SAP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 45 +x-call-sites: 62 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (45개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0030](/programs/ZCOC0030.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0040](/programs/ZCOC0040.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC0130](/programs/ZCOC0130.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC1010](/programs/ZCOC1010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR0010](/programs/ZCOR0010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR0020](/programs/ZCOR0020.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR0030](/programs/ZCOR0030.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR0040](/programs/ZCOR0040.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR1010](/programs/ZCOR1010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZCOR2010](/programs/ZCOR2010.md) | CONV_DB_WAERS | call_function | 2110 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_CURRENCY_SAP | call_function | 347 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_CURRENCY_SAP | call_function | 1070 | diff --git a/wiki/functions/CURRENCY_AMOUNT_SAP_TO_IDOC.md b/wiki/functions/CURRENCY_AMOUNT_SAP_TO_IDOC.md new file mode 100644 index 0000000..960c11c --- /dev/null +++ b/wiki/functions/CURRENCY_AMOUNT_SAP_TO_IDOC.md @@ -0,0 +1,128 @@ +--- +type: abap-function +title: "CURRENCY_AMOUNT_SAP_TO_IDOC" +description: "CURRENCY_AMOUNT_SAP_TO_IDOC — 호출 프로그램 45개" +resource: "abap://function/CURRENCY_AMOUNT_SAP_TO_IDOC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 45 +x-call-sites: 62 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (45개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0030](/programs/ZCOC0030.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0040](/programs/ZCOC0040.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC0130](/programs/ZCOC0130.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC1010](/programs/ZCOC1010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR0010](/programs/ZCOR0010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR0020](/programs/ZCOR0020.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR0030](/programs/ZCOR0030.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR0040](/programs/ZCOR0040.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR1010](/programs/ZCOR1010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZCOR2010](/programs/ZCOR2010.md) | CONV_VIEW_WAERS | call_function | 2128 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHANGE_CURRENCY | call_function | 1057 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_CURRENCY | call_function | 334 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHANGE_CURRENCY | call_function | 1057 | diff --git a/wiki/functions/DATE_CHECK_PLAUSIBILITY.md b/wiki/functions/DATE_CHECK_PLAUSIBILITY.md new file mode 100644 index 0000000..cf5a6e6 --- /dev/null +++ b/wiki/functions/DATE_CHECK_PLAUSIBILITY.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "DATE_CHECK_PLAUSIBILITY" +description: "DATE_CHECK_PLAUSIBILITY — 호출 프로그램 30개" +resource: "abap://function/DATE_CHECK_PLAUSIBILITY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | DATE_CHK | call_function | 447 | +| [ZCOC0020](/programs/ZCOC0020.md) | DATE_CHK | call_function | 447 | +| [ZCOC0030](/programs/ZCOC0030.md) | DATE_CHK | call_function | 447 | +| [ZCOC0040](/programs/ZCOC0040.md) | DATE_CHK | call_function | 447 | +| [ZCOC0050](/programs/ZCOC0050.md) | DATE_CHK | call_function | 447 | +| [ZCOC0060](/programs/ZCOC0060.md) | DATE_CHK | call_function | 447 | +| [ZCOC0070](/programs/ZCOC0070.md) | DATE_CHK | call_function | 447 | +| [ZCOC0080](/programs/ZCOC0080.md) | DATE_CHK | call_function | 447 | +| [ZCOC0090](/programs/ZCOC0090.md) | DATE_CHK | call_function | 447 | +| [ZCOC0100](/programs/ZCOC0100.md) | DATE_CHK | call_function | 447 | +| [ZCOC0110](/programs/ZCOC0110.md) | DATE_CHK | call_function | 447 | +| [ZCOC0120](/programs/ZCOC0120.md) | DATE_CHK | call_function | 447 | +| [ZCOC0130](/programs/ZCOC0130.md) | DATE_CHK | call_function | 447 | +| [ZCOC1010](/programs/ZCOC1010.md) | DATE_CHK | call_function | 447 | +| [ZCOC2010](/programs/ZCOC2010.md) | DATE_CHK | call_function | 447 | +| [ZCOC2020](/programs/ZCOC2020.md) | DATE_CHK | call_function | 447 | +| [ZCOC2030](/programs/ZCOC2030.md) | DATE_CHK | call_function | 447 | +| [ZCOC2040](/programs/ZCOC2040.md) | DATE_CHK | call_function | 447 | +| [ZCOC9010](/programs/ZCOC9010.md) | DATE_CHK | call_function | 447 | +| [ZCOC9020](/programs/ZCOC9020.md) | DATE_CHK | call_function | 447 | +| [ZCOC9030](/programs/ZCOC9030.md) | DATE_CHK | call_function | 447 | +| [ZCOC9040](/programs/ZCOC9040.md) | DATE_CHK | call_function | 447 | +| [ZCOR0010](/programs/ZCOR0010.md) | DATE_CHK | call_function | 447 | +| [ZCOR0020](/programs/ZCOR0020.md) | DATE_CHK | call_function | 447 | +| [ZCOR0030](/programs/ZCOR0030.md) | DATE_CHK | call_function | 447 | +| [ZCOR0040](/programs/ZCOR0040.md) | DATE_CHK | call_function | 447 | +| [ZCOR1010](/programs/ZCOR1010.md) | DATE_CHK | call_function | 447 | +| [ZCOR2010](/programs/ZCOR2010.md) | DATE_CHK | call_function | 447 | +| [ZFIR0020](/programs/ZFIR0020.md) | DATE_CHK | call_function | 445 | +| [ZFIR0040](/programs/ZFIR0040.md) | DATE_CHK | call_function | 445 | diff --git a/wiki/functions/DEQUEUE_EZ_ZCOT0020.md b/wiki/functions/DEQUEUE_EZ_ZCOT0020.md new file mode 100644 index 0000000..56b1653 --- /dev/null +++ b/wiki/functions/DEQUEUE_EZ_ZCOT0020.md @@ -0,0 +1,31 @@ +--- +type: abap-function +title: "DEQUEUE_EZ_ZCOT0020" +description: "DEQUEUE_EZ_ZCOT0020 — 호출 프로그램 5개" +resource: "abap://function/DEQUEUE_EZ_ZCOT0020" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 5 +x-call-sites: 5 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (5개) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | DEQUEUE_ZCOT0020 | call_function | 814 | +| [ZCOC0050](/programs/ZCOC0050.md) | DEQUEUE_ZCOT0020 | call_function | 737 | +| [ZCOC0060](/programs/ZCOC0060.md) | DEQUEUE_ZCOT0020 | call_function | 786 | +| [ZCOC0070](/programs/ZCOC0070.md) | DEQUEUE_ZCOT0020 | call_function | 811 | +| [ZCOC0080](/programs/ZCOC0080.md) | DEQUEUE_ZCOT0020 | call_function | 750 | diff --git a/wiki/functions/DOMAIN_VALUE_GET.md b/wiki/functions/DOMAIN_VALUE_GET.md new file mode 100644 index 0000000..a0ab30f --- /dev/null +++ b/wiki/functions/DOMAIN_VALUE_GET.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "DOMAIN_VALUE_GET" +description: "DOMAIN_VALUE_GET — 호출 프로그램 17개" +resource: "abap://function/DOMAIN_VALUE_GET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIC0020](/programs/ZFIC0020.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0010](/programs/ZFIR0010.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0060](/programs/ZFIR0060.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0071](/programs/ZFIR0071.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0130](/programs/ZFIR0130.md) | GET_DOMAIN_VALUE | call_function | 578 | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_DOMAIN_VALUE | call_function | 578 | diff --git a/wiki/functions/DOWNLOAD_WEB_OBJECT.md b/wiki/functions/DOWNLOAD_WEB_OBJECT.md new file mode 100644 index 0000000..0b2728e --- /dev/null +++ b/wiki/functions/DOWNLOAD_WEB_OBJECT.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "DOWNLOAD_WEB_OBJECT" +description: "DOWNLOAD_WEB_OBJECT — 호출 프로그램 2개" +resource: "abap://function/DOWNLOAD_WEB_OBJECT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | DOWNLOAD_TEMPLATE | call_function | 88 | +| [ZFIC0020](/programs/ZFIC0020.md) | FILE_DOWNLOAD | call_function | 373 | diff --git a/wiki/functions/DYNP_VALUES_READ.md b/wiki/functions/DYNP_VALUES_READ.md new file mode 100644 index 0000000..76ae1db --- /dev/null +++ b/wiki/functions/DYNP_VALUES_READ.md @@ -0,0 +1,117 @@ +--- +type: abap-function +title: "DYNP_VALUES_READ" +description: "DYNP_VALUES_READ — 호출 프로그램 48개" +resource: "abap://function/DYNP_VALUES_READ" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 48 +x-call-sites: 48 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (48개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_DYNP_VALUES_READ | call_function | 1635 | +| [ZFIC0010](/programs/ZFIC0010.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIC0020](/programs/ZFIC0020.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0010](/programs/ZFIR0010.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_DYNP_VALUES_READ | call_function | 1592 | +| [ZFIR0030](/programs/ZFIR0030.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0031](/programs/ZFIR0031.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0032](/programs/ZFIR0032.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_DYNP_VALUES_READ | call_function | 1592 | +| [ZFIR0050](/programs/ZFIR0050.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0060](/programs/ZFIR0060.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0061](/programs/ZFIR0061.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0070](/programs/ZFIR0070.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0071](/programs/ZFIR0071.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0072](/programs/ZFIR0072.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0080](/programs/ZFIR0080.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0090](/programs/ZFIR0090.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | DYNP_VALUES_READ | call_function | 242 | +| [ZFIR0120](/programs/ZFIR0120.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0130](/programs/ZFIR0130.md) | DYNP_VALUES_READ | call_function | 690 | +| [ZFIR0170](/programs/ZFIR0170.md) | DYNP_VALUES_READ | call_function | 690 | diff --git a/wiki/functions/DYNP_VALUES_UPDATE.md b/wiki/functions/DYNP_VALUES_UPDATE.md new file mode 100644 index 0000000..9686536 --- /dev/null +++ b/wiki/functions/DYNP_VALUES_UPDATE.md @@ -0,0 +1,86 @@ +--- +type: abap-function +title: "DYNP_VALUES_UPDATE" +description: "DYNP_VALUES_UPDATE — 호출 프로그램 32개" +resource: "abap://function/DYNP_VALUES_UPDATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 32 +x-call-sites: 33 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (32개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_DYNP_VALUES | call_function | 1698 | +| [ZFIR0020](/programs/ZFIR0020.md) | SET_DYNP_VALUES | call_function | 1655 | +| [ZFIR0040](/programs/ZFIR0040.md) | SET_DYNP_VALUES | call_function | 1655 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | call_function | 200 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_ZTERM INPUT | call_function | 316 | +| [ZFIR0140](/programs/ZFIR0140.md) | VALUE_UPDATE | call_function | 2253 | diff --git a/wiki/functions/END_FORM.md b/wiki/functions/END_FORM.md new file mode 100644 index 0000000..12e53fb --- /dev/null +++ b/wiki/functions/END_FORM.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "END_FORM" +description: "END_FORM — 호출 프로그램 1개" +resource: "abap://function/END_FORM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4481 | diff --git a/wiki/functions/ENQUEUE_EZ_ZCOT0020.md b/wiki/functions/ENQUEUE_EZ_ZCOT0020.md new file mode 100644 index 0000000..f949449 --- /dev/null +++ b/wiki/functions/ENQUEUE_EZ_ZCOT0020.md @@ -0,0 +1,31 @@ +--- +type: abap-function +title: "ENQUEUE_EZ_ZCOT0020" +description: "ENQUEUE_EZ_ZCOT0020 — 호출 프로그램 5개" +resource: "abap://function/ENQUEUE_EZ_ZCOT0020" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 5 +x-call-sites: 5 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (5개) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | ENQUEUE_ZCOT0020 | call_function | 788 | +| [ZCOC0050](/programs/ZCOC0050.md) | ENQUEUE_ZCOT0020 | call_function | 711 | +| [ZCOC0060](/programs/ZCOC0060.md) | ENQUEUE_ZCOT0020 | call_function | 760 | +| [ZCOC0070](/programs/ZCOC0070.md) | ENQUEUE_ZCOT0020 | call_function | 785 | +| [ZCOC0080](/programs/ZCOC0080.md) | ENQUEUE_ZCOT0020 | call_function | 724 | diff --git a/wiki/functions/F4IF_INT_TABLE_VALUE_REQUEST.md b/wiki/functions/F4IF_INT_TABLE_VALUE_REQUEST.md new file mode 100644 index 0000000..bc9004f --- /dev/null +++ b/wiki/functions/F4IF_INT_TABLE_VALUE_REQUEST.md @@ -0,0 +1,115 @@ +--- +type: abap-function +title: "F4IF_INT_TABLE_VALUE_REQUEST" +description: "F4IF_INT_TABLE_VALUE_REQUEST — 호출 프로그램 47개" +resource: "abap://function/F4IF_INT_TABLE_VALUE_REQUEST" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 47 +x-call-sites: 47 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (47개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0020](/programs/ZCOC0020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0030](/programs/ZCOC0030.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0040](/programs/ZCOC0040.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0050](/programs/ZCOC0050.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0060](/programs/ZCOC0060.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0070](/programs/ZCOC0070.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0080](/programs/ZCOC0080.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0090](/programs/ZCOC0090.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0100](/programs/ZCOC0100.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0110](/programs/ZCOC0110.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0120](/programs/ZCOC0120.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC0130](/programs/ZCOC0130.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC1010](/programs/ZCOC1010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC2010](/programs/ZCOC2010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC2020](/programs/ZCOC2020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC2030](/programs/ZCOC2030.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC2040](/programs/ZCOC2040.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC9010](/programs/ZCOC9010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC9020](/programs/ZCOC9020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC9030](/programs/ZCOC9030.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOC9040](/programs/ZCOC9040.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR0010](/programs/ZCOR0010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR0020](/programs/ZCOR0020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR0030](/programs/ZCOR0030.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR0040](/programs/ZCOR0040.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR1010](/programs/ZCOR1010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZCOR2010](/programs/ZCOR2010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 977 | +| [ZFIC0010](/programs/ZFIC0010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIC0020](/programs/ZFIC0020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0010](/programs/ZFIR0010.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0020](/programs/ZFIR0020.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 933 | +| [ZFIR0030](/programs/ZFIR0030.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0031](/programs/ZFIR0031.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0032](/programs/ZFIR0032.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0040](/programs/ZFIR0040.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 933 | +| [ZFIR0050](/programs/ZFIR0050.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0060](/programs/ZFIR0060.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0061](/programs/ZFIR0061.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0070](/programs/ZFIR0070.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0071](/programs/ZFIR0071.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0072](/programs/ZFIR0072.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0080](/programs/ZFIR0080.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0090](/programs/ZFIR0090.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0120](/programs/ZFIR0120.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0130](/programs/ZFIR0130.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | +| [ZFIR0170](/programs/ZFIR0170.md) | F4IF_INT_TABLE_VALUE_REQUEST | call_function | 1192 | diff --git a/wiki/functions/F4_DATE.md b/wiki/functions/F4_DATE.md new file mode 100644 index 0000000..610d2a8 --- /dev/null +++ b/wiki/functions/F4_DATE.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "F4_DATE" +description: "F4_DATE — 호출 프로그램 30개" +resource: "abap://function/F4_DATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0020](/programs/ZCOC0020.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0030](/programs/ZCOC0030.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0040](/programs/ZCOC0040.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0050](/programs/ZCOC0050.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0060](/programs/ZCOC0060.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0070](/programs/ZCOC0070.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0080](/programs/ZCOC0080.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0090](/programs/ZCOC0090.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0100](/programs/ZCOC0100.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0110](/programs/ZCOC0110.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0120](/programs/ZCOC0120.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC0130](/programs/ZCOC0130.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC1010](/programs/ZCOC1010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC2010](/programs/ZCOC2010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC2020](/programs/ZCOC2020.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC2030](/programs/ZCOC2030.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC2040](/programs/ZCOC2040.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC9010](/programs/ZCOC9010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC9020](/programs/ZCOC9020.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC9030](/programs/ZCOC9030.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOC9040](/programs/ZCOC9040.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR0010](/programs/ZCOR0010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR0040](/programs/ZCOR0040.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR1010](/programs/ZCOR1010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZCOR2010](/programs/ZCOR2010.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 432 | +| [ZFIR0020](/programs/ZFIR0020.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 430 | +| [ZFIR0040](/programs/ZFIR0040.md) | F4_DATE_FORMAT_YYYYMMDD | call_function | 430 | diff --git a/wiki/functions/FI_F4_ZTERM.md b/wiki/functions/FI_F4_ZTERM.md new file mode 100644 index 0000000..7827b27 --- /dev/null +++ b/wiki/functions/FI_F4_ZTERM.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "FI_F4_ZTERM" +description: "FI_F4_ZTERM — 호출 프로그램 1개" +resource: "abap://function/FI_F4_ZTERM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_ZTERM INPUT | call_function | 296 | diff --git a/wiki/functions/FI_FIND_PAYMENT_CONDITIONS.md b/wiki/functions/FI_FIND_PAYMENT_CONDITIONS.md new file mode 100644 index 0000000..e408576 --- /dev/null +++ b/wiki/functions/FI_FIND_PAYMENT_CONDITIONS.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "FI_FIND_PAYMENT_CONDITIONS" +description: "FI_FIND_PAYMENT_CONDITIONS — 호출 프로그램 1개" +resource: "abap://function/FI_FIND_PAYMENT_CONDITIONS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_ZFBDT INPUT | call_function | 1194 | diff --git a/wiki/functions/FI_PERIOD_DETERMINE.md b/wiki/functions/FI_PERIOD_DETERMINE.md new file mode 100644 index 0000000..b9769c9 --- /dev/null +++ b/wiki/functions/FI_PERIOD_DETERMINE.md @@ -0,0 +1,83 @@ +--- +type: abap-function +title: "FI_PERIOD_DETERMINE" +description: "FI_PERIOD_DETERMINE — 호출 프로그램 31개" +resource: "abap://function/FI_PERIOD_DETERMINE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 31 +x-call-sites: 31 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (31개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_POST_PERIOD | call_function | 2062 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_POST_PERIOD | call_function | 2019 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_POST_PERIOD | call_function | 2019 | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_TAXINVOICE_YEAR | call_function | 1680 | diff --git a/wiki/functions/GET_BUPLA_ADDRESS.md b/wiki/functions/GET_BUPLA_ADDRESS.md new file mode 100644 index 0000000..bd3f8ff --- /dev/null +++ b/wiki/functions/GET_BUPLA_ADDRESS.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "GET_BUPLA_ADDRESS" +description: "GET_BUPLA_ADDRESS — 호출 프로그램 1개" +resource: "abap://function/GET_BUPLA_ADDRESS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | GET_BUPLA | call_function | 1567 | diff --git a/wiki/functions/GET_PRINT_PARAMETERS.md b/wiki/functions/GET_PRINT_PARAMETERS.md new file mode 100644 index 0000000..af6497f --- /dev/null +++ b/wiki/functions/GET_PRINT_PARAMETERS.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "GET_PRINT_PARAMETERS" +description: "GET_PRINT_PARAMETERS — 호출 프로그램 1개" +resource: "abap://function/GET_PRINT_PARAMETERS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | LIST_OUTPUT | call_function | 2914 | diff --git a/wiki/functions/GUI_DOWNLOAD.md b/wiki/functions/GUI_DOWNLOAD.md new file mode 100644 index 0000000..9b1b3a4 --- /dev/null +++ b/wiki/functions/GUI_DOWNLOAD.md @@ -0,0 +1,83 @@ +--- +type: abap-function +title: "GUI_DOWNLOAD" +description: "GUI_DOWNLOAD — 호출 프로그램 31개" +resource: "abap://function/GUI_DOWNLOAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 31 +x-call-sites: 31 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (31개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0020](/programs/ZCOC0020.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0030](/programs/ZCOC0030.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0040](/programs/ZCOC0040.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0050](/programs/ZCOC0050.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0060](/programs/ZCOC0060.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0070](/programs/ZCOC0070.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0080](/programs/ZCOC0080.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0090](/programs/ZCOC0090.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0100](/programs/ZCOC0100.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0110](/programs/ZCOC0110.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0120](/programs/ZCOC0120.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC0130](/programs/ZCOC0130.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC1010](/programs/ZCOC1010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC2010](/programs/ZCOC2010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC2020](/programs/ZCOC2020.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC2030](/programs/ZCOC2030.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC2040](/programs/ZCOC2040.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC9010](/programs/ZCOC9010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC9020](/programs/ZCOC9020.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC9030](/programs/ZCOC9030.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOC9040](/programs/ZCOC9040.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR0010](/programs/ZCOR0010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR0020](/programs/ZCOR0020.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR0030](/programs/ZCOR0030.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR0040](/programs/ZCOR0040.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR1010](/programs/ZCOR1010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZCOR2010](/programs/ZCOR2010.md) | F_PDF_DOWNLOAD | call_function | 1834 | +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_DOWNLOAD | call_function | 320 | +| [ZFIR0020](/programs/ZFIR0020.md) | F_PDF_DOWNLOAD | call_function | 1791 | +| [ZFIR0040](/programs/ZFIR0040.md) | F_PDF_DOWNLOAD | call_function | 1791 | diff --git a/wiki/functions/GUI_UPLOAD.md b/wiki/functions/GUI_UPLOAD.md new file mode 100644 index 0000000..7116b49 --- /dev/null +++ b/wiki/functions/GUI_UPLOAD.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "GUI_UPLOAD" +description: "GUI_UPLOAD — 호출 프로그램 17개" +resource: "abap://function/GUI_UPLOAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0010](/programs/ZFIR0010.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0030](/programs/ZFIR0030.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0031](/programs/ZFIR0031.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0032](/programs/ZFIR0032.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0050](/programs/ZFIR0050.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0060](/programs/ZFIR0060.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0061](/programs/ZFIR0061.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0070](/programs/ZFIR0070.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0071](/programs/ZFIR0071.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0072](/programs/ZFIR0072.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0080](/programs/ZFIR0080.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0090](/programs/ZFIR0090.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0120](/programs/ZFIR0120.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0130](/programs/ZFIR0130.md) | DATA_UPLOAD | call_function | 872 | +| [ZFIR0170](/programs/ZFIR0170.md) | DATA_UPLOAD | call_function | 872 | diff --git a/wiki/functions/HELP_VALUES_GET_NO_DD_NAME.md b/wiki/functions/HELP_VALUES_GET_NO_DD_NAME.md new file mode 100644 index 0000000..cb3829b --- /dev/null +++ b/wiki/functions/HELP_VALUES_GET_NO_DD_NAME.md @@ -0,0 +1,59 @@ +--- +type: abap-function +title: "HELP_VALUES_GET_NO_DD_NAME" +description: "HELP_VALUES_GET_NO_DD_NAME — 호출 프로그램 19개" +resource: "abap://function/HELP_VALUES_GET_NO_DD_NAME" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 19 +x-call-sites: 19 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (19개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0160](/programs/ZFIR0160.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIC0020](/programs/ZFIC0020.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0010](/programs/ZFIR0010.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0030](/programs/ZFIR0030.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0031](/programs/ZFIR0031.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0032](/programs/ZFIR0032.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0050](/programs/ZFIR0050.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0060](/programs/ZFIR0060.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0061](/programs/ZFIR0061.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0070](/programs/ZFIR0070.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0071](/programs/ZFIR0071.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0072](/programs/ZFIR0072.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0080](/programs/ZFIR0080.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0090](/programs/ZFIR0090.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_BUPLA INPUT | call_function | 434 | +| [ZFIR0120](/programs/ZFIR0120.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0130](/programs/ZFIR0130.md) | HELP_DISPLAY | call_function | 732 | +| [ZFIR0160](/programs/ZFIR0160.md) | F4_UNAME_PROCESS | call_function | 1387 | +| [ZFIR0170](/programs/ZFIR0170.md) | HELP_DISPLAY | call_function | 732 | diff --git a/wiki/functions/HELP_VALUES_GET_WITH_TABLE.md b/wiki/functions/HELP_VALUES_GET_WITH_TABLE.md new file mode 100644 index 0000000..f779014 --- /dev/null +++ b/wiki/functions/HELP_VALUES_GET_WITH_TABLE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "HELP_VALUES_GET_WITH_TABLE" +description: "HELP_VALUES_GET_WITH_TABLE — 호출 프로그램 1개" +resource: "abap://function/HELP_VALUES_GET_WITH_TABLE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | call_function | 164 | diff --git a/wiki/functions/HELP_VALUES_GET_WITH_TABLE_EXT.md b/wiki/functions/HELP_VALUES_GET_WITH_TABLE_EXT.md new file mode 100644 index 0000000..904fa9f --- /dev/null +++ b/wiki/functions/HELP_VALUES_GET_WITH_TABLE_EXT.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "HELP_VALUES_GET_WITH_TABLE_EXT" +description: "HELP_VALUES_GET_WITH_TABLE_EXT — 호출 프로그램 1개" +resource: "abap://function/HELP_VALUES_GET_WITH_TABLE_EXT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | VALUE_HELP | call_function | 2231 | diff --git a/wiki/functions/HRVE_GET_TIME_BETWEEN_DATES.md b/wiki/functions/HRVE_GET_TIME_BETWEEN_DATES.md new file mode 100644 index 0000000..8d9ce27 --- /dev/null +++ b/wiki/functions/HRVE_GET_TIME_BETWEEN_DATES.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "HRVE_GET_TIME_BETWEEN_DATES" +description: "HRVE_GET_TIME_BETWEEN_DATES — 호출 프로그램 17개" +resource: "abap://function/HRVE_GET_TIME_BETWEEN_DATES" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIC0020](/programs/ZFIC0020.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0010](/programs/ZFIR0010.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0030](/programs/ZFIR0030.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0031](/programs/ZFIR0031.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0032](/programs/ZFIR0032.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0050](/programs/ZFIR0050.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0060](/programs/ZFIR0060.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0061](/programs/ZFIR0061.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0070](/programs/ZFIR0070.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0071](/programs/ZFIR0071.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0072](/programs/ZFIR0072.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0080](/programs/ZFIR0080.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0090](/programs/ZFIR0090.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0120](/programs/ZFIR0120.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0130](/programs/ZFIR0130.md) | CALC_BETWEEN_DATES | call_function | 642 | +| [ZFIR0170](/programs/ZFIR0170.md) | CALC_BETWEEN_DATES | call_function | 642 | diff --git a/wiki/functions/ICON_CREATE.md b/wiki/functions/ICON_CREATE.md new file mode 100644 index 0000000..5f1a137 --- /dev/null +++ b/wiki/functions/ICON_CREATE.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "ICON_CREATE" +description: "ICON_CREATE — 호출 프로그램 17개" +resource: "abap://function/ICON_CREATE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | CREATE_ICON | call_function | 833 | +| [ZFIC0020](/programs/ZFIC0020.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0010](/programs/ZFIR0010.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0030](/programs/ZFIR0030.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0031](/programs/ZFIR0031.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0032](/programs/ZFIR0032.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0050](/programs/ZFIR0050.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0060](/programs/ZFIR0060.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0061](/programs/ZFIR0061.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0070](/programs/ZFIR0070.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0071](/programs/ZFIR0071.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0072](/programs/ZFIR0072.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0080](/programs/ZFIR0080.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0090](/programs/ZFIR0090.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0120](/programs/ZFIR0120.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0130](/programs/ZFIR0130.md) | CREATE_ICON | call_function | 833 | +| [ZFIR0170](/programs/ZFIR0170.md) | CREATE_ICON | call_function | 833 | diff --git a/wiki/functions/KBPP_EXTERN_UPDATE_CO.md b/wiki/functions/KBPP_EXTERN_UPDATE_CO.md new file mode 100644 index 0000000..d4fc927 --- /dev/null +++ b/wiki/functions/KBPP_EXTERN_UPDATE_CO.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "KBPP_EXTERN_UPDATE_CO" +description: "KBPP_EXTERN_UPDATE_CO — 호출 프로그램 2개" +resource: "abap://function/KBPP_EXTERN_UPDATE_CO" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | SET_INITIAL_BUDGET | call_function | 899 | +| [ZCOC0100](/programs/ZCOC0100.md) | RUN_BAPI | call_function | 719 | diff --git a/wiki/functions/KCD_EXCEL_OLE_TO_INT_CONVERT.md b/wiki/functions/KCD_EXCEL_OLE_TO_INT_CONVERT.md new file mode 100644 index 0000000..69361c1 --- /dev/null +++ b/wiki/functions/KCD_EXCEL_OLE_TO_INT_CONVERT.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "KCD_EXCEL_OLE_TO_INT_CONVERT" +description: "KCD_EXCEL_OLE_TO_INT_CONVERT — 호출 프로그램 17개" +resource: "abap://function/KCD_EXCEL_OLE_TO_INT_CONVERT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0010](/programs/ZFIR0010.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0030](/programs/ZFIR0030.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0031](/programs/ZFIR0031.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0032](/programs/ZFIR0032.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0050](/programs/ZFIR0050.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0060](/programs/ZFIR0060.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0061](/programs/ZFIR0061.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0070](/programs/ZFIR0070.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0071](/programs/ZFIR0071.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0072](/programs/ZFIR0072.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0080](/programs/ZFIR0080.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0090](/programs/ZFIR0090.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0120](/programs/ZFIR0120.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0130](/programs/ZFIR0130.md) | DATA_UPLOAD_2 | call_function | 922 | +| [ZFIR0170](/programs/ZFIR0170.md) | DATA_UPLOAD_2 | call_function | 922 | diff --git a/wiki/functions/KR_USER_EXIT_CANCEL_TAXINVOICE.md b/wiki/functions/KR_USER_EXIT_CANCEL_TAXINVOICE.md new file mode 100644 index 0000000..6acc725 --- /dev/null +++ b/wiki/functions/KR_USER_EXIT_CANCEL_TAXINVOICE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "KR_USER_EXIT_CANCEL_TAXINVOICE" +description: "KR_USER_EXIT_CANCEL_TAXINVOICE — 호출 프로그램 1개" +resource: "abap://function/KR_USER_EXIT_CANCEL_TAXINVOICE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | USER_EXIT1 | call_function | 2368 | diff --git a/wiki/functions/KR_USER_EXIT_COPY_TAXINVOICE.md b/wiki/functions/KR_USER_EXIT_COPY_TAXINVOICE.md new file mode 100644 index 0000000..79404b3 --- /dev/null +++ b/wiki/functions/KR_USER_EXIT_COPY_TAXINVOICE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "KR_USER_EXIT_COPY_TAXINVOICE" +description: "KR_USER_EXIT_COPY_TAXINVOICE — 호출 프로그램 1개" +resource: "abap://function/KR_USER_EXIT_COPY_TAXINVOICE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | USER_EXIT2 | call_function | 2393 | diff --git a/wiki/functions/KR_USER_EXIT_LIST_TAXINVOICE.md b/wiki/functions/KR_USER_EXIT_LIST_TAXINVOICE.md new file mode 100644 index 0000000..16bdadd --- /dev/null +++ b/wiki/functions/KR_USER_EXIT_LIST_TAXINVOICE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "KR_USER_EXIT_LIST_TAXINVOICE" +description: "KR_USER_EXIT_LIST_TAXINVOICE — 호출 프로그램 1개" +resource: "abap://function/KR_USER_EXIT_LIST_TAXINVOICE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | USER_EXIT3 | call_function | 2867 | diff --git a/wiki/functions/KR_USER_EXIT_ROUNDOFF.md b/wiki/functions/KR_USER_EXIT_ROUNDOFF.md new file mode 100644 index 0000000..dfd43f2 --- /dev/null +++ b/wiki/functions/KR_USER_EXIT_ROUNDOFF.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "KR_USER_EXIT_ROUNDOFF" +description: "KR_USER_EXIT_ROUNDOFF — 호출 프로그램 2개" +resource: "abap://function/KR_USER_EXIT_ROUNDOFF" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | END-OF-SELECTION | call_function | 518 | +| [ZFIR0141](/programs/ZFIR0141.md) | DISPLAY_TAX_INVOICE | call_function | 4035 | diff --git a/wiki/functions/KR_USER_EXIT_TAX_CODE.md b/wiki/functions/KR_USER_EXIT_TAX_CODE.md new file mode 100644 index 0000000..0bc4bd6 --- /dev/null +++ b/wiki/functions/KR_USER_EXIT_TAX_CODE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "KR_USER_EXIT_TAX_CODE" +description: "KR_USER_EXIT_TAX_CODE — 호출 프로그램 1개" +resource: "abap://function/KR_USER_EXIT_TAX_CODE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | AT SELECTION-SCREEN ON SBLART | call_function | 258 | diff --git a/wiki/functions/K_GROUP_SELECT.md b/wiki/functions/K_GROUP_SELECT.md new file mode 100644 index 0000000..b25d50a --- /dev/null +++ b/wiki/functions/K_GROUP_SELECT.md @@ -0,0 +1,29 @@ +--- +type: abap-function +title: "K_GROUP_SELECT" +description: "K_GROUP_SELECT — 호출 프로그램 4개" +resource: "abap://function/K_GROUP_SELECT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 4 +x-call-sites: 4 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (4개) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | F4_GRP | call_function | 500 | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_GRP | call_function | 177 | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_GRP | call_function | 154 | +| [ZCOR0040](/programs/ZCOR0040.md) | F4_GRP | call_function | 240 | diff --git a/wiki/functions/K_HIERARCHY_TABLES_READ.md b/wiki/functions/K_HIERARCHY_TABLES_READ.md new file mode 100644 index 0000000..d9c6831 --- /dev/null +++ b/wiki/functions/K_HIERARCHY_TABLES_READ.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "K_HIERARCHY_TABLES_READ" +description: "K_HIERARCHY_TABLES_READ — 호출 프로그램 30개" +resource: "abap://function/K_HIERARCHY_TABLES_READ" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_SETLEAF_VALUES | call_function | 265 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_SETLEAF_VALUES | call_function | 263 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_SETLEAF_VALUES | call_function | 263 | diff --git a/wiki/functions/LAST_DAY_OF_MONTHS.md b/wiki/functions/LAST_DAY_OF_MONTHS.md new file mode 100644 index 0000000..3b5e3ef --- /dev/null +++ b/wiki/functions/LAST_DAY_OF_MONTHS.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "LAST_DAY_OF_MONTHS" +description: "LAST_DAY_OF_MONTHS — 호출 프로그램 2개" +resource: "abap://function/LAST_DAY_OF_MONTHS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0100](/programs/ZFIR0100.md) | DATE_PROCESS | call_function | 319 | +| [ZFIR0141](/programs/ZFIR0141.md) | REPRINT | call_function | 2547 | diff --git a/wiki/functions/LVC_FIELDCATALOG_MERGE.md b/wiki/functions/LVC_FIELDCATALOG_MERGE.md new file mode 100644 index 0000000..f67ca39 --- /dev/null +++ b/wiki/functions/LVC_FIELDCATALOG_MERGE.md @@ -0,0 +1,90 @@ +--- +type: abap-function +title: "LVC_FIELDCATALOG_MERGE" +description: "LVC_FIELDCATALOG_MERGE — 호출 프로그램 30개" +resource: "abap://function/LVC_FIELDCATALOG_MERGE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 39 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_FCAT_DDIC_X01 | call_function | 381 | +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_UPLOAD_TABLE | call_function | 845 | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC2010](/programs/ZCOC2010.md) | CREATE_UPLOAD_TABLE | call_function | 573 | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC2020](/programs/ZCOC2020.md) | CREATE_UPLOAD_TABLE | call_function | 568 | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC2030](/programs/ZCOC2030.md) | CREATE_UPLOAD_TABLE | call_function | 621 | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC2040](/programs/ZCOC2040.md) | CREATE_UPLOAD_TABLE | call_function | 624 | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC9010](/programs/ZCOC9010.md) | CREATE_UPLOAD_TABLE | call_function | 715 | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC9020](/programs/ZCOC9020.md) | CREATE_UPLOAD_TABLE | call_function | 761 | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC9030](/programs/ZCOC9030.md) | CREATE_UPLOAD_TABLE | call_function | 599 | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOC9040](/programs/ZCOC9040.md) | CREATE_UPLOAD_TABLE | call_function | 554 | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_FCAT_DDIC_X01 | call_function | 376 | +| [ZFIR0020](/programs/ZFIR0020.md) | SET_FCAT_DDIC_X01 | call_function | 378 | +| [ZFIR0040](/programs/ZFIR0040.md) | SET_FCAT_DDIC_X01 | call_function | 378 | diff --git a/wiki/functions/LVC_FIELDCAT_COMPLETE.md b/wiki/functions/LVC_FIELDCAT_COMPLETE.md new file mode 100644 index 0000000..90234b5 --- /dev/null +++ b/wiki/functions/LVC_FIELDCAT_COMPLETE.md @@ -0,0 +1,111 @@ +--- +type: abap-function +title: "LVC_FIELDCAT_COMPLETE" +description: "LVC_FIELDCAT_COMPLETE — 호출 프로그램 30개" +resource: "abap://function/LVC_FIELDCAT_COMPLETE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 60 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0010](/programs/ZCOC0010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_LIKEITAB_FACT | call_function | 608 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_FCAT_LIKE_ITAB | call_function | 194 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_LIKEITAB_FACT | call_function | 603 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 193 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_LIKEITAB_FACT | call_function | 605 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 193 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_LIKEITAB_FACT | call_function | 605 | diff --git a/wiki/functions/LVC_TRANSFER_FROM_SLIS.md b/wiki/functions/LVC_TRANSFER_FROM_SLIS.md new file mode 100644 index 0000000..1f59970 --- /dev/null +++ b/wiki/functions/LVC_TRANSFER_FROM_SLIS.md @@ -0,0 +1,111 @@ +--- +type: abap-function +title: "LVC_TRANSFER_FROM_SLIS" +description: "LVC_TRANSFER_FROM_SLIS — 호출 프로그램 30개" +resource: "abap://function/LVC_TRANSFER_FROM_SLIS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 60 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0010](/programs/ZCOC0010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_LIKEITAB_FACT | call_function | 600 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_FCAT_LIKE_ITAB | call_function | 186 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_LIKEITAB_FACT | call_function | 595 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 185 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_LIKEITAB_FACT | call_function | 597 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 185 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_LIKEITAB_FACT | call_function | 597 | diff --git a/wiki/functions/LVC_VARIANT_DEFAULT_GET.md b/wiki/functions/LVC_VARIANT_DEFAULT_GET.md new file mode 100644 index 0000000..6512b24 --- /dev/null +++ b/wiki/functions/LVC_VARIANT_DEFAULT_GET.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "LVC_VARIANT_DEFAULT_GET" +description: "LVC_VARIANT_DEFAULT_GET — 호출 프로그램 17개" +resource: "abap://function/LVC_VARIANT_DEFAULT_GET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIC0020](/programs/ZFIC0020.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0010](/programs/ZFIR0010.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0030](/programs/ZFIR0030.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0031](/programs/ZFIR0031.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0032](/programs/ZFIR0032.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0050](/programs/ZFIR0050.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0060](/programs/ZFIR0060.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0061](/programs/ZFIR0061.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0070](/programs/ZFIR0070.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0071](/programs/ZFIR0071.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0072](/programs/ZFIR0072.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0080](/programs/ZFIR0080.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0090](/programs/ZFIR0090.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0120](/programs/ZFIR0120.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0130](/programs/ZFIR0130.md) | VARIANT_DEFAULT | call_function | 143 | +| [ZFIR0170](/programs/ZFIR0170.md) | VARIANT_DEFAULT | call_function | 143 | diff --git a/wiki/functions/LVC_VARIANT_EXISTENCE_CHECK.md b/wiki/functions/LVC_VARIANT_EXISTENCE_CHECK.md new file mode 100644 index 0000000..dc064d1 --- /dev/null +++ b/wiki/functions/LVC_VARIANT_EXISTENCE_CHECK.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "LVC_VARIANT_EXISTENCE_CHECK" +description: "LVC_VARIANT_EXISTENCE_CHECK — 호출 프로그램 17개" +resource: "abap://function/LVC_VARIANT_EXISTENCE_CHECK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | VARIANT_FILL | call_function | 220 | +| [ZFIC0020](/programs/ZFIC0020.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0010](/programs/ZFIR0010.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0030](/programs/ZFIR0030.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0031](/programs/ZFIR0031.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0032](/programs/ZFIR0032.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0050](/programs/ZFIR0050.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0060](/programs/ZFIR0060.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0061](/programs/ZFIR0061.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0070](/programs/ZFIR0070.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0071](/programs/ZFIR0071.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0072](/programs/ZFIR0072.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0080](/programs/ZFIR0080.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0090](/programs/ZFIR0090.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0120](/programs/ZFIR0120.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0130](/programs/ZFIR0130.md) | VARIANT_FILL | call_function | 220 | +| [ZFIR0170](/programs/ZFIR0170.md) | VARIANT_FILL | call_function | 220 | diff --git a/wiki/functions/LVC_VARIANT_F4.md b/wiki/functions/LVC_VARIANT_F4.md new file mode 100644 index 0000000..56500ea --- /dev/null +++ b/wiki/functions/LVC_VARIANT_F4.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "LVC_VARIANT_F4" +description: "LVC_VARIANT_F4 — 호출 프로그램 17개" +resource: "abap://function/LVC_VARIANT_F4" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | VARIANT_HELP | call_function | 178 | +| [ZFIC0020](/programs/ZFIC0020.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0010](/programs/ZFIR0010.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0030](/programs/ZFIR0030.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0031](/programs/ZFIR0031.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0032](/programs/ZFIR0032.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0050](/programs/ZFIR0050.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0060](/programs/ZFIR0060.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0061](/programs/ZFIR0061.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0070](/programs/ZFIR0070.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0071](/programs/ZFIR0071.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0072](/programs/ZFIR0072.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0080](/programs/ZFIR0080.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0090](/programs/ZFIR0090.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0120](/programs/ZFIR0120.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0130](/programs/ZFIR0130.md) | VARIANT_HELP | call_function | 178 | +| [ZFIR0170](/programs/ZFIR0170.md) | VARIANT_HELP | call_function | 178 | diff --git a/wiki/functions/LV_CONVFUNC.md b/wiki/functions/LV_CONVFUNC.md new file mode 100644 index 0000000..6079eb3 --- /dev/null +++ b/wiki/functions/LV_CONVFUNC.md @@ -0,0 +1,39 @@ +--- +type: abap-function +title: "LV_CONVFUNC" +description: "LV_CONVFUNC — 호출 프로그램 9개" +resource: "abap://function/LV_CONVFUNC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 9 +x-call-sites: 9 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (9개) + +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | TRANSFER_GT_DATA | call_function | 209 | +| [ZCOC2010](/programs/ZCOC2010.md) | TRANSFER_GT_DATA | call_function | 160 | +| [ZCOC2020](/programs/ZCOC2020.md) | TRANSFER_GT_DATA | call_function | 160 | +| [ZCOC2030](/programs/ZCOC2030.md) | TRANSFER_GT_DATA | call_function | 160 | +| [ZCOC2040](/programs/ZCOC2040.md) | TRANSFER_GT_DATA | call_function | 160 | +| [ZCOC9010](/programs/ZCOC9010.md) | TRANSFER_GT_DATA | call_function | 175 | +| [ZCOC9020](/programs/ZCOC9020.md) | TRANSFER_GT_DATA | call_function | 175 | +| [ZCOC9030](/programs/ZCOC9030.md) | TRANSFER_GT_DATA | call_function | 156 | +| [ZCOC9040](/programs/ZCOC9040.md) | TRANSFER_GT_DATA | call_function | 173 | diff --git a/wiki/functions/MD_CONVERT_MATERIAL_UNIT.md b/wiki/functions/MD_CONVERT_MATERIAL_UNIT.md new file mode 100644 index 0000000..42333e6 --- /dev/null +++ b/wiki/functions/MD_CONVERT_MATERIAL_UNIT.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "MD_CONVERT_MATERIAL_UNIT" +description: "MD_CONVERT_MATERIAL_UNIT — 호출 프로그램 30개" +resource: "abap://function/MD_CONVERT_MATERIAL_UNIT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0020](/programs/ZCOC0020.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0030](/programs/ZCOC0030.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0040](/programs/ZCOC0040.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0050](/programs/ZCOC0050.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0060](/programs/ZCOC0060.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0070](/programs/ZCOC0070.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0080](/programs/ZCOC0080.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0090](/programs/ZCOC0090.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0100](/programs/ZCOC0100.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0110](/programs/ZCOC0110.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0120](/programs/ZCOC0120.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC0130](/programs/ZCOC0130.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC1010](/programs/ZCOC1010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC2010](/programs/ZCOC2010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC2020](/programs/ZCOC2020.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC2030](/programs/ZCOC2030.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC2040](/programs/ZCOC2040.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC9010](/programs/ZCOC9010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC9020](/programs/ZCOC9020.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC9030](/programs/ZCOC9030.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOC9040](/programs/ZCOC9040.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR0010](/programs/ZCOR0010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR0020](/programs/ZCOR0020.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR0030](/programs/ZCOR0030.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR0040](/programs/ZCOR0040.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR1010](/programs/ZCOR1010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZCOR2010](/programs/ZCOR2010.md) | MD_CONVER_MAT_UNIT | call_function | 1325 | +| [ZFIR0020](/programs/ZFIR0020.md) | MD_CONVER_MAT_UNIT | call_function | 1282 | +| [ZFIR0040](/programs/ZFIR0040.md) | MD_CONVER_MAT_UNIT | call_function | 1282 | diff --git a/wiki/functions/MESSAGE_TEXT_BUILD.md b/wiki/functions/MESSAGE_TEXT_BUILD.md new file mode 100644 index 0000000..fdb992c --- /dev/null +++ b/wiki/functions/MESSAGE_TEXT_BUILD.md @@ -0,0 +1,186 @@ +--- +type: abap-function +title: "MESSAGE_TEXT_BUILD" +description: "MESSAGE_TEXT_BUILD — 호출 프로그램 47개" +resource: "abap://function/MESSAGE_TEXT_BUILD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 47 +x-call-sites: 118 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (47개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0010](/programs/ZCOC0010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0010](/programs/ZCOC0010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0020](/programs/ZCOC0020.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0020](/programs/ZCOC0020.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0020](/programs/ZCOC0020.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0030](/programs/ZCOC0030.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0030](/programs/ZCOC0030.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0030](/programs/ZCOC0030.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0040](/programs/ZCOC0040.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0040](/programs/ZCOC0040.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0040](/programs/ZCOC0040.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0050](/programs/ZCOC0050.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0050](/programs/ZCOC0050.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0050](/programs/ZCOC0050.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0060](/programs/ZCOC0060.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0060](/programs/ZCOC0060.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0060](/programs/ZCOC0060.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0070](/programs/ZCOC0070.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0070](/programs/ZCOC0070.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0070](/programs/ZCOC0070.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0080](/programs/ZCOC0080.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0080](/programs/ZCOC0080.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0080](/programs/ZCOC0080.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0090](/programs/ZCOC0090.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0090](/programs/ZCOC0090.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0090](/programs/ZCOC0090.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0100](/programs/ZCOC0100.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0100](/programs/ZCOC0100.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0100](/programs/ZCOC0100.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0110](/programs/ZCOC0110.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0110](/programs/ZCOC0110.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0110](/programs/ZCOC0110.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0120](/programs/ZCOC0120.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0120](/programs/ZCOC0120.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0120](/programs/ZCOC0120.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC0130](/programs/ZCOC0130.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC0130](/programs/ZCOC0130.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC0130](/programs/ZCOC0130.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC1010](/programs/ZCOC1010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC1010](/programs/ZCOC1010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC1010](/programs/ZCOC1010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC2010](/programs/ZCOC2010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC2010](/programs/ZCOC2010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC2010](/programs/ZCOC2010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC2020](/programs/ZCOC2020.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC2020](/programs/ZCOC2020.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC2020](/programs/ZCOC2020.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC2030](/programs/ZCOC2030.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC2030](/programs/ZCOC2030.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC2030](/programs/ZCOC2030.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC2040](/programs/ZCOC2040.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC2040](/programs/ZCOC2040.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC2040](/programs/ZCOC2040.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC9010](/programs/ZCOC9010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC9010](/programs/ZCOC9010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC9010](/programs/ZCOC9010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC9020](/programs/ZCOC9020.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC9020](/programs/ZCOC9020.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC9020](/programs/ZCOC9020.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC9030](/programs/ZCOC9030.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC9030](/programs/ZCOC9030.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC9030](/programs/ZCOC9030.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOC9040](/programs/ZCOC9040.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOC9040](/programs/ZCOC9040.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOC9040](/programs/ZCOC9040.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR0010](/programs/ZCOR0010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR0010](/programs/ZCOR0010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR0010](/programs/ZCOR0010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR0020](/programs/ZCOR0020.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR0020](/programs/ZCOR0020.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR0020](/programs/ZCOR0020.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR0030](/programs/ZCOR0030.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR0030](/programs/ZCOR0030.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR0030](/programs/ZCOR0030.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR0040](/programs/ZCOR0040.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR0040](/programs/ZCOR0040.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR0040](/programs/ZCOR0040.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR1010](/programs/ZCOR1010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR1010](/programs/ZCOR1010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR1010](/programs/ZCOR1010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZCOR2010](/programs/ZCOR2010.md) | BUILD_MESSAGE | call_function | 706 | +| [ZCOR2010](/programs/ZCOR2010.md) | BUILD_MESSAGE_BAPI | call_function | 737 | +| [ZCOR2010](/programs/ZCOR2010.md) | BUILD_MESSGE_IF | call_function | 2037 | +| [ZFIC0010](/programs/ZFIC0010.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIC0020](/programs/ZFIC0020.md) | BDC_TRANSACTION_FB01 | call_function | 198 | +| [ZFIC0020](/programs/ZFIC0020.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0010](/programs/ZFIR0010.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0020](/programs/ZFIR0020.md) | BUILD_MESSAGE | call_function | 693 | +| [ZFIR0020](/programs/ZFIR0020.md) | BUILD_MESSGE_IF | call_function | 1994 | +| [ZFIR0030](/programs/ZFIR0030.md) | BDC_TRANSACTION_FB01 | call_function | 777 | +| [ZFIR0030](/programs/ZFIR0030.md) | BDC_TRANSACTION_FB01 | call_function | 789 | +| [ZFIR0030](/programs/ZFIR0030.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0031](/programs/ZFIR0031.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0031](/programs/ZFIR0031.md) | BDC_TRANSACTION_FB01 | call_function | 1322 | +| [ZFIR0031](/programs/ZFIR0031.md) | BDC_TRANSACTION_FB01 | call_function | 1334 | +| [ZFIR0032](/programs/ZFIR0032.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0040](/programs/ZFIR0040.md) | BUILD_MESSAGE | call_function | 693 | +| [ZFIR0040](/programs/ZFIR0040.md) | BUILD_MESSGE_IF | call_function | 1994 | +| [ZFIR0050](/programs/ZFIR0050.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0060](/programs/ZFIR0060.md) | BDC_TRANSACTION_FB01 | call_function | 222 | +| [ZFIR0060](/programs/ZFIR0060.md) | BDC_TRANSACTION_FB01 | call_function | 234 | +| [ZFIR0060](/programs/ZFIR0060.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0061](/programs/ZFIR0061.md) | BDC_TRANSACTION_FB01 | call_function | 703 | +| [ZFIR0061](/programs/ZFIR0061.md) | BDC_TRANSACTION_FB01 | call_function | 715 | +| [ZFIR0061](/programs/ZFIR0061.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0070](/programs/ZFIR0070.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0071](/programs/ZFIR0071.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0072](/programs/ZFIR0072.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0080](/programs/ZFIR0080.md) | POSTING_DOCUMET | call_function | 635 | +| [ZFIR0080](/programs/ZFIR0080.md) | POSTING_DOCUMET | call_function | 647 | +| [ZFIR0080](/programs/ZFIR0080.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0090](/programs/ZFIR0090.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0120](/programs/ZFIR0120.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0120](/programs/ZFIR0120.md) | BDC_FB05 | call_function | 1480 | +| [ZFIR0120](/programs/ZFIR0120.md) | BDC_FB05 | call_function | 1492 | +| [ZFIR0130](/programs/ZFIR0130.md) | MESSAGE_SELECT | call_function | 1275 | +| [ZFIR0170](/programs/ZFIR0170.md) | MESSAGE_SELECT | call_function | 1275 | diff --git a/wiki/functions/NUMBER_GET_NEXT.md b/wiki/functions/NUMBER_GET_NEXT.md new file mode 100644 index 0000000..ab3fc13 --- /dev/null +++ b/wiki/functions/NUMBER_GET_NEXT.md @@ -0,0 +1,148 @@ +--- +type: abap-function +title: "NUMBER_GET_NEXT" +description: "NUMBER_GET_NEXT — 호출 프로그램 48개" +resource: "abap://function/NUMBER_GET_NEXT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 48 +x-call-sites: 79 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (48개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0010](/programs/ZCOC0010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_NEXT_NUMBER | call_function | 1182 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_NEXT_NUMBER_YEAR | call_function | 1232 | +| [ZFIC0010](/programs/ZFIC0010.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIC0020](/programs/ZFIC0020.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0010](/programs/ZFIR0010.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_NEXT_NUMBER | call_function | 1139 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_NEXT_NUMBER_YEAR | call_function | 1189 | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_NEXT_NUMBER | call_function | 1139 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_NEXT_NUMBER_YEAR | call_function | 1189 | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0060](/programs/ZFIR0060.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0071](/programs/ZFIR0071.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0130](/programs/ZFIR0130.md) | GET_NEXT_NUMBER | call_function | 787 | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_TAX_INVOICE_NUMBER | call_function | 1721 | +| [ZFIR0140](/programs/ZFIR0140.md) | INDIVIDUAL_INVOICES | call_function | 1835 | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_NEXT_NUMBER | call_function | 787 | diff --git a/wiki/functions/NUMERIC_CHECK.md b/wiki/functions/NUMERIC_CHECK.md new file mode 100644 index 0000000..0effb9f --- /dev/null +++ b/wiki/functions/NUMERIC_CHECK.md @@ -0,0 +1,57 @@ +--- +type: abap-function +title: "NUMERIC_CHECK" +description: "NUMERIC_CHECK — 호출 프로그램 18개" +resource: "abap://function/NUMERIC_CHECK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 18 +x-call-sites: 18 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (18개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0141](/programs/ZFIR0141.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIC0020](/programs/ZFIC0020.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0010](/programs/ZFIR0010.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0030](/programs/ZFIR0030.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0031](/programs/ZFIR0031.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0032](/programs/ZFIR0032.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0050](/programs/ZFIR0050.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0060](/programs/ZFIR0060.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0061](/programs/ZFIR0061.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0070](/programs/ZFIR0070.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0071](/programs/ZFIR0071.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0072](/programs/ZFIR0072.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0080](/programs/ZFIR0080.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0090](/programs/ZFIR0090.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0120](/programs/ZFIR0120.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0130](/programs/ZFIR0130.md) | NUMERIC_CHECK | call_function | 660 | +| [ZFIR0141](/programs/ZFIR0141.md) | STRING_CHECK | call_function | 3544 | +| [ZFIR0170](/programs/ZFIR0170.md) | NUMERIC_CHECK | call_function | 660 | diff --git a/wiki/functions/OPEN_FORM.md b/wiki/functions/OPEN_FORM.md new file mode 100644 index 0000000..30b36ca --- /dev/null +++ b/wiki/functions/OPEN_FORM.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "OPEN_FORM" +description: "OPEN_FORM — 호출 프로그램 1개" +resource: "abap://function/OPEN_FORM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4155 | diff --git a/wiki/functions/OXT_MESSAGE_TO_POPUP.md b/wiki/functions/OXT_MESSAGE_TO_POPUP.md new file mode 100644 index 0000000..b5c85be --- /dev/null +++ b/wiki/functions/OXT_MESSAGE_TO_POPUP.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "OXT_MESSAGE_TO_POPUP" +description: "OXT_MESSAGE_TO_POPUP — 호출 프로그램 1개" +resource: "abap://function/OXT_MESSAGE_TO_POPUP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | MULTI_MSG_POPUPC | call_function | 1068 | diff --git a/wiki/functions/POPUP_TO_CONFIRM.md b/wiki/functions/POPUP_TO_CONFIRM.md new file mode 100644 index 0000000..83a04d6 --- /dev/null +++ b/wiki/functions/POPUP_TO_CONFIRM.md @@ -0,0 +1,85 @@ +--- +type: abap-function +title: "POPUP_TO_CONFIRM" +description: "POPUP_TO_CONFIRM — 호출 프로그램 32개" +resource: "abap://function/POPUP_TO_CONFIRM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 32 +x-call-sites: 32 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (32개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0160](/programs/ZFIR0160.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0020](/programs/ZCOC0020.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0030](/programs/ZCOC0030.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0040](/programs/ZCOC0040.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0050](/programs/ZCOC0050.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0060](/programs/ZCOC0060.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0070](/programs/ZCOC0070.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0080](/programs/ZCOC0080.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0090](/programs/ZCOC0090.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0100](/programs/ZCOC0100.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0110](/programs/ZCOC0110.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0120](/programs/ZCOC0120.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC0130](/programs/ZCOC0130.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC1010](/programs/ZCOC1010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC2010](/programs/ZCOC2010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC2020](/programs/ZCOC2020.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC2030](/programs/ZCOC2030.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC2040](/programs/ZCOC2040.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC9010](/programs/ZCOC9010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC9020](/programs/ZCOC9020.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC9030](/programs/ZCOC9030.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOC9040](/programs/ZCOC9040.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR0010](/programs/ZCOR0010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR0020](/programs/ZCOR0020.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR0030](/programs/ZCOR0030.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR0040](/programs/ZCOR0040.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR1010](/programs/ZCOR1010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZCOR2010](/programs/ZCOR2010.md) | POPUP_TO_CONFIRM | call_function | 1041 | +| [ZFIR0020](/programs/ZFIR0020.md) | POPUP_TO_CONFIRM | call_function | 997 | +| [ZFIR0040](/programs/ZFIR0040.md) | POPUP_TO_CONFIRM | call_function | 997 | +| [ZFIR0100](/programs/ZFIR0100.md) | SET_POP_MESSAGE | call_function | 197 | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_POP_MESSAGE | call_function | 140 | diff --git a/wiki/functions/POPUP_TO_CONFIRM_STEP.md b/wiki/functions/POPUP_TO_CONFIRM_STEP.md new file mode 100644 index 0000000..193d4f5 --- /dev/null +++ b/wiki/functions/POPUP_TO_CONFIRM_STEP.md @@ -0,0 +1,136 @@ +--- +type: abap-function +title: "POPUP_TO_CONFIRM_STEP" +description: "POPUP_TO_CONFIRM_STEP — 호출 프로그램 49개" +resource: "abap://function/POPUP_TO_CONFIRM_STEP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 49 +x-call-sites: 66 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (49개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0160](/programs/ZFIR0160.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0020](/programs/ZCOC0020.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0030](/programs/ZCOC0030.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0040](/programs/ZCOC0040.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0050](/programs/ZCOC0050.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0060](/programs/ZCOC0060.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0070](/programs/ZCOC0070.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0080](/programs/ZCOC0080.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0090](/programs/ZCOC0090.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0100](/programs/ZCOC0100.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0110](/programs/ZCOC0110.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0120](/programs/ZCOC0120.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC0130](/programs/ZCOC0130.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC1010](/programs/ZCOC1010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC2010](/programs/ZCOC2010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC2020](/programs/ZCOC2020.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC2030](/programs/ZCOC2030.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC2040](/programs/ZCOC2040.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC9010](/programs/ZCOC9010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC9020](/programs/ZCOC9020.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC9030](/programs/ZCOC9030.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOC9040](/programs/ZCOC9040.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR0010](/programs/ZCOR0010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR0020](/programs/ZCOR0020.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR0030](/programs/ZCOR0030.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR0040](/programs/ZCOR0040.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR1010](/programs/ZCOR1010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZCOR2010](/programs/ZCOR2010.md) | POPUP_TO_CONFIRM_02 | call_function | 1015 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIC0010](/programs/ZFIC0010.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIC0020](/programs/ZFIC0020.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0010](/programs/ZFIR0010.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0020](/programs/ZFIR0020.md) | POPUP_TO_CONFIRM_02 | call_function | 971 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0031](/programs/ZFIR0031.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0032](/programs/ZFIR0032.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0040](/programs/ZFIR0040.md) | POPUP_TO_CONFIRM_02 | call_function | 971 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0050](/programs/ZFIR0050.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0060](/programs/ZFIR0060.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0061](/programs/ZFIR0061.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0070](/programs/ZFIR0070.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0071](/programs/ZFIR0071.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0072](/programs/ZFIR0072.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0080](/programs/ZFIR0080.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0090](/programs/ZFIR0090.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0100](/programs/ZFIR0100.md) | POPUP_TO_CONFIRM | call_function | 285 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0120](/programs/ZFIR0120.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0130](/programs/ZFIR0130.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | +| [ZFIR0160](/programs/ZFIR0160.md) | POPUP_TO_CONFIRM | call_function | 228 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHECK_CONFIRM_STEP | call_function | 482 | +| [ZFIR0170](/programs/ZFIR0170.md) | CHECK_CONFIRM_STEP_2 | call_function | 510 | diff --git a/wiki/functions/POPUP_TO_SELECT_MONTH.md b/wiki/functions/POPUP_TO_SELECT_MONTH.md new file mode 100644 index 0000000..9c45f75 --- /dev/null +++ b/wiki/functions/POPUP_TO_SELECT_MONTH.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "POPUP_TO_SELECT_MONTH" +description: "POPUP_TO_SELECT_MONTH — 호출 프로그램 30개" +resource: "abap://function/POPUP_TO_SELECT_MONTH" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0020](/programs/ZCOC0020.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0030](/programs/ZCOC0030.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0040](/programs/ZCOC0040.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0050](/programs/ZCOC0050.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0060](/programs/ZCOC0060.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0070](/programs/ZCOC0070.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0080](/programs/ZCOC0080.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0090](/programs/ZCOC0090.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0100](/programs/ZCOC0100.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0110](/programs/ZCOC0110.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0120](/programs/ZCOC0120.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC0130](/programs/ZCOC0130.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC1010](/programs/ZCOC1010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC2010](/programs/ZCOC2010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC2020](/programs/ZCOC2020.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC2030](/programs/ZCOC2030.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC2040](/programs/ZCOC2040.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC9010](/programs/ZCOC9010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC9020](/programs/ZCOC9020.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC9030](/programs/ZCOC9030.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOC9040](/programs/ZCOC9040.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR0010](/programs/ZCOR0010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR0040](/programs/ZCOR0040.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR1010](/programs/ZCOR1010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZCOR2010](/programs/ZCOR2010.md) | F4_DATE_FORMAT_YYYYMM | call_function | 414 | +| [ZFIR0020](/programs/ZFIR0020.md) | F4_DATE_FORMAT_YYYYMM | call_function | 412 | +| [ZFIR0040](/programs/ZFIR0040.md) | F4_DATE_FORMAT_YYYYMM | call_function | 412 | diff --git a/wiki/functions/POSTING_INTERFACE_END.md b/wiki/functions/POSTING_INTERFACE_END.md new file mode 100644 index 0000000..31466f4 --- /dev/null +++ b/wiki/functions/POSTING_INTERFACE_END.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "POSTING_INTERFACE_END" +description: "POSTING_INTERFACE_END — 호출 프로그램 30개" +resource: "abap://function/POSTING_INTERFACE_END" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0020](/programs/ZCOC0020.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0030](/programs/ZCOC0030.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0040](/programs/ZCOC0040.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0050](/programs/ZCOC0050.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0060](/programs/ZCOC0060.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0070](/programs/ZCOC0070.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0080](/programs/ZCOC0080.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0090](/programs/ZCOC0090.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0100](/programs/ZCOC0100.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0110](/programs/ZCOC0110.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0120](/programs/ZCOC0120.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC0130](/programs/ZCOC0130.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC1010](/programs/ZCOC1010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC2010](/programs/ZCOC2010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC2020](/programs/ZCOC2020.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC2030](/programs/ZCOC2030.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC2040](/programs/ZCOC2040.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC9010](/programs/ZCOC9010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC9020](/programs/ZCOC9020.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC9030](/programs/ZCOC9030.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOC9040](/programs/ZCOC9040.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR0010](/programs/ZCOR0010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR0020](/programs/ZCOR0020.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR0030](/programs/ZCOR0030.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR0040](/programs/ZCOR0040.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR1010](/programs/ZCOR1010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZCOR2010](/programs/ZCOR2010.md) | END_INTERFACE_BDC | call_function | 1981 | +| [ZFIR0020](/programs/ZFIR0020.md) | END_INTERFACE_BDC | call_function | 1938 | +| [ZFIR0040](/programs/ZFIR0040.md) | END_INTERFACE_BDC | call_function | 1938 | diff --git a/wiki/functions/POSTING_INTERFACE_START.md b/wiki/functions/POSTING_INTERFACE_START.md new file mode 100644 index 0000000..2b68cb7 --- /dev/null +++ b/wiki/functions/POSTING_INTERFACE_START.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "POSTING_INTERFACE_START" +description: "POSTING_INTERFACE_START — 호출 프로그램 30개" +resource: "abap://function/POSTING_INTERFACE_START" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0020](/programs/ZCOC0020.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0030](/programs/ZCOC0030.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0040](/programs/ZCOC0040.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0050](/programs/ZCOC0050.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0060](/programs/ZCOC0060.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0070](/programs/ZCOC0070.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0080](/programs/ZCOC0080.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0090](/programs/ZCOC0090.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0100](/programs/ZCOC0100.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0110](/programs/ZCOC0110.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0120](/programs/ZCOC0120.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC0130](/programs/ZCOC0130.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC1010](/programs/ZCOC1010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC2010](/programs/ZCOC2010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC2020](/programs/ZCOC2020.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC2030](/programs/ZCOC2030.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC2040](/programs/ZCOC2040.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC9010](/programs/ZCOC9010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC9020](/programs/ZCOC9020.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC9030](/programs/ZCOC9030.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOC9040](/programs/ZCOC9040.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR0010](/programs/ZCOR0010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR0020](/programs/ZCOR0020.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR0030](/programs/ZCOR0030.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR0040](/programs/ZCOR0040.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR1010](/programs/ZCOR1010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZCOR2010](/programs/ZCOR2010.md) | START_INTERFACE_BDC | call_function | 1960 | +| [ZFIR0020](/programs/ZFIR0020.md) | START_INTERFACE_BDC | call_function | 1917 | +| [ZFIR0040](/programs/ZFIR0040.md) | START_INTERFACE_BDC | call_function | 1917 | diff --git a/wiki/functions/READ_HAUPTBUCH_TEXT.md b/wiki/functions/READ_HAUPTBUCH_TEXT.md new file mode 100644 index 0000000..c122d84 --- /dev/null +++ b/wiki/functions/READ_HAUPTBUCH_TEXT.md @@ -0,0 +1,24 @@ +--- +type: abap-function +title: "READ_HAUPTBUCH_TEXT" +description: "READ_HAUPTBUCH_TEXT — 호출 프로그램 1개" +resource: "abap://function/READ_HAUPTBUCH_TEXT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | call_function | 119 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | call_function | 142 | diff --git a/wiki/functions/REUSE_ALV_COMMENTARY_WRITE.md b/wiki/functions/REUSE_ALV_COMMENTARY_WRITE.md new file mode 100644 index 0000000..8165dc5 --- /dev/null +++ b/wiki/functions/REUSE_ALV_COMMENTARY_WRITE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "REUSE_ALV_COMMENTARY_WRITE" +description: "REUSE_ALV_COMMENTARY_WRITE — 호출 프로그램 1개" +resource: "abap://function/REUSE_ALV_COMMENTARY_WRITE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | TOP_OF_PAGE | call_function | 1144 | diff --git a/wiki/functions/REUSE_ALV_EVENTS_GET.md b/wiki/functions/REUSE_ALV_EVENTS_GET.md new file mode 100644 index 0000000..41ab9e7 --- /dev/null +++ b/wiki/functions/REUSE_ALV_EVENTS_GET.md @@ -0,0 +1,91 @@ +--- +type: abap-function +title: "REUSE_ALV_EVENTS_GET" +description: "REUSE_ALV_EVENTS_GET — 호출 프로그램 18개" +resource: "abap://function/REUSE_ALV_EVENTS_GET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 18 +x-call-sites: 52 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (18개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | COLOR_SETTING | call_function | 362 | +| [ZFIC0010](/programs/ZFIC0010.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIC0010](/programs/ZFIC0010.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIC0020](/programs/ZFIC0020.md) | COLOR_SETTING | call_function | 362 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIC0020](/programs/ZFIC0020.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0010](/programs/ZFIR0010.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0010](/programs/ZFIR0010.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0030](/programs/ZFIR0030.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0030](/programs/ZFIR0030.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0031](/programs/ZFIR0031.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0031](/programs/ZFIR0031.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0032](/programs/ZFIR0032.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0032](/programs/ZFIR0032.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0050](/programs/ZFIR0050.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0050](/programs/ZFIR0050.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0060](/programs/ZFIR0060.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0060](/programs/ZFIR0060.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0061](/programs/ZFIR0061.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0061](/programs/ZFIR0061.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0070](/programs/ZFIR0070.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0070](/programs/ZFIR0070.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0071](/programs/ZFIR0071.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0071](/programs/ZFIR0071.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0072](/programs/ZFIR0072.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0072](/programs/ZFIR0072.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0080](/programs/ZFIR0080.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0080](/programs/ZFIR0080.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0090](/programs/ZFIR0090.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0090](/programs/ZFIR0090.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0120](/programs/ZFIR0120.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0120](/programs/ZFIR0120.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0130](/programs/ZFIR0130.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0130](/programs/ZFIR0130.md) | EVENT_BUILD_LVC | call_function | 673 | +| [ZFIR0140](/programs/ZFIR0140.md) | E03_EVENTTAB_BUILD | call_function | 992 | +| [ZFIR0170](/programs/ZFIR0170.md) | COLOR_SETTING | call_function | 362 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALV_EVENTS_GET | call_function | 507 | +| [ZFIR0170](/programs/ZFIR0170.md) | EVENT_BUILD_LVC | call_function | 673 | diff --git a/wiki/functions/REUSE_ALV_FIELDCATALOG_MERGE.md b/wiki/functions/REUSE_ALV_FIELDCATALOG_MERGE.md new file mode 100644 index 0000000..16269bf --- /dev/null +++ b/wiki/functions/REUSE_ALV_FIELDCATALOG_MERGE.md @@ -0,0 +1,148 @@ +--- +type: abap-function +title: "REUSE_ALV_FIELDCATALOG_MERGE" +description: "REUSE_ALV_FIELDCATALOG_MERGE — 호출 프로그램 48개" +resource: "abap://function/REUSE_ALV_FIELDCATALOG_MERGE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 48 +x-call-sites: 79 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (48개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0010](/programs/ZCOC0010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_LIKEITAB_FACT | call_function | 586 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_FCAT_LIKE_ITAB | call_function | 173 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_LIKEITAB_FACT | call_function | 581 | +| [ZFIC0010](/programs/ZFIC0010.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIC0020](/programs/ZFIC0020.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0010](/programs/ZFIR0010.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_FCAT_LIKE_ITAB | call_function | 172 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZFIR0030](/programs/ZFIR0030.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0031](/programs/ZFIR0031.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0032](/programs/ZFIR0032.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_FCAT_LIKE_ITAB | call_function | 172 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_LIKEITAB_FACT | call_function | 583 | +| [ZFIR0050](/programs/ZFIR0050.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0060](/programs/ZFIR0060.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0061](/programs/ZFIR0061.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0070](/programs/ZFIR0070.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0071](/programs/ZFIR0071.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0072](/programs/ZFIR0072.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0080](/programs/ZFIR0080.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0090](/programs/ZFIR0090.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0120](/programs/ZFIR0120.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0130](/programs/ZFIR0130.md) | FIELDCATALOG_CALL | call_function | 245 | +| [ZFIR0140](/programs/ZFIR0140.md) | E01_FIELDCAT_INIT | call_function | 576 | +| [ZFIR0140](/programs/ZFIR0140.md) | E01_FIELDCAT_INIT | call_function | 585 | +| [ZFIR0170](/programs/ZFIR0170.md) | FIELDCATALOG_CALL | call_function | 245 | diff --git a/wiki/functions/REUSE_ALV_GRID_COMMENTARY_SET.md b/wiki/functions/REUSE_ALV_GRID_COMMENTARY_SET.md new file mode 100644 index 0000000..0ebfa45 --- /dev/null +++ b/wiki/functions/REUSE_ALV_GRID_COMMENTARY_SET.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "REUSE_ALV_GRID_COMMENTARY_SET" +description: "REUSE_ALV_GRID_COMMENTARY_SET — 호출 프로그램 30개" +resource: "abap://function/REUSE_ALV_GRID_COMMENTARY_SET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_TOP_OF_PAGE | call_function | 665 | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_TOP_OF_PAGE | call_function | 665 | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_TOP_OF_PAGE | call_function | 665 | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_TOP_OF_PAGE | call_function | 665 | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_TOP_OF_PAGE | call_function | 665 | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_TOP_OF_PAGE | call_function | 660 | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_TOP_OF_PAGE | call_function | 663 | +| [ZFIR0020](/programs/ZFIR0020.md) | SET_TOP_OF_PAGE | call_function | 662 | +| [ZFIR0040](/programs/ZFIR0040.md) | SET_TOP_OF_PAGE | call_function | 662 | diff --git a/wiki/functions/REUSE_ALV_GRID_DISPLAY.md b/wiki/functions/REUSE_ALV_GRID_DISPLAY.md new file mode 100644 index 0000000..fb2df78 --- /dev/null +++ b/wiki/functions/REUSE_ALV_GRID_DISPLAY.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "REUSE_ALV_GRID_DISPLAY" +description: "REUSE_ALV_GRID_DISPLAY — 호출 프로그램 17개" +resource: "abap://function/REUSE_ALV_GRID_DISPLAY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALV_DISPLAY | call_function | 326 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALV_DISPLAY | call_function | 326 | diff --git a/wiki/functions/REUSE_ALV_GRID_DISPLAY_LVC.md b/wiki/functions/REUSE_ALV_GRID_DISPLAY_LVC.md new file mode 100644 index 0000000..2dacfbd --- /dev/null +++ b/wiki/functions/REUSE_ALV_GRID_DISPLAY_LVC.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "REUSE_ALV_GRID_DISPLAY_LVC" +description: "REUSE_ALV_GRID_DISPLAY_LVC — 호출 프로그램 17개" +resource: "abap://function/REUSE_ALV_GRID_DISPLAY_LVC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALV_DISPLAY_LVC | call_function | 723 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALV_DISPLAY_LVC | call_function | 723 | diff --git a/wiki/functions/REUSE_ALV_HIERSEQ_LIST_DISPLAY.md b/wiki/functions/REUSE_ALV_HIERSEQ_LIST_DISPLAY.md new file mode 100644 index 0000000..892af24 --- /dev/null +++ b/wiki/functions/REUSE_ALV_HIERSEQ_LIST_DISPLAY.md @@ -0,0 +1,57 @@ +--- +type: abap-function +title: "REUSE_ALV_HIERSEQ_LIST_DISPLAY" +description: "REUSE_ALV_HIERSEQ_LIST_DISPLAY — 호출 프로그램 18개" +resource: "abap://function/REUSE_ALV_HIERSEQ_LIST_DISPLAY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 18 +x-call-sites: 18 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (18개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIC0020](/programs/ZFIC0020.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0010](/programs/ZFIR0010.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0030](/programs/ZFIR0030.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0031](/programs/ZFIR0031.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0032](/programs/ZFIR0032.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0050](/programs/ZFIR0050.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0060](/programs/ZFIR0060.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0061](/programs/ZFIR0061.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0070](/programs/ZFIR0070.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0071](/programs/ZFIR0071.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0072](/programs/ZFIR0072.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0080](/programs/ZFIR0080.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0090](/programs/ZFIR0090.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0120](/programs/ZFIR0120.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0130](/programs/ZFIR0130.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | +| [ZFIR0140](/programs/ZFIR0140.md) | BUILD_UP_ALV_LAYOUT | call_function | 2414 | +| [ZFIR0170](/programs/ZFIR0170.md) | ALV_HIERSEQ_DISPLAY | call_function | 440 | diff --git a/wiki/functions/REUSE_ALV_VARIANT_DEFAULT_GET.md b/wiki/functions/REUSE_ALV_VARIANT_DEFAULT_GET.md new file mode 100644 index 0000000..e7e9464 --- /dev/null +++ b/wiki/functions/REUSE_ALV_VARIANT_DEFAULT_GET.md @@ -0,0 +1,27 @@ +--- +type: abap-function +title: "REUSE_ALV_VARIANT_DEFAULT_GET" +description: "REUSE_ALV_VARIANT_DEFAULT_GET — 호출 프로그램 3개" +resource: "abap://function/REUSE_ALV_VARIANT_DEFAULT_GET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 3 +x-call-sites: 3 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (3개) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0160](/programs/ZFIR0160.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0100](/programs/ZFIR0100.md) | GET_INIT_VARIANT | call_function | 63 | +| [ZFIR0140](/programs/ZFIR0140.md) | INITIALIZATION | call_function | 207 | +| [ZFIR0160](/programs/ZFIR0160.md) | GET_INIT_VARIANT | call_function | 42 | diff --git a/wiki/functions/REUSE_ALV_VARIANT_EXISTENCE.md b/wiki/functions/REUSE_ALV_VARIANT_EXISTENCE.md new file mode 100644 index 0000000..b1d12d6 --- /dev/null +++ b/wiki/functions/REUSE_ALV_VARIANT_EXISTENCE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "REUSE_ALV_VARIANT_EXISTENCE" +description: "REUSE_ALV_VARIANT_EXISTENCE — 호출 프로그램 1개" +resource: "abap://function/REUSE_ALV_VARIANT_EXISTENCE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | PAI_OF_SELECTION_SCREEN | call_function | 1598 | diff --git a/wiki/functions/REUSE_ALV_VARIANT_F4.md b/wiki/functions/REUSE_ALV_VARIANT_F4.md new file mode 100644 index 0000000..9b57fbd --- /dev/null +++ b/wiki/functions/REUSE_ALV_VARIANT_F4.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "REUSE_ALV_VARIANT_F4" +description: "REUSE_ALV_VARIANT_F4 — 호출 프로그램 2개" +resource: "abap://function/REUSE_ALV_VARIANT_F4" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0160](/programs/ZFIR0160.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | F4_FOR_VARIANT | call_function | 1566 | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_F4_VARIANT | call_function | 62 | diff --git a/wiki/functions/RF_CPD_DATEN_BEARBEITEN.md b/wiki/functions/RF_CPD_DATEN_BEARBEITEN.md new file mode 100644 index 0000000..483da57 --- /dev/null +++ b/wiki/functions/RF_CPD_DATEN_BEARBEITEN.md @@ -0,0 +1,24 @@ +--- +type: abap-function +title: "RF_CPD_DATEN_BEARBEITEN" +description: "RF_CPD_DATEN_BEARBEITEN — 호출 프로그램 1개" +resource: "abap://function/RF_CPD_DATEN_BEARBEITEN" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | USER_COMMAND_0100 INPUT | call_function | 455 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | USER_COMMAND_0100 INPUT | call_function | 486 | diff --git a/wiki/functions/RP_CALC_DATE_IN_INTERVAL.md b/wiki/functions/RP_CALC_DATE_IN_INTERVAL.md new file mode 100644 index 0000000..cea4fd4 --- /dev/null +++ b/wiki/functions/RP_CALC_DATE_IN_INTERVAL.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "RP_CALC_DATE_IN_INTERVAL" +description: "RP_CALC_DATE_IN_INTERVAL — 호출 프로그램 17개" +resource: "abap://function/RP_CALC_DATE_IN_INTERVAL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIC0020](/programs/ZFIC0020.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0010](/programs/ZFIR0010.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0030](/programs/ZFIR0030.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0031](/programs/ZFIR0031.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0032](/programs/ZFIR0032.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0050](/programs/ZFIR0050.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0060](/programs/ZFIR0060.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0061](/programs/ZFIR0061.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0070](/programs/ZFIR0070.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0071](/programs/ZFIR0071.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0072](/programs/ZFIR0072.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0080](/programs/ZFIR0080.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0090](/programs/ZFIR0090.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0120](/programs/ZFIR0120.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0130](/programs/ZFIR0130.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | +| [ZFIR0170](/programs/ZFIR0170.md) | CALC_DATE_IN_INTERVAL | call_function | 613 | diff --git a/wiki/functions/RP_LAST_DAY_OF_MONTHS.md b/wiki/functions/RP_LAST_DAY_OF_MONTHS.md new file mode 100644 index 0000000..a11ca65 --- /dev/null +++ b/wiki/functions/RP_LAST_DAY_OF_MONTHS.md @@ -0,0 +1,115 @@ +--- +type: abap-function +title: "RP_LAST_DAY_OF_MONTHS" +description: "RP_LAST_DAY_OF_MONTHS — 호출 프로그램 47개" +resource: "abap://function/RP_LAST_DAY_OF_MONTHS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 47 +x-call-sites: 47 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (47개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_LAST_DAY | call_function | 1073 | +| [ZFIC0010](/programs/ZFIC0010.md) | LAST_DAY | call_function | 311 | +| [ZFIC0020](/programs/ZFIC0020.md) | LAST_DAY | call_function | 311 | +| [ZFIR0010](/programs/ZFIR0010.md) | LAST_DAY | call_function | 311 | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_LAST_DAY | call_function | 1030 | +| [ZFIR0030](/programs/ZFIR0030.md) | LAST_DAY | call_function | 311 | +| [ZFIR0031](/programs/ZFIR0031.md) | LAST_DAY | call_function | 311 | +| [ZFIR0032](/programs/ZFIR0032.md) | LAST_DAY | call_function | 311 | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_LAST_DAY | call_function | 1030 | +| [ZFIR0050](/programs/ZFIR0050.md) | LAST_DAY | call_function | 311 | +| [ZFIR0060](/programs/ZFIR0060.md) | LAST_DAY | call_function | 311 | +| [ZFIR0061](/programs/ZFIR0061.md) | LAST_DAY | call_function | 311 | +| [ZFIR0070](/programs/ZFIR0070.md) | LAST_DAY | call_function | 311 | +| [ZFIR0071](/programs/ZFIR0071.md) | LAST_DAY | call_function | 311 | +| [ZFIR0072](/programs/ZFIR0072.md) | LAST_DAY | call_function | 311 | +| [ZFIR0080](/programs/ZFIR0080.md) | LAST_DAY | call_function | 311 | +| [ZFIR0090](/programs/ZFIR0090.md) | LAST_DAY | call_function | 311 | +| [ZFIR0120](/programs/ZFIR0120.md) | LAST_DAY | call_function | 311 | +| [ZFIR0130](/programs/ZFIR0130.md) | LAST_DAY | call_function | 311 | +| [ZFIR0170](/programs/ZFIR0170.md) | LAST_DAY | call_function | 311 | diff --git a/wiki/functions/SAPGUI_PROGRESS_INDICATOR.md b/wiki/functions/SAPGUI_PROGRESS_INDICATOR.md new file mode 100644 index 0000000..28aa0f9 --- /dev/null +++ b/wiki/functions/SAPGUI_PROGRESS_INDICATOR.md @@ -0,0 +1,149 @@ +--- +type: abap-function +title: "SAPGUI_PROGRESS_INDICATOR" +description: "SAPGUI_PROGRESS_INDICATOR — 호출 프로그램 49개" +resource: "abap://function/SAPGUI_PROGRESS_INDICATOR" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 49 +x-call-sites: 79 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (49개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0160](/programs/ZFIR0160.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | BAR_MSG | call_function | 466 | +| [ZCOC0010](/programs/ZCOC0010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0020](/programs/ZCOC0020.md) | BAR_MSG | call_function | 466 | +| [ZCOC0020](/programs/ZCOC0020.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0030](/programs/ZCOC0030.md) | BAR_MSG | call_function | 466 | +| [ZCOC0030](/programs/ZCOC0030.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0040](/programs/ZCOC0040.md) | BAR_MSG | call_function | 466 | +| [ZCOC0040](/programs/ZCOC0040.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0050](/programs/ZCOC0050.md) | BAR_MSG | call_function | 466 | +| [ZCOC0050](/programs/ZCOC0050.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0060](/programs/ZCOC0060.md) | BAR_MSG | call_function | 466 | +| [ZCOC0060](/programs/ZCOC0060.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0070](/programs/ZCOC0070.md) | BAR_MSG | call_function | 466 | +| [ZCOC0070](/programs/ZCOC0070.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0080](/programs/ZCOC0080.md) | BAR_MSG | call_function | 466 | +| [ZCOC0080](/programs/ZCOC0080.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0090](/programs/ZCOC0090.md) | BAR_MSG | call_function | 466 | +| [ZCOC0090](/programs/ZCOC0090.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0100](/programs/ZCOC0100.md) | BAR_MSG | call_function | 466 | +| [ZCOC0100](/programs/ZCOC0100.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0110](/programs/ZCOC0110.md) | BAR_MSG | call_function | 466 | +| [ZCOC0110](/programs/ZCOC0110.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0120](/programs/ZCOC0120.md) | BAR_MSG | call_function | 466 | +| [ZCOC0120](/programs/ZCOC0120.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC0130](/programs/ZCOC0130.md) | BAR_MSG | call_function | 466 | +| [ZCOC0130](/programs/ZCOC0130.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC1010](/programs/ZCOC1010.md) | BAR_MSG | call_function | 466 | +| [ZCOC1010](/programs/ZCOC1010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC2010](/programs/ZCOC2010.md) | BAR_MSG | call_function | 466 | +| [ZCOC2010](/programs/ZCOC2010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC2020](/programs/ZCOC2020.md) | BAR_MSG | call_function | 466 | +| [ZCOC2020](/programs/ZCOC2020.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC2030](/programs/ZCOC2030.md) | BAR_MSG | call_function | 466 | +| [ZCOC2030](/programs/ZCOC2030.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC2040](/programs/ZCOC2040.md) | BAR_MSG | call_function | 466 | +| [ZCOC2040](/programs/ZCOC2040.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC9010](/programs/ZCOC9010.md) | BAR_MSG | call_function | 466 | +| [ZCOC9010](/programs/ZCOC9010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC9020](/programs/ZCOC9020.md) | BAR_MSG | call_function | 466 | +| [ZCOC9020](/programs/ZCOC9020.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC9030](/programs/ZCOC9030.md) | BAR_MSG | call_function | 466 | +| [ZCOC9030](/programs/ZCOC9030.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOC9040](/programs/ZCOC9040.md) | BAR_MSG | call_function | 466 | +| [ZCOC9040](/programs/ZCOC9040.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR0010](/programs/ZCOR0010.md) | BAR_MSG | call_function | 466 | +| [ZCOR0010](/programs/ZCOR0010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR0020](/programs/ZCOR0020.md) | BAR_MSG | call_function | 466 | +| [ZCOR0020](/programs/ZCOR0020.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR0030](/programs/ZCOR0030.md) | BAR_MSG | call_function | 466 | +| [ZCOR0030](/programs/ZCOR0030.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR0040](/programs/ZCOR0040.md) | BAR_MSG | call_function | 466 | +| [ZCOR0040](/programs/ZCOR0040.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR1010](/programs/ZCOR1010.md) | BAR_MSG | call_function | 466 | +| [ZCOR1010](/programs/ZCOR1010.md) | BAR_MSG_PER | call_function | 512 | +| [ZCOR2010](/programs/ZCOR2010.md) | BAR_MSG | call_function | 466 | +| [ZCOR2010](/programs/ZCOR2010.md) | BAR_MSG_PER | call_function | 512 | +| [ZFIC0010](/programs/ZFIC0010.md) | STATUS_BAR | call_function | 1362 | +| [ZFIC0020](/programs/ZFIC0020.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0010](/programs/ZFIR0010.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0020](/programs/ZFIR0020.md) | BAR_MSG | call_function | 464 | +| [ZFIR0020](/programs/ZFIR0020.md) | BAR_MSG_PER | call_function | 499 | +| [ZFIR0030](/programs/ZFIR0030.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0031](/programs/ZFIR0031.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0032](/programs/ZFIR0032.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0040](/programs/ZFIR0040.md) | BAR_MSG | call_function | 464 | +| [ZFIR0040](/programs/ZFIR0040.md) | BAR_MSG_PER | call_function | 499 | +| [ZFIR0050](/programs/ZFIR0050.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0060](/programs/ZFIR0060.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0061](/programs/ZFIR0061.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0070](/programs/ZFIR0070.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0071](/programs/ZFIR0071.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0072](/programs/ZFIR0072.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0080](/programs/ZFIR0080.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0090](/programs/ZFIR0090.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0100](/programs/ZFIR0100.md) | RUN_MSG_PROC | call_function | 178 | +| [ZFIR0120](/programs/ZFIR0120.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0130](/programs/ZFIR0130.md) | STATUS_BAR | call_function | 1362 | +| [ZFIR0160](/programs/ZFIR0160.md) | RUN_MSG_PROC | call_function | 121 | +| [ZFIR0170](/programs/ZFIR0170.md) | STATUS_BAR | call_function | 1362 | diff --git a/wiki/functions/SCPR_SV_SHOW_MESSAGE_LIST.md b/wiki/functions/SCPR_SV_SHOW_MESSAGE_LIST.md new file mode 100644 index 0000000..2b9ca76 --- /dev/null +++ b/wiki/functions/SCPR_SV_SHOW_MESSAGE_LIST.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "SCPR_SV_SHOW_MESSAGE_LIST" +description: "SCPR_SV_SHOW_MESSAGE_LIST — 호출 프로그램 30개" +resource: "abap://function/SCPR_SV_SHOW_MESSAGE_LIST" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0020](/programs/ZCOC0020.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0030](/programs/ZCOC0030.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0040](/programs/ZCOC0040.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0050](/programs/ZCOC0050.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0060](/programs/ZCOC0060.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0070](/programs/ZCOC0070.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0080](/programs/ZCOC0080.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0090](/programs/ZCOC0090.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0100](/programs/ZCOC0100.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0110](/programs/ZCOC0110.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0120](/programs/ZCOC0120.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC0130](/programs/ZCOC0130.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC1010](/programs/ZCOC1010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC2010](/programs/ZCOC2010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC2020](/programs/ZCOC2020.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC2030](/programs/ZCOC2030.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC2040](/programs/ZCOC2040.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC9010](/programs/ZCOC9010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC9020](/programs/ZCOC9020.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC9030](/programs/ZCOC9030.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOC9040](/programs/ZCOC9040.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR0010](/programs/ZCOR0010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR0020](/programs/ZCOR0020.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR0030](/programs/ZCOR0030.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR0040](/programs/ZCOR0040.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR1010](/programs/ZCOR1010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZCOR2010](/programs/ZCOR2010.md) | SHOW_MESSAGE_LIST | call_function | 1351 | +| [ZFIR0020](/programs/ZFIR0020.md) | SHOW_MESSAGE_LIST | call_function | 1308 | +| [ZFIR0040](/programs/ZFIR0040.md) | SHOW_MESSAGE_LIST | call_function | 1308 | diff --git a/wiki/functions/SSF_CLOSE.md b/wiki/functions/SSF_CLOSE.md new file mode 100644 index 0000000..24e3652 --- /dev/null +++ b/wiki/functions/SSF_CLOSE.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "SSF_CLOSE" +description: "SSF_CLOSE — 호출 프로그램 17개" +resource: "abap://function/SSF_CLOSE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIC0020](/programs/ZFIC0020.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0010](/programs/ZFIR0010.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0030](/programs/ZFIR0030.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0031](/programs/ZFIR0031.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0032](/programs/ZFIR0032.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0050](/programs/ZFIR0050.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0060](/programs/ZFIR0060.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0061](/programs/ZFIR0061.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0070](/programs/ZFIR0070.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0071](/programs/ZFIR0071.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0072](/programs/ZFIR0072.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0080](/programs/ZFIR0080.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0090](/programs/ZFIR0090.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0120](/programs/ZFIR0120.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0130](/programs/ZFIR0130.md) | SMARTFORM_CLOSE | call_function | 1163 | +| [ZFIR0170](/programs/ZFIR0170.md) | SMARTFORM_CLOSE | call_function | 1163 | diff --git a/wiki/functions/SSF_FUNCTION_MODULE_NAME.md b/wiki/functions/SSF_FUNCTION_MODULE_NAME.md new file mode 100644 index 0000000..1b50ced --- /dev/null +++ b/wiki/functions/SSF_FUNCTION_MODULE_NAME.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "SSF_FUNCTION_MODULE_NAME" +description: "SSF_FUNCTION_MODULE_NAME — 호출 프로그램 17개" +resource: "abap://function/SSF_FUNCTION_MODULE_NAME" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIC0020](/programs/ZFIC0020.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0010](/programs/ZFIR0010.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0030](/programs/ZFIR0030.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0031](/programs/ZFIR0031.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0032](/programs/ZFIR0032.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0050](/programs/ZFIR0050.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0060](/programs/ZFIR0060.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0061](/programs/ZFIR0061.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0070](/programs/ZFIR0070.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0071](/programs/ZFIR0071.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0072](/programs/ZFIR0072.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0080](/programs/ZFIR0080.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0090](/programs/ZFIR0090.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0120](/programs/ZFIR0120.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0130](/programs/ZFIR0130.md) | SMARTFORM_CONTROL | call_function | 1108 | +| [ZFIR0170](/programs/ZFIR0170.md) | SMARTFORM_CONTROL | call_function | 1108 | diff --git a/wiki/functions/SSF_OPEN.md b/wiki/functions/SSF_OPEN.md new file mode 100644 index 0000000..8d41556 --- /dev/null +++ b/wiki/functions/SSF_OPEN.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "SSF_OPEN" +description: "SSF_OPEN — 호출 프로그램 17개" +resource: "abap://function/SSF_OPEN" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIC0020](/programs/ZFIC0020.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0010](/programs/ZFIR0010.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0030](/programs/ZFIR0030.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0031](/programs/ZFIR0031.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0032](/programs/ZFIR0032.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0050](/programs/ZFIR0050.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0060](/programs/ZFIR0060.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0061](/programs/ZFIR0061.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0070](/programs/ZFIR0070.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0071](/programs/ZFIR0071.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0072](/programs/ZFIR0072.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0080](/programs/ZFIR0080.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0090](/programs/ZFIR0090.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0120](/programs/ZFIR0120.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0130](/programs/ZFIR0130.md) | SMARTFORM_OPEN | call_function | 1145 | +| [ZFIR0170](/programs/ZFIR0170.md) | SMARTFORM_OPEN | call_function | 1145 | diff --git a/wiki/functions/START_FORM.md b/wiki/functions/START_FORM.md new file mode 100644 index 0000000..79190fa --- /dev/null +++ b/wiki/functions/START_FORM.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "START_FORM" +description: "START_FORM — 호출 프로그램 1개" +resource: "abap://function/START_FORM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4208 | diff --git a/wiki/functions/STRING_REPLACE.md b/wiki/functions/STRING_REPLACE.md new file mode 100644 index 0000000..868f85b --- /dev/null +++ b/wiki/functions/STRING_REPLACE.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "STRING_REPLACE" +description: "STRING_REPLACE — 호출 프로그램 30개" +resource: "abap://function/STRING_REPLACE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0030](/programs/ZCOC0030.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0040](/programs/ZCOC0040.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC0130](/programs/ZCOC0130.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC1010](/programs/ZCOC1010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR0010](/programs/ZCOR0010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR0020](/programs/ZCOR0020.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR0030](/programs/ZCOR0030.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR0040](/programs/ZCOR0040.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR1010](/programs/ZCOR1010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZCOR2010](/programs/ZCOR2010.md) | CONVERT_CHAR_TO_AMT | call_function | 936 | +| [ZFIR0020](/programs/ZFIR0020.md) | CONVERT_CHAR_TO_AMT | call_function | 892 | +| [ZFIR0040](/programs/ZFIR0040.md) | CONVERT_CHAR_TO_AMT | call_function | 892 | diff --git a/wiki/functions/STRING_SPLIT.md b/wiki/functions/STRING_SPLIT.md new file mode 100644 index 0000000..816ef73 --- /dev/null +++ b/wiki/functions/STRING_SPLIT.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "STRING_SPLIT" +description: "STRING_SPLIT — 호출 프로그램 1개" +resource: "abap://function/STRING_SPLIT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 3 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | call_function | 2284 | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | call_function | 2298 | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | call_function | 2313 | diff --git a/wiki/functions/SX_OBJECT_CONVERT_OTF_PDF.md b/wiki/functions/SX_OBJECT_CONVERT_OTF_PDF.md new file mode 100644 index 0000000..293f141 --- /dev/null +++ b/wiki/functions/SX_OBJECT_CONVERT_OTF_PDF.md @@ -0,0 +1,81 @@ +--- +type: abap-function +title: "SX_OBJECT_CONVERT_OTF_PDF" +description: "SX_OBJECT_CONVERT_OTF_PDF — 호출 프로그램 30개" +resource: "abap://function/SX_OBJECT_CONVERT_OTF_PDF" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 30 +x-call-sites: 30 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (30개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0020](/programs/ZCOC0020.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0030](/programs/ZCOC0030.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0040](/programs/ZCOC0040.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0050](/programs/ZCOC0050.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0060](/programs/ZCOC0060.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0070](/programs/ZCOC0070.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0080](/programs/ZCOC0080.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0090](/programs/ZCOC0090.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0100](/programs/ZCOC0100.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0110](/programs/ZCOC0110.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0120](/programs/ZCOC0120.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC0130](/programs/ZCOC0130.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC1010](/programs/ZCOC1010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC2010](/programs/ZCOC2010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC2020](/programs/ZCOC2020.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC2030](/programs/ZCOC2030.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC2040](/programs/ZCOC2040.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC9010](/programs/ZCOC9010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC9020](/programs/ZCOC9020.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC9030](/programs/ZCOC9030.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOC9040](/programs/ZCOC9040.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR0010](/programs/ZCOR0010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR0020](/programs/ZCOR0020.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR0030](/programs/ZCOR0030.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR0040](/programs/ZCOR0040.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR1010](/programs/ZCOR1010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZCOR2010](/programs/ZCOR2010.md) | F_PDF_DOWNLOAD | call_function | 1815 | +| [ZFIR0020](/programs/ZFIR0020.md) | F_PDF_DOWNLOAD | call_function | 1772 | +| [ZFIR0040](/programs/ZFIR0040.md) | F_PDF_DOWNLOAD | call_function | 1772 | diff --git a/wiki/functions/TEXT_CONVERT_XLS_TO_SAP.md b/wiki/functions/TEXT_CONVERT_XLS_TO_SAP.md new file mode 100644 index 0000000..6408887 --- /dev/null +++ b/wiki/functions/TEXT_CONVERT_XLS_TO_SAP.md @@ -0,0 +1,55 @@ +--- +type: abap-function +title: "TEXT_CONVERT_XLS_TO_SAP" +description: "TEXT_CONVERT_XLS_TO_SAP — 호출 프로그램 17개" +resource: "abap://function/TEXT_CONVERT_XLS_TO_SAP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 17 +x-call-sites: 17 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (17개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0010](/programs/ZFIR0010.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0030](/programs/ZFIR0030.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0031](/programs/ZFIR0031.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0032](/programs/ZFIR0032.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0050](/programs/ZFIR0050.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0060](/programs/ZFIR0060.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0061](/programs/ZFIR0061.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0070](/programs/ZFIR0070.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0071](/programs/ZFIR0071.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0072](/programs/ZFIR0072.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0080](/programs/ZFIR0080.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0090](/programs/ZFIR0090.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0120](/programs/ZFIR0120.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0130](/programs/ZFIR0130.md) | DATA_UPLOAD | call_function | 888 | +| [ZFIR0170](/programs/ZFIR0170.md) | DATA_UPLOAD | call_function | 888 | diff --git a/wiki/functions/VIEW_MAINTENANCE_LOW_LEVEL.md b/wiki/functions/VIEW_MAINTENANCE_LOW_LEVEL.md new file mode 100644 index 0000000..38fa205 --- /dev/null +++ b/wiki/functions/VIEW_MAINTENANCE_LOW_LEVEL.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "VIEW_MAINTENANCE_LOW_LEVEL" +description: "VIEW_MAINTENANCE_LOW_LEVEL — 호출 프로그램 1개" +resource: "abap://function/VIEW_MAINTENANCE_LOW_LEVEL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIRCLV0010](/programs/ZFIRCLV0010.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIRCLV0010](/programs/ZFIRCLV0010.md) | SAVE_CLUSTER_ZFIV0070 | call_function | 127 | diff --git a/wiki/functions/VRM_SET_VALUES.md b/wiki/functions/VRM_SET_VALUES.md new file mode 100644 index 0000000..436a9d5 --- /dev/null +++ b/wiki/functions/VRM_SET_VALUES.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "VRM_SET_VALUES" +description: "VRM_SET_VALUES — 호출 프로그램 1개" +resource: "abap://function/VRM_SET_VALUES" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_BSCHL INPUT | call_function | 274 | diff --git a/wiki/functions/WRITE_FORM.md b/wiki/functions/WRITE_FORM.md new file mode 100644 index 0000000..3b25520 --- /dev/null +++ b/wiki/functions/WRITE_FORM.md @@ -0,0 +1,34 @@ +--- +type: abap-function +title: "WRITE_FORM" +description: "WRITE_FORM — 호출 프로그램 1개" +resource: "abap://function/WRITE_FORM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 12 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4233 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4244 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4257 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4281 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4292 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4305 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4323 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4334 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4347 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4434 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4444 | +| [ZFIR0141](/programs/ZFIR0141.md) | SAP_SCRIPT | call_function | 4463 | diff --git a/wiki/functions/WS_FILENAME_GET.md b/wiki/functions/WS_FILENAME_GET.md new file mode 100644 index 0000000..2564e61 --- /dev/null +++ b/wiki/functions/WS_FILENAME_GET.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "WS_FILENAME_GET" +description: "WS_FILENAME_GET — 호출 프로그램 2개" +resource: "abap://function/WS_FILENAME_GET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | GET_FILE | call_function | 13 | +| [ZFIC0020](/programs/ZFIC0020.md) | TMEP_SELECT | call_function | 10 | diff --git a/wiki/functions/Z_CO_CHECK_BUDGET.md b/wiki/functions/Z_CO_CHECK_BUDGET.md new file mode 100644 index 0000000..cfb7c2c --- /dev/null +++ b/wiki/functions/Z_CO_CHECK_BUDGET.md @@ -0,0 +1,27 @@ +--- +type: abap-function +title: "Z_CO_CHECK_BUDGET" +description: "Z_CO_CHECK_BUDGET — 호출 프로그램 2개" +resource: "abap://function/Z_CO_CHECK_BUDGET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 4 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZRGGBR000](/programs/ZRGGBR000.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | call_function | 504 | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_C | call_function | 1359 | +| [ZRGGBR000](/programs/ZRGGBR000.md) | U200 | call_function | 320 | +| [ZRGGBR000](/programs/ZRGGBR000.md) | U200 | call_function | 341 | diff --git a/wiki/functions/Z_CO_GET_BGSEQ.md b/wiki/functions/Z_CO_GET_BGSEQ.md new file mode 100644 index 0000000..c53661b --- /dev/null +++ b/wiki/functions/Z_CO_GET_BGSEQ.md @@ -0,0 +1,31 @@ +--- +type: abap-function +title: "Z_CO_GET_BGSEQ" +description: "Z_CO_GET_BGSEQ — 호출 프로그램 5개" +resource: "abap://function/Z_CO_GET_BGSEQ" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 5 +x-call-sites: 5 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (5개) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | INSERT_LOG | call_function | 741 | +| [ZCOC0050](/programs/ZCOC0050.md) | INSERT_LOG | call_function | 760 | +| [ZCOC0060](/programs/ZCOC0060.md) | INSERT_LOG | call_function | 809 | +| [ZCOC0070](/programs/ZCOC0070.md) | INSERT_LOG | call_function | 834 | +| [ZCOC0080](/programs/ZCOC0080.md) | INSERT_LOG | call_function | 773 | diff --git a/wiki/functions/Z_CO_OPEN_SMW0.md b/wiki/functions/Z_CO_OPEN_SMW0.md new file mode 100644 index 0000000..0e1b77d --- /dev/null +++ b/wiki/functions/Z_CO_OPEN_SMW0.md @@ -0,0 +1,57 @@ +--- +type: abap-function +title: "Z_CO_OPEN_SMW0" +description: "Z_CO_OPEN_SMW0 — 호출 프로그램 18개" +resource: "abap://function/Z_CO_OPEN_SMW0" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 18 +x-call-sites: 18 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (18개) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | CONTROL_FCXX | call_function | 50 | +| [ZCOC0020](/programs/ZCOC0020.md) | CONTROL_FCXX | call_function | 50 | +| [ZCOC0050](/programs/ZCOC0050.md) | CONTROL_FCXX | call_function | 117 | +| [ZCOC0060](/programs/ZCOC0060.md) | CONTROL_FCXX | call_function | 117 | +| [ZCOC0070](/programs/ZCOC0070.md) | CONTROL_FCXX | call_function | 117 | +| [ZCOC0080](/programs/ZCOC0080.md) | CONTROL_FCXX | call_function | 117 | +| [ZCOC0090](/programs/ZCOC0090.md) | CONTROL_FCXX | call_function | 46 | +| [ZCOC0100](/programs/ZCOC0100.md) | CONTROL_FCXX | call_function | 46 | +| [ZCOC0110](/programs/ZCOC0110.md) | CONTROL_FCXX | call_function | 44 | +| [ZCOC0120](/programs/ZCOC0120.md) | CONTROL_FCXX | call_function | 53 | +| [ZCOC2010](/programs/ZCOC2010.md) | CONTROL_FCXX | call_function | 39 | +| [ZCOC2020](/programs/ZCOC2020.md) | CONTROL_FCXX | call_function | 39 | +| [ZCOC2030](/programs/ZCOC2030.md) | CONTROL_FCXX | call_function | 39 | +| [ZCOC2040](/programs/ZCOC2040.md) | CONTROL_FCXX | call_function | 39 | +| [ZCOC9010](/programs/ZCOC9010.md) | CONTROL_FCXX | call_function | 45 | +| [ZCOC9020](/programs/ZCOC9020.md) | CONTROL_FCXX | call_function | 45 | +| [ZCOC9030](/programs/ZCOC9030.md) | CONTROL_FCXX | call_function | 45 | +| [ZCOC9040](/programs/ZCOC9040.md) | CONTROL_FCXX | call_function | 43 | diff --git a/wiki/functions/Z_CO_SEL_KOSTL_BUDGET_ACTUAL.md b/wiki/functions/Z_CO_SEL_KOSTL_BUDGET_ACTUAL.md new file mode 100644 index 0000000..bedb1a5 --- /dev/null +++ b/wiki/functions/Z_CO_SEL_KOSTL_BUDGET_ACTUAL.md @@ -0,0 +1,32 @@ +--- +type: abap-function +title: "Z_CO_SEL_KOSTL_BUDGET_ACTUAL" +description: "Z_CO_SEL_KOSTL_BUDGET_ACTUAL — 호출 프로그램 4개" +resource: "abap://function/Z_CO_SEL_KOSTL_BUDGET_ACTUAL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 4 +x-call-sites: 7 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (4개) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | GET_AVAILABLE_BG_DATA | call_function | 669 | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_AVAIABLE_BUGDET | call_function | 873 | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_CURRENT_AVAILABLE_BG | call_function | 946 | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_AVAIABLE_BUGDET | call_function | 897 | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_CURRENT_AVAILABLE_BG | call_function | 973 | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_AVAIABLE_BUGDET | call_function | 847 | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_CURRENT_AVAILABLE_BG | call_function | 921 | diff --git a/wiki/functions/Z_FI_COMMA_DEL.md b/wiki/functions/Z_FI_COMMA_DEL.md new file mode 100644 index 0000000..b650646 --- /dev/null +++ b/wiki/functions/Z_FI_COMMA_DEL.md @@ -0,0 +1,24 @@ +--- +type: abap-function +title: "Z_FI_COMMA_DEL" +description: "Z_FI_COMMA_DEL — 호출 프로그램 1개" +resource: "abap://function/Z_FI_COMMA_DEL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | WRITE_ITEM_FI | call_function | 4690 | +| [ZFIR0141](/programs/ZFIR0141.md) | WRITE_ITEM_FI_SMARTBILL | call_function | 5435 | diff --git a/wiki/functions/Z_FI_CONFIRM_DISPLAY.md b/wiki/functions/Z_FI_CONFIRM_DISPLAY.md new file mode 100644 index 0000000..e638eb5 --- /dev/null +++ b/wiki/functions/Z_FI_CONFIRM_DISPLAY.md @@ -0,0 +1,27 @@ +--- +type: abap-function +title: "Z_FI_CONFIRM_DISPLAY" +description: "Z_FI_CONFIRM_DISPLAY — 호출 프로그램 3개 (RFC 호출 포함)" +resource: "abap://function/Z_FI_CONFIRM_DISPLAY" +tags: ["RFC"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 3 +x-call-sites: 3 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (3개) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_PROCESSING_DATA | call_function_rfc | 2098 | +| [ZFIR0090](/programs/ZFIR0090.md) | DISPLAY_PROCESSING_DATA | call_function_rfc | 660 | +| [ZFIR0130](/programs/ZFIR0130.md) | DISPLAY_PROCESSING_DATA | call_function_rfc | 577 | diff --git a/wiki/functions/Z_FI_CONFIRM_REQUEST.md b/wiki/functions/Z_FI_CONFIRM_REQUEST.md new file mode 100644 index 0000000..06ef3f2 --- /dev/null +++ b/wiki/functions/Z_FI_CONFIRM_REQUEST.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_FI_CONFIRM_REQUEST" +description: "Z_FI_CONFIRM_REQUEST — 호출 프로그램 1개 (RFC 호출 포함)" +resource: "abap://function/Z_FI_CONFIRM_REQUEST" +tags: ["RFC"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | call_function_rfc | 1483 | diff --git a/wiki/functions/Z_FI_DOCUMENT_POSTING.md b/wiki/functions/Z_FI_DOCUMENT_POSTING.md new file mode 100644 index 0000000..4ab21dd --- /dev/null +++ b/wiki/functions/Z_FI_DOCUMENT_POSTING.md @@ -0,0 +1,37 @@ +--- +type: abap-function +title: "Z_FI_DOCUMENT_POSTING" +description: "Z_FI_DOCUMENT_POSTING — 호출 프로그램 8개" +resource: "abap://function/Z_FI_DOCUMENT_POSTING" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 8 +x-call-sites: 8 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (8개) + +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIC0020](/programs/ZFIC0020.md) | BDC_TRANSACTION_FB01 | call_function | 157 | +| [ZFIR0030](/programs/ZFIR0030.md) | BDC_TRANSACTION_FB01 | call_function | 748 | +| [ZFIR0031](/programs/ZFIR0031.md) | BDC_TRANSACTION_FB01 | call_function | 1293 | +| [ZFIR0060](/programs/ZFIR0060.md) | BDC_TRANSACTION_FB01 | call_function | 194 | +| [ZFIR0061](/programs/ZFIR0061.md) | BDC_TRANSACTION_FB01 | call_function | 675 | +| [ZFIR0080](/programs/ZFIR0080.md) | POSTING_DOCUMET | call_function | 604 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | POST | call_function | 714 | +| [ZFIR0120](/programs/ZFIR0120.md) | BDC_FB05 | call_function | 1448 | diff --git a/wiki/functions/Z_FI_DOCUMENT_REVERSE.md b/wiki/functions/Z_FI_DOCUMENT_REVERSE.md new file mode 100644 index 0000000..d1afc1b --- /dev/null +++ b/wiki/functions/Z_FI_DOCUMENT_REVERSE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_FI_DOCUMENT_REVERSE" +description: "Z_FI_DOCUMENT_REVERSE — 호출 프로그램 1개" +resource: "abap://function/Z_FI_DOCUMENT_REVERSE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | CANCEL_CONFIRM_DATA | call_function | 1976 | diff --git a/wiki/functions/Z_FI_PARKED_DOCUMENT_DELETE.md b/wiki/functions/Z_FI_PARKED_DOCUMENT_DELETE.md new file mode 100644 index 0000000..0daa626 --- /dev/null +++ b/wiki/functions/Z_FI_PARKED_DOCUMENT_DELETE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_FI_PARKED_DOCUMENT_DELETE" +description: "Z_FI_PARKED_DOCUMENT_DELETE — 호출 프로그램 1개" +resource: "abap://function/Z_FI_PARKED_DOCUMENT_DELETE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | DELETE_DATA | call_function | 1130 | diff --git a/wiki/functions/Z_FI_SAVE_AR.md b/wiki/functions/Z_FI_SAVE_AR.md new file mode 100644 index 0000000..182e9bc --- /dev/null +++ b/wiki/functions/Z_FI_SAVE_AR.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_FI_SAVE_AR" +description: "Z_FI_SAVE_AR — 호출 프로그램 1개 (RFC 호출 포함)" +resource: "abap://function/Z_FI_SAVE_AR" +tags: ["RFC"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0030](/programs/ZFIR0030.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | RECEIVE_AR | call_function_rfc | 110 | diff --git a/wiki/functions/Z_FI_SAVE_AR_RETURN.md b/wiki/functions/Z_FI_SAVE_AR_RETURN.md new file mode 100644 index 0000000..131bdb9 --- /dev/null +++ b/wiki/functions/Z_FI_SAVE_AR_RETURN.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "Z_FI_SAVE_AR_RETURN" +description: "Z_FI_SAVE_AR_RETURN — 호출 프로그램 2개 (RFC 호출 포함)" +resource: "abap://function/Z_FI_SAVE_AR_RETURN" +tags: ["RFC"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | SEND_AR | call_function_rfc | 162 | +| [ZFIR0031](/programs/ZFIR0031.md) | SEND_AR | call_function_rfc | 1395 | diff --git a/wiki/functions/Z_FI_SAVE_CLEARING_RETURN.md b/wiki/functions/Z_FI_SAVE_CLEARING_RETURN.md new file mode 100644 index 0000000..bf3544a --- /dev/null +++ b/wiki/functions/Z_FI_SAVE_CLEARING_RETURN.md @@ -0,0 +1,25 @@ +--- +type: abap-function +title: "Z_FI_SAVE_CLEARING_RETURN" +description: "Z_FI_SAVE_CLEARING_RETURN — 호출 프로그램 2개 (RFC 호출 포함)" +resource: "abap://function/Z_FI_SAVE_CLEARING_RETURN" +tags: ["RFC"] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 2 +x-call-sites: 2 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (2개) + +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0060](/programs/ZFIR0060.md) | SEND_CLEARING_INFO | call_function_rfc | 296 | +| [ZFIR0061](/programs/ZFIR0061.md) | SEND_CLEARING_INFO | call_function_rfc | 779 | diff --git a/wiki/functions/Z_IF_GET_UNQKEY.md b/wiki/functions/Z_IF_GET_UNQKEY.md new file mode 100644 index 0000000..b5aedfa --- /dev/null +++ b/wiki/functions/Z_IF_GET_UNQKEY.md @@ -0,0 +1,32 @@ +--- +type: abap-function +title: "Z_IF_GET_UNQKEY" +description: "Z_IF_GET_UNQKEY — 호출 프로그램 5개" +resource: "abap://function/Z_IF_GET_UNQKEY" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 5 +x-call-sites: 6 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (5개) + +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | RECEIVE_AR | call_function | 93 | +| [ZFIR0030](/programs/ZFIR0030.md) | SEND_AR | call_function | 139 | +| [ZFIR0031](/programs/ZFIR0031.md) | SEND_AR | call_function | 1370 | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | call_function | 1269 | +| [ZFIR0060](/programs/ZFIR0060.md) | SEND_CLEARING_INFO | call_function | 273 | +| [ZFIR0061](/programs/ZFIR0061.md) | SEND_CLEARING_INFO | call_function | 754 | diff --git a/wiki/functions/Z_SB_DTI_ISSUE.md b/wiki/functions/Z_SB_DTI_ISSUE.md new file mode 100644 index 0000000..09259d5 --- /dev/null +++ b/wiki/functions/Z_SB_DTI_ISSUE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_SB_DTI_ISSUE" +description: "Z_SB_DTI_ISSUE — 호출 프로그램 1개" +resource: "abap://function/Z_SB_DTI_ISSUE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | TRANSMIT_DTI_TO_SB | call_function | 201 | diff --git a/wiki/functions/Z_SB_RETURN_MESSAGE.md b/wiki/functions/Z_SB_RETURN_MESSAGE.md new file mode 100644 index 0000000..c07830d --- /dev/null +++ b/wiki/functions/Z_SB_RETURN_MESSAGE.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_SB_RETURN_MESSAGE" +description: "Z_SB_RETURN_MESSAGE — 호출 프로그램 1개" +resource: "abap://function/Z_SB_RETURN_MESSAGE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | DISPLAY_ERROR_MSG | call_function | 239 | diff --git a/wiki/functions/Z_SB_TAX_CAL.md b/wiki/functions/Z_SB_TAX_CAL.md new file mode 100644 index 0000000..ade760c --- /dev/null +++ b/wiki/functions/Z_SB_TAX_CAL.md @@ -0,0 +1,23 @@ +--- +type: abap-function +title: "Z_SB_TAX_CAL" +description: "Z_SB_TAX_CAL — 호출 프로그램 1개" +resource: "abap://function/Z_SB_TAX_CAL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-caller-programs: 1 +x-call-sites: 1 +--- + +> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다. + +## 호출 프로그램 (1개) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 호출 지점 + +| 프로그램 | unit | 종류 | 줄 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | PARK_DOCUMENT_SELECTION | call_function | 2523 | diff --git a/wiki/index.md b/wiki/index.md new file mode 100644 index 0000000..c8614b8 --- /dev/null +++ b/wiki/index.md @@ -0,0 +1,105 @@ +--- +type: index +okf_version: "0.2" +title: "ABAP 소스 위키" +description: "ABAP 프로그램·로직 조각·엔티티(테이블/FM)의 위키 — 모듈에서 프로그램으로 내려가는 진입점" +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +--- + +## 구성 + +- [programs/](/programs/) — 프로그램 문서 55건, 로직 조각 3212건 포함 (커밋·교정 대상) +- [packages/](/packages/) — 패키지 문서 0건 (커밋·교정 대상) +- [concepts/](/concepts/) — 도메인 개념 23건 (질의 확장 사전과 같은 원본) +- [tables/](/tables/) — 테이블 엔티티 162건 (이 테이블을 읽고 쓰는 프로그램 전부) +- [functions/](/functions/) — 펑션모듈·BAPI·RFC 119건 (호출처 전부) +- [tcodes/](/tcodes/) — T-Code 17건 + +프로그램 문서의 `## 로직 조각` 섹션이 검색의 1차 단위다 (LLM 이 코드에서 골라낸 업무 로직). +위키 본문은 LLM 이 쓴 **해석**이다. "어디서 채워지나/누가 호출하나" 같은 사실은 +index-api 의 trace/graph/usage 도구로 확인한다. + +## 계층 — 모듈 → 패키지 → 프로그램 + +### CO (11본) + +- (패키지 미지정) + - [ZCOC0090](/programs/ZCOC0090.md) — [투자오더-예산] 오더 생성 및 예산 Upload + - [ZCOC0100](/programs/ZCOC0100.md) — [투자오더-예산] 연도별 예산 Upload + - [ZCOC0110](/programs/ZCOC0110.md) — 오더 생성 Upload - (매출 실적 취합 오더 등) + - [ZCOC0120](/programs/ZCOC0120.md) — 본자산 생성 및 투자 오더 정산규칙 Upload + - [ZCOC0130](/programs/ZCOC0130.md) — I/F 원가요소 관리 + - [ZCOC1010](/programs/ZCOC1010.md) — Hisis 매출 상세 내역 PA 기표 + - [ZCOC2010](/programs/ZCOC2010.md) — 지점별 매출 계획 Upload + - [ZCOC2020](/programs/ZCOC2020.md) — 품목(중)별 매출 계획 Upload + - [ZCOC2030](/programs/ZCOC2030.md) — 지점별 매출원가/장려금/수수료 계획 Upload + - [ZCOC2040](/programs/ZCOC2040.md) — 품목(중)별 매출원가/장려금/수수료 계획 Upload + - [ZCOR0010](/programs/ZCOR0010.md) — 예산통제 그룹 지정 + +### CO-CCA (3본) + +- (패키지 미지정) + - [ZCOC0080](/programs/ZCOC0080.md) — 예산 조정(환수) + - [ZCOC9010](/programs/ZCOC9010.md) — 코스트센터 생성 + - [ZCOC9020](/programs/ZCOC9020.md) — 코스트센터 수정 Upload + +### CO-OM (4본) + +- (패키지 미지정) + - [ZCOC9040](/programs/ZCOC9040.md) — 2차 원가요소 생성 Upload + - [ZCOR0020](/programs/ZCOR0020.md) — 부서별 예산 집행 현황 + - [ZCOR0030](/programs/ZCOR0030.md) — 부서별 예산 상세 현황 + - [ZCOR0040](/programs/ZCOR0040.md) — 예산 조정 내역 리포트 + +### CO-OM-CCA (7본) + +- (패키지 미지정) + - [ZCOC0010](/programs/ZCOC0010.md) — 사업계획 예산 Upload + - [ZCOC0020](/programs/ZCOC0020.md) — 월별 실행예산 Upload + - [ZCOC0030](/programs/ZCOC0030.md) — 부서 예산 이월 + - [ZCOC0040](/programs/ZCOC0040.md) — 예산 조정 Main 프로그램 + - [ZCOC0050](/programs/ZCOC0050.md) — 예산 조정(추경) + - [ZCOC0060](/programs/ZCOC0060.md) — 예산 조정(전용) + - [ZCOC0070](/programs/ZCOC0070.md) — 예산 조정(이체) + +### CO-PA (2본) + +- (패키지 미지정) + - [ZCOR1010](/programs/ZCOR1010.md) — 매출액 기표 검증 - FI/Hisis 인터페이스/CO-PA 대사 + - [ZCOR2010](/programs/ZCOR2010.md) — 판매계획 조회 리포트 + +### CO-PCA (1본) + +- (패키지 미지정) + - [ZCOC9030](/programs/ZCOC9030.md) — 손익센터 생성 Upload + +### FI (27본) + +- (패키지 미지정) + - [ZFIC0010](/programs/ZFIC0010.md) — 계정과목 대량생성 + - [ZFIC0020](/programs/ZFIC0020.md) — 전표 대량 UPLOAD + - [ZFIR0010](/programs/ZFIR0010.md) — 거래처마스터 I/F 이력조회 + - [ZFIR0020](/programs/ZFIR0020.md) — 매입 채무 Interface 내역 + - [ZFIR0030](/programs/ZFIR0030.md) — 매출 및 입금내역 인터페이스 + - [ZFIR0031](/programs/ZFIR0031.md) — 매출 및 입금내역 I/F 이력 조회 + - [ZFIR0032](/programs/ZFIR0032.md) — 매출 및 입금내역 집계표 + - [ZFIR0040](/programs/ZFIR0040.md) — 비용 전표 Interface 이력 조회 + - [ZFIR0050](/programs/ZFIR0050.md) — 임시전표 관리 + - [ZFIR0060](/programs/ZFIR0060.md) — 카드채권 반제내역 처리결과 IF + - [ZFIR0061](/programs/ZFIR0061.md) — 카드채권 반제내역 I/F 이력 조회 + - [ZFIR0070](/programs/ZFIR0070.md) — 수불부-상품 I/F 이력 조회 + - [ZFIR0071](/programs/ZFIR0071.md) — 수불부-물류/서비스 I/F 이력 조회 + - [ZFIR0072](/programs/ZFIR0072.md) — 수불부-자가소비내역 I/F 이력 조회 + - [ZFIR0080](/programs/ZFIR0080.md) — 인사 정보 전표 생성 + - [ZFIR0090](/programs/ZFIR0090.md) — 전자결재 승인 자동기표 (출장비/교통비) + - [ZFIR0100](/programs/ZFIR0100.md) — [FI] 전자세금계산서 매입전표 생성 + - [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + - [ZFIR0120](/programs/ZFIR0120.md) — 법인카드 청구 정산 + - [ZFIR0130](/programs/ZFIR0130.md) — 시뮬레이션 + - [ZFIR0140](/programs/ZFIR0140.md) — [FI] 매출 세금계산서 발행 + - [ZFIR0141](/programs/ZFIR0141.md) + - [ZFIR0160](/programs/ZFIR0160.md) — [FI] 권한관리 + - [ZFIR0170](/programs/ZFIR0170.md) — 장려금 구매 정산 + - [ZFIRCLV0010](/programs/ZFIRCLV0010.md) + - [ZRGGBR000](/programs/ZRGGBR000.md) + - [ZRGGBS000](/programs/ZRGGBS000.md) diff --git a/wiki/log.md b/wiki/log.md new file mode 100644 index 0000000..5ae39d3 --- /dev/null +++ b/wiki/log.md @@ -0,0 +1,116 @@ +# 인덱싱 실행 로그 + +> OKF v0.2 예약 파일. 관측소(`/dashboard`)가 보여주는 수치의 출처와 이번 실행의 범위를 기록한다. + +- 실행 시각: 2026-09-16 21:52 +- 대상: `2013-08/FI` 디렉토리 덤프 **27개 프로그램** +- Stage 3 백엔드: **file(사람·에이전트 응답)** (LLM API 키 미사용) +- 이전 인덱싱분(ZMMR·ZFIR1xxxx·ZCOR 등)은 **폐기**했다 — 이 로그의 수치는 전부 이번 27본만이다. + +## 1. 적재 결과 (파서 — LLM 무관, 전량) + +| 항목 | 값 | +|---|---| +| 프로그램 | 27 | +| 인클루드 | 176 | +| 소스 줄 수 | 84,826 | +| unit | 2,263 (요약 대상 1,887) | +| 심볼 선언 | 10,389 | +| 변수 쓰기 지점 | 12,829 | +| 테이블 참조 | 479 (고유 테이블 111) | +| 호출 엣지 | 2,991 | +| T-Code | 17 (헤더 주석에서 추출) | + +미인식 문장 **22건 / 37,915건 = 0.06%** (프로그램별 최대 0.4%). + +## 2. Stage 3 — LLM 해석 (키 없이 file 백엔드로 수행) + +- **프로그램 요약: 27/27 = 전량 완료.** 업무 목적·주 흐름·핵심 내부테이블·키워드·SAP 모듈·관련 T-Code 를 27본 모두에 채웠다. +- **로직 조각: 97개** (unit 70건 완료 — 직접 응답 37건 + code_hash 복제 33건) +- 조각 추출 대기: **1,817 unit** — 프롬프트는 `data/llm_jobs/` 에 있고 응답을 채우면 이어서 적재된다. +- **중복 제거 효과**: 대상 unit 1,887개가 고유 code_hash **678개**로 묶인다 → LLM 호출 **1,209회 절감(64%)**. 공용 인클루드(ZFIALV·ZFICOM)가 17본에 그대로 복사된 덤프라 효과가 크다. + +### 조각이 실제로 '로직 단위'인가 + +위키 뷰어에서 조각마다 **소스 원문 + 자연어 설명**을 나란히 보여주므로 눈으로 대조할 수 있고, +크기 분포로도 확인된다 (설계 기준: 보통 3~80줄 — `docs/logic-chunk-design.md`): + +- 조각 크기: 최소 4줄 · 중위 **20줄** · 평균 23.4줄 · 최대 105줄 +- 80줄 초과는 2개뿐이다 (텍스트 보강 SELECT 가 길게 이어진 구간) +- unit 당 조각: 1개 45개 unit, 2개 이상 24개 unit +- unit 커버리지(조각이 unit 의 몇 %를 덮나): 최소 27% · 중위 **78%** · 최대 96% + — 100% 가 아닌 것이 정상이다. 선언·ALV 필드카탈로그·화면설정은 업무 의미가 없어 버린다. + +### 조각 kind 분포 + +| kind | 개수 | +|---|---| +| validation | 26 | +| fm_call | 22 | +| sql_select | 21 | +| aggregation | 14 | +| control_flow | 5 | +| db_write | 4 | +| interface | 3 | +| calculation | 2 | + +### 프로그램별 조각 + +| 프로그램 | 타이틀 | 조각 | +|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | 매출 및 입금내역 인터페이스 | 11 | +| [ZFIR0120](/programs/ZFIR0120.md) | 법인카드 청구 정산 | 8 | +| [ZFIR0060](/programs/ZFIR0060.md) | 카드채권 반제내역 처리결과 IF | 6 | +| [ZFIR0080](/programs/ZFIR0080.md) | 인사 정보 전표 생성 | 5 | +| [ZFIR0130](/programs/ZFIR0130.md) | 시뮬레이션 | 5 | +| [ZFIR0170](/programs/ZFIR0170.md) | 장려금 구매 정산 | 5 | +| [ZFIC0020](/programs/ZFIC0020.md) | 전표 대량 UPLOAD | 4 | +| [ZFIR0010](/programs/ZFIR0010.md) | 거래처마스터 I/F 이력조회 | 4 | +| [ZFIR0050](/programs/ZFIR0050.md) | 임시전표 관리 | 4 | +| [ZFIR0061](/programs/ZFIR0061.md) | 카드채권 반제내역 I/F 이력 조회 | 4 | +| [ZFIR0070](/programs/ZFIR0070.md) | 수불부-상품 I/F 이력 조회 | 4 | +| [ZFIR0072](/programs/ZFIR0072.md) | 수불부-자가소비내역 I/F 이력 조회 | 4 | +| [ZFIR0090](/programs/ZFIR0090.md) | 전자결재 승인 자동기표 (출장비/교통비) | 4 | +| [ZFIC0010](/programs/ZFIC0010.md) | 계정과목 대량생성 | 3 | +| [ZFIR0031](/programs/ZFIR0031.md) | 매출 및 입금내역 I/F 이력 조회 | 3 | +| [ZFIR0032](/programs/ZFIR0032.md) | 매출 및 입금내역 집계표 | 3 | +| [ZFIR0071](/programs/ZFIR0071.md) | 수불부-물류/서비스 I/F 이력 조회 | 3 | +| [ZFIR0020](/programs/ZFIR0020.md) | 매입 채무 Interface 내역 | 2 | +| [ZFIR0040](/programs/ZFIR0040.md) | 비용 전표 Interface 이력 조회 | 2 | +| [ZFIR0100](/programs/ZFIR0100.md) | [FI] 전자세금계산서 매입전표 생성 | 2 | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | | 2 | +| [ZFIRCLV0010](/programs/ZFIRCLV0010.md) | | 2 | +| [ZRGGBR000](/programs/ZRGGBR000.md) | | 2 | +| [ZRGGBS000](/programs/ZRGGBS000.md) | | 2 | +| [ZFIR0140](/programs/ZFIR0140.md) | [FI] 매출 세금계산서 발행 | 1 | +| [ZFIR0141](/programs/ZFIR0141.md) | | 1 | +| [ZFIR0160](/programs/ZFIR0160.md) | [FI] 권한관리 | 1 | + +## 3. 이 덤프에서 드러난 사실 + +가장 널리 쓰이는 커스텀 테이블 (Z*, 사용 프로그램 수): + +| 테이블 | 프로그램 수 | +|---|---| +| [ZFIT0160](/tables/ZFIT0160.md) | 18 | +| [ZFIT0040](/tables/ZFIT0040.md) | 5 | +| [ZFIT0060](/tables/ZFIT0060.md) | 3 | +| [ZIFT0010](/tables/ZIFT0010.md) | 3 | +| [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md) | 2 | +| [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md) | 2 | +| [ZFIT0080](/tables/ZFIT0080.md) | 2 | +| [ZFIT0110](/tables/ZFIT0110.md) | 2 | + +- `ZFIT0160` 은 27본 중 18본이 읽는 **커스텀 권한 테이블**이고, 유일한 관리 지점이 [ZFIR0160](/programs/ZFIR0160.md)(권한관리)이다. SAP 표준 권한체계가 아니라 테이블 기반 권한이므로 감사 관점에서 확인이 필요하다. +- 인터페이스 계열(`ZFIT00xx`)이 업무의 축이다: 수신 → 검증 → 전표 생성 → 결과 RFC 회신 → 이력 조회의 같은 패턴이 매출·입금·카드채권·비용·인사·수불부마다 반복된다. +- 전기는 대부분 커스텀 FM `Z_FI_DOCUMENT_POSTING` 에 위임한다 (FORM 이름은 `BDC_TRANSACTION_FB01` 이지만 실제로는 FM 호출이다). +- `ZFIALV`/`ZFICOM` 두 공용 인클루드가 17본에 그대로 복사되어 있어, 전체 unit 의 절반 이상이 중복이다 — 조각 복제가 여기서 효과를 낸다. + +## 4. 한계 (해석할 때 감안할 것) + +- **텍스트 심볼이 없다.** 이 덤프에는 텍스트 풀이 포함되지 않아 `TEXT-nnn` 의 한국어 원문을 색인에 넣지 못했다 — 화면 문구로 검색하는 경로가 이번 데이터에는 없다. +- **패키지 정보가 없다.** 수집 JSON 의 `DEVCLASS` 에 해당하는 데이터가 없어 `packages/` 문서는 0건이고, `index.md` 계층은 요약의 `sap_module` 로만 묶었다. +- **조각은 전량이 아니다.** 위 2절의 대기 건수만큼 미추출이며, 답한 조각은 인터페이스·전표생성·반제·권한·채번 같은 핵심 패턴 위주로 골랐다. +- 조각의 `confidence` 는 응답자가 스스로 매긴 값이고, `unclear` 에 확정하지 못한 점을 남겼다. +- 조각의 테이블·호출은 LLM 값이 아니라 **파서가 조각 범위에서 다시 뽑은 사실**이다. + diff --git a/wiki/programs/ZCOC0010.md b/wiki/programs/ZCOC0010.md new file mode 100644 index 0000000..58e1929 --- /dev/null +++ b/wiki/programs/ZCOC0010.md @@ -0,0 +1,5145 @@ +--- +type: abap-program +title: "ZCOC0010 — 사업계획 예산 Upload" +description: "코스트센터(부서)별·원가요소별 연간 사업계획 예산(1~12월 금액, 천원 단위)을 엑셀 파일로 업로드하여 관리회계영역(TKA01) KR01의 계획 버전(P_VERSN, 기본 B00)에 1차 원가 계획(Primary Cost Planning)으로 반영하는 프로그램이다. 업로드 데이터는 CSKS(코스트센터)·CSKA(원가요소) 마스터 존재 여부와 부서/원가요소 중복을 검증한 뒤 ALV로 보여주고, 사용자가 전기(&POST)를 확인하면 월별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 COSP 계획값을 생성하며, 옵션에 따라 기존 값 삭제 후 재업로드(P_INS) 또는 기존 값에 가산(P_DELTA, DELTA='X')한다." +resource: "abap://ZCOC0010" +tags: ["예산관리", "사업계획", "코스트센터 계획", "1차 원가계획", "엑셀 업로드", "CO-OM-CCA", "화면 명령 분기", "예산 전기", "화면 종료", "ALV 컨테이너 해제", "계획 헤더", "관리회계영역", "계획 버전", "회계연도", "기간", "코스트센터", "원가요소", "월별 계획금액", "천원 단위 환산", "통화 변환"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:10+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKA", "CSKS", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "467ecc33102c1f2a02e9e150c04ce0c3a4e3fa9248c92bb2988bb2663935fa16" +x-unit-count: 145 +x-chunk-count: 73 +x-declaration-count: 206 +--- + +## 업무 목적 + +코스트센터(부서)별·원가요소별 연간 사업계획 예산(1~12월 금액, 천원 단위)을 엑셀 파일로 업로드하여 관리회계영역(TKA01) KR01의 계획 버전(P_VERSN, 기본 B00)에 1차 원가 계획(Primary Cost Planning)으로 반영하는 프로그램이다. 업로드 데이터는 CSKS(코스트센터)·CSKA(원가요소) 마스터 존재 여부와 부서/원가요소 중복을 검증한 뒤 ALV로 보여주고, 사용자가 전기(&POST)를 확인하면 월별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 COSP 계획값을 생성하며, 옵션에 따라 기존 값 삭제 후 재업로드(P_INS) 또는 기존 값에 가산(P_DELTA, DELTA='X')한다. + +## 주 흐름 + +1. 관리회계영역 텍스트·버전 텍스트를 조회하고 회계연도 기본값(다음 연도)과 엑셀 양식 다운로드 버튼(FC01)을 설정한다 (SET_DYNP, FC01_ACTIVE) +2. 선택화면에서 양식 다운로드 버튼을 누르면 SMW0 문서 ZCOC0010을 열어 업로드 양식을 제공한다 (CONTROL_FCXX) +3. 업로드 파일이 입력되었는지 확인하고 ALV 필드카탈로그·상태 변수를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +4. 엑셀 파일 존재를 확인하고 2행부터 읽어 GT_UPLOAD에 적재한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA) +5. 숫자/날짜/체크박스 형식 정리 및 대문자 변환 후 GT_DATA로 옮기고 금액을 통화 내부형식으로 변환한다 (SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +6. 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 부서코드/원가요소 중복 라인을 검증하고 오류 라인을 빨간색으로 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 검증 결과를 화면 100의 ALV Grid로 표시하고, 오류 라인 더블클릭 시 메시지 팝업을 보여준다 (DISPLAY_ALV_LIST, SHOW_LOG_POP) +8. 전기 버튼(&POST) 확인 후 라인별·월별(12회)로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출하여 계획값을 전기하고 COMMIT/ROLLBACK 및 결과 상태를 기록한다 (EXECUTE_BAPI, MAKE_BAPI_DATA, FILL_TABLES) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행(코스트센터, 원가요소, 1~12월 금액 WOG001~WOG012, 문자형) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 검증·전기 대상 메인 ALV 테이블 (KOSTL, KSTAR, TWAER, WOG001~012, STATUS, MESSAGE, MSG_LIST) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, MAKE_BAPI_DATA / 소비: DISPLAY_ALV_LIST, MAKE_BAPI_DATA, FILL_TABLES, SHOW_LOG_POP) +- `GT_LOG_POP` — 오류 라인 메시지 팝업 ALV용 테이블 (채움: SHOW_LOG_POP / 소비: SHOW_LOG_POP) +- `GT_MAIN_FIELDCAT` — GT_DATA 기준 ALV 필드카탈로그 (채움: INITIALIZE_DATA / 소비: CONVERT_KRW_DATA, ADD_DATA_MESSAGE, DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, CSKA, CSKS, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH + +## 로직 조각 (73건 / unit 63개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_DYNP — `ZCOC0010F01` L24-L34 (11줄) + +*초기화 시 관리회계영역 명칭·계획 버전 텍스트를 조회해 선택화면에 표시하고 회계연도 기본값을 다음 연도로 설정하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE(TKA01)로 관리회계영역 명칭을 P_BEZEI에, GET_VERSN_TEXT(TKT09)로 계획 버전 텍스트를 P_VSN_T에 설정하고 회계연도 P_GJAHR 기본값을 현재 연도+1(차년도 사업계획)로 지정한다. + +```abap + 26| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 27| P_BEZEI = GV_KOKRS_BEZEI. + 28| + 29| PERFORM GET_VERSN_TEXT USING P_KOKRS + 30| P_VERSN CHANGING P_VSN_T. + 31| + 32| P_GJAHR = SY-DATUM+0(4) + 1. +``` + +- **EN**: Populate selection screen defaults: controlling area description from TKA01, plan version text from TKT09 and fiscal year defaulted to next year for business planning. +- 호출(파서): SET_KOKRS_BASE, GET_VERSN_TEXT +- SAP 객체: SET_KOKRS_BASE, GET_VERSN_TEXT, TKA01, TKT09 +- 업무 키워드: 선택화면 기본값, 관리회계영역 명칭, 계획 버전 텍스트, 차년도 회계연도 +- English: Selection Screen Default, Controlling Area, Plan Version, Fiscal Year +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`P_VERSN`](#decl-zcoc0010top-122-p_versn), [`P_GJAHR`](#decl-zcoc0010top-131-p_gjahr) +- 선언을 못 찾은 이름: P_BEZEI, P_VSN_T (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L26-L32` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#SET_DYNP#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs), [`P_VERSN`](#decl-zcoc0010top-122-p_versn) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM CONTROL_FCXX — `ZCOC0010F01` L44-L56 (13줄) + +*선택화면 버튼 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0로 SMW0 문서 ZCOC0010 업로드 양식을 여는 FORM이다.* + +> 이 unit 의 조각 1개가 8/13줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0를 호출해 SMW0에 등록된 사업계획 예산 Upload 양식 문서(GC_SMW0)를 사용자에게 열어 준다. + +```abap + 47| L_UCOMM = SSCRFIELDS-UCOMM. + 48| CASE L_UCOMM. + 49| WHEN 'FC01'. + 50| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 51| EXPORTING + 52| P_DOCNAM = GC_SMW0 + 53| P_TITLE = '사업계획 예산 Upload 양식'(F02). + 54| ENDCASE. +``` + +- **EN**: On function code FC01 call Z_CO_OPEN_SMW0 to open the SMW0 web repository document holding the plan budget upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, SMW0 문서, 선택화면 버튼 +- English: SMW0, Upload Template, Function Code +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0010f01-45-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0010top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0010top-33-gc_smw0) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L47-L54` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0010` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0010/ZCOC0010#L49-L51` · confidence 0.8 · `ZCOC0010#ZCOC0010#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0010F01` L65-L72 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 67| IF P_FNAME IS INITIAL. + 68| MESSAGE S000 DISPLAY LIKE 'E' WITH + 69| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 70| LEAVE LIST-PROCESSING. + 71| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0010top-135-p_fname) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L67-L71` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0010F01` L80-L105 (26줄) + +*관리회계영역 기본정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 오류·전기 상태 변수를 초기화하는 FORM이다.* + +> 이 unit 의 조각 1개가 8/26줄(31%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역(P_KOKRS)의 기본정보·명칭을 읽어 P_BEZEI에 넣고, GET_FCAT_LIKE_ITAB으로 GT_DATA 기준 메인 ALV 필드카탈로그(GT_MAIN_FIELDCAT)를 생성한다. + +```abap + 87| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 88| P_BEZEI = GV_KOKRS_BEZEI. + 89| + 90| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 91| " MAIN ALV용 딕셔너리 구조 취득. + 92| PERFORM GET_FCAT_LIKE_ITAB + 93| TABLES GT_MAIN_FIELDCAT + 94| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Load controlling area base data and description via SET_KOKRS_BASE and build the main ALV field catalog for GT_DATA via GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- SAP 객체: SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB, GT_MAIN_FIELDCAT, TKA01 +- 업무 키워드: 관리회계영역 기본정보, 필드카탈로그 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc0010top-40-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc0010top-31-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L87-L94` · confidence 0.8 · `ZCOC0010#ZCOC0010F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM READ_DATA — `ZCOC0010F01` L324-L340 (17줄) + +*엑셀 업로드 → 형식 정리 → GT_DATA 이전·통화 변환 → 검증 순서로 하위 FORM을 호출하는 데이터 읽기 제어 FORM이다.* + +> 이 unit 의 조각 1개가 13/17줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] UPLOAD_EXCEL_DATA로 엑셀을 GT_UPLOAD에 읽고, 데이터가 있으면 SET_BDC_FORM(형식 정리) → TRANSFER_GT_DATA(GT_DATA 이전) → CONVERT_KRW_DATA(통화 내부형식) → VALIDATION_CHECK(마스터·중복 검증) 순으로 처리한다. + +```abap + 326| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 327| + 328| CHECK GT_UPLOAD[] IS NOT INITIAL. + 329| + 330| "2. 업로드가 제대로 되었다면. + 331| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 332| + 333| "3. 엑셀 데이터를 인터널 테이블로 이전 + 334| PERFORM TRANSFER_GT_DATA. + 335| PERFORM CONVERT_KRW_DATA. + 336| + 337| "4. Validation + 338| PERFORM VALIDATION_CHECK. +``` + +- **EN**: Orchestrate the upload pipeline: read Excel, cleanse formats, transfer to GT_DATA, convert currency amounts and run master data/duplicate validation. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK +- SAP 객체: UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK +- 업무 키워드: 업로드 처리 순서, 데이터 정제, 검증 호출 +- English: Upload Pipeline, Validation, Currency Conversion +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0010top-135-p_fname), [`GT_UPLOAD`](#decl-zcoc0010top-45-gt_upload) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L326-L338` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0010F01` L297-L315 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 300| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 301| + 302| IF L_EXISTS = ABAP_FALSE. + 303| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 304| LEAVE LIST-PROCESSING. + 305| EXIT. + 306| ENDIF. + 307| + 308| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 309| 'GS_UPLOAD' + 310| P_NAME + 311| 1 "S_COL-LOW + 312| 2 "S_ROW-LOW + 313| 256 "S_COL-HIGH + 314| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0010f01-298-l_exists) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L300-L314` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0010top-135-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0010F01` L365-L455 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 384| L_TABNAME = P_STRUCT_NM. + 385| + 386| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 387| USING L_TABNAME. + 388| + 389| SELECT DOMNAME LOWERCASE + 390| INTO TABLE LT_LOWERCASE + 391| FROM DD01L + 392| FOR ALL ENTRIES IN LT_FCAT + 393| WHERE DOMNAME = LT_FCAT-DOMNAME + 394| AND AS4LOCAL = 'A'. + 395| + 396| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0010f01-367-l_tabname), [`LT_FCAT`](#decl-zcoc0010f01-366-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0010f01-375-lt_lowercase) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L384-L396` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 398| LOOP AT LT_FCAT ASSIGNING . + 399| CASE -DATATYPE. + 400| " 숫자 타입 + 401| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 402| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 403| L_TYPE = 'NUMB'. + 404| " 날짜 + 405| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 406| L_TYPE = 'DATS'. + 407| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 408| "CHECK BOX + 409| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 410| L_TYPE = 'CHCK'. + 411| ENDIF. + 412| WHEN OTHERS. + 413| ENDCASE. + 414| + 415| IF -CONVEXIT IS NOT INITIAL. + 416| L_CONV_ALPHA = 'X'. + 417| ENDIF. + 418| + 419| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 420| CONTINUE. + 421| ENDIF. + 422| + 423| LOOP AT GT_UPLOAD ASSIGNING . + 424| CONCATENATE '-' -FIELDNAME + 425| INTO L_FSNAME. + 426| ASSIGN (L_FSNAME) TO . + 427| + 428| IF SY-SUBRC EQ 0. + 429| CASE L_TYPE. + 430| WHEN 'NUMB'. + 431| PERFORM BDC_CURR USING . + 432| WHEN 'DATS'. + 433| PERFORM BDC_DATE USING . + 434| WHEN 'CHCK'. + 435| PERFORM BDC_CHECKBOX USING . + 436| WHEN OTHERS. + 437| ENDCASE. + 438| + 439| IF L_CONV_ALPHA = 'X'. + 440| PERFORM ZERO_I USING . + 441| ENDIF. + 442| + 443| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 444| BINARY SEARCH. + 445| + 446| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 447| TRANSLATE TO UPPER CASE. + 448| ENDIF. + 449| ENDIF. + 450| ENDLOOP. + 451| + 452| CLEAR : L_TYPE. + 453| CLEAR : L_CONV_ALPHA. + 454| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0010f01-366-lt_fcat), [``](#decl-zcoc0010f01-373--fs_fcat-), [`L_TYPE`](#decl-zcoc0010f01-369-l_type), [`L_CONV_ALPHA`](#decl-zcoc0010f01-370-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0010top-45-gt_upload), [``](#decl-zcoc0010f01-371--fs_upload-), [`L_FSNAME`](#decl-zcoc0010f01-368-l_fsname), [``](#decl-zcoc0010f01-372--fs-), [`LT_LOWERCASE`](#decl-zcoc0010f01-375-lt_lowercase) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L398-L454` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0010F01` L135-L150 (16줄) + +*엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 옮기며 코스트센터 대문자 변환·초기 상태·거래통화를 설정하고 숫자 변환 오류를 잡는 FORM이다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 MOVE-CORRESPONDING으로 GT_DATA에 옮기며 KOSTL을 대문자로, STATUS를 초기값, TWAER를 선택화면 통화(P_TWAER)로 설정하고, 문자→숫자 변환 예외(CX_SY_CONVERSION_NO_NUMBER) 발생 시 오류 메시지로 중단한다. + +```abap + 136| TRY. + 137| LOOP AT GT_UPLOAD. + 138| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 139| TRANSLATE GT_DATA-KOSTL TO UPPER CASE. + 140| GT_DATA-STATUS = GC_STATUS_INIT. + 141| GT_DATA-TWAER = P_TWAER. + 142| APPEND GT_DATA. + 143| CLEAR : GT_DATA. + 144| ENDLOOP. + 145| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 146| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F02) + 147| DISPLAY LIKE 'E'. + 148| LEAVE LIST-PROCESSING. + 149| ENDTRY. +``` + +- **EN**: Move each uploaded Excel row into GT_DATA with uppercase cost center, initial status and transaction currency, aborting with an error when a numeric field contains characters. +- SAP 객체: GT_UPLOAD, GT_DATA, CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 업로드 데이터 이전, 코스트센터 대문자, 숫자 변환 오류, 거래통화 +- English: Excel Upload, MOVE-CORRESPONDING, Conversion Error, Transaction Currency +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0010top-45-gt_upload), [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0010top-128-p_twaer) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L136-L149` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0010F01` L242-L263 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 248| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 249| WHERE DATATYPE = 'CURR'. + 250| + 251| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 252| INTO LV_FIELD. + 253| + 254| LOOP AT GT_DATA ASSIGNING . + 255| ASSIGN (LV_FIELD) TO . + 256| + 257| IF SY-SUBRC EQ 0. + 258| PERFORM CONV_DB_WAERS USING GV_WAERS. + 259| ENDIF. + 260| ENDLOOP. + 261| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0010top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0010f01-243-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0010f01-246-lv_field), [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [``](#decl-zcoc0010f01-245--fs_data-), [``](#decl-zcoc0010f01-244--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L248-L261` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0010F01` L160-L236 (77줄) + +*업로드된 각 라인의 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 코스트센터/원가요소 중복 라인을 검증해 오류 상태·메시지를 설정하는 FORM이다.* + +> 이 unit 의 조각 2개가 65/77줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 각 업로드 라인에 대해 CSKS에서 관리회계영역(P_KOKRS)·오늘 유효한 코스트센터를, CSKA에서 계정과목표(GV_KTOPL)의 원가요소를 SELECT SINGLE로 확인하고, 없으면 상태를 빨간색으로 하고 오류 메시지를 설정하며 해당 필드를 빨간색 강조·메시지 목록에 추가한다. + +```abap + 169| LOOP AT GT_DATA. + 170| SELECT SINGLE * + 171| INTO LS_CSKS + 172| FROM CSKS + 173| WHERE KOKRS = P_KOKRS + 174| AND KOSTL = GT_DATA-KOSTL + 175| AND DATBI >= SY-DATUM + 176| AND DATAB <= SY-DATUM. + 177| + 178| IF SY-SUBRC NE 0. + 179| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다'(F04). + 180| GT_DATA-STATUS = GC_STATUS_RED. + 181| GV_UPLOAD_ERROR = 'X'. + 182| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 183| PERFORM ADD_DATA_MESSAGE USING 'KOSTL' + 184| GT_DATA-MESSAGE. + 185| ENDIF. + 186| * + 187| SELECT SINGLE * + 188| FROM CSKA + 189| INTO LS_CSKA + 190| WHERE KTOPL = GV_KTOPL + 191| AND KSTAR = GT_DATA-KSTAR. + 192| + 193| IF SY-SUBRC NE 0. + 194| GT_DATA-MESSAGE = '존재하지 않는 원가요소입니다'(F05). + 195| GT_DATA-STATUS = GC_STATUS_RED. + 196| GV_UPLOAD_ERROR = 'X'. + 197| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 198| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 199| GT_DATA-MESSAGE. + 200| ENDIF. + 201| + 202| MODIFY GT_DATA. + 203| CLEAR : GT_DATA. + 204| ENDLOOP. +``` + +- **EN**: For each uploaded line verify the cost center exists in CSKS (valid today in the controlling area) and the cost element in CSKA for the chart of accounts, marking the line red with an error message and field highlight when missing. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKA](/tables/CSKA.md) / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, CSKA, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 코스트센터 존재 검증, 원가요소 존재 검증, 업로드 오류 표시, 관리회계영역 +- English: Cost Center, Cost Element, CSKS, CSKA, Master Data Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`LS_CSKS`](#decl-zcoc0010f01-161-ls_csks), [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0010top-22-gv_upload_error), [`LS_CSKA`](#decl-zcoc0010f01-162-ls_cska), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L169-L204` · confidence 0.95 · `ZCOC0010#ZCOC0010F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] GT_DATA를 코스트센터·원가요소로 정렬한 복사본과 비교해 같은 KOSTL/KSTAR 조합이 2건 이상이면 중복(DUP_DATA)으로 표시하고 오류 상태·메시지·필드 강조를 설정한다. + +```abap + 206| SORT GT_DATA BY KOSTL KSTAR. + 207| + 208| LT_DATA[] = GT_DATA[]. + 209| * + 210| LOOP AT GT_DATA. + 211| + 212| LOOP AT LT_DATA TRANSPORTING NO FIELDS + 213| WHERE KOSTL = GT_DATA-KOSTL + 214| AND KSTAR = GT_DATA-KSTAR. + 215| ADD 1 TO LV_CNT. + 216| ENDLOOP. + 217| + 218| IF LV_CNT > 1. + 219| GT_DATA-DUP_DATA = 'X'. + 220| + 221| GT_DATA-MESSAGE = '부서코드/원가요소 중복된 라인입니다.'(F06). + 222| GT_DATA-STATUS = GC_STATUS_RED. + 223| GV_UPLOAD_ERROR = 'X'. + 224| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 225| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 226| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 227| GT_DATA-MESSAGE. + 228| MODIFY GT_DATA. + 229| CLEAR : GT_DATA. + 230| ENDIF. + 231| + 232| CLEAR : LV_CNT. + 233| + 234| ENDLOOP. +``` + +- **EN**: Detect duplicate cost center/cost element combinations by counting matches in a copy of GT_DATA and flag them as red duplicate errors. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: GT_DATA, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 중복 라인 검증, 부서코드/원가요소 중복, 업로드 오류 +- English: Duplicate Check, Cost Center, Cost Element +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`LT_DATA`](#decl-zcoc0010f01-165-lt_data), [`LV_CNT`](#decl-zcoc0010f01-163-lv_cnt), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0010top-22-gv_upload_error) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L206-L234` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#VALIDATION_CHECK#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC0010F01` L735-L747 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 740| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 741| WITH KEY FIELDNAME = P_FIELD. + 742| + 743| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 744| INTO LV_MESSAGE. + 745| + 746| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0010top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0010f01-738-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0010f01-737-lv_message), [`GT_DATA`](#decl-zcoc0010top-65-gt_data) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L740-L746` · confidence 0.8 · `ZCOC0010#ZCOC0010F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC0010` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data) +- 위치: `abap://ZCOC0010/ZCOC0010#L57-L67` · confidence 0.85 · `ZCOC0010#ZCOC0010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_LOG_POP — `ZCOC0010F01` L463-L506 (44줄) + +*ALV에서 선택한 행이 오류 상태이면 해당 라인의 메시지 목록(MSG_LIST)을 팝업 그리드로 보여주는 FORM이다.* + +> 이 unit 의 조각 2개가 32/44줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행 번호로 GT_DATA를 읽어 상태가 빨간색(오류)인 경우에만 GT_DATA-MSG_LIST의 메시지를 코스트센터와 함께 팝업용 테이블 LT_POPUP에 적재한다. + +```abap + 473| CHECK P_ROW CO '0123456789 '. + 474| + 475| READ TABLE GT_DATA INDEX P_ROW. + 476| + 477| CHECK SY-SUBRC EQ 0. + 478| CHECK GT_DATA-STATUS = GC_STATUS_RED. + 479| + 480| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 481| USING 'GT_LOG_POP'. + 482| + 483| LOOP AT GT_DATA-MSG_LIST INTO LV_MESSAGE. + 484| LT_POPUP-KOSTL = GT_DATA-KOSTL. + 485| LT_POPUP-STATUS = GC_STATUS_RED. + 486| LT_POPUP-MESSAGE = LV_MESSAGE. + 487| APPEND LT_POPUP. + 488| CLEAR : LT_POPUP. + 489| ENDLOOP. +``` + +- **EN**: Read the selected GT_DATA row, and if its status is red, build popup table lines with cost center, status and each error message from MSG_LIST. +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: GT_DATA, GT_LOG_POP, GET_FCAT_LIKE_ITAB +- 업무 키워드: 오류 메시지 팝업, 코스트센터, 검증 오류 조회 +- English: Error Log, Popup, Cost Center +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`POPUP_FIELDCAT`](#decl-zcoc0010f01-464-popup_fieldcat), [`LV_MESSAGE`](#decl-zcoc0010f01-469-lv_message), [`GT_LOG_POP`](#decl-zcoc0010top-96-gt_log_pop), [`LT_POPUP`](#decl-zcoc0010f01-466-lt_popup) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L473-L489` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#SHOW_LOG_POP#C1` + +#### [output] 팝업 레이아웃을 설정하고 W_POPUP_GRID 객체를 생성해 SHOW_DATA로 오류 메시지 목록을 팝업 ALV로 표시한다. + +```abap + 491| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 492| + 493| CREATE OBJECT W_POPUP_GRID + 494| EXPORTING + 495| I_T_FIELDCATALOG = POPUP_FIELDCAT + 496| I_S_LAYOUT = LS_LAYO + 497| I_CAPTION = '' + 498| I_LEFT = 100 + 499| I_TOP = 150 + 500| I_HEIGHT = 400 + 501| I_WIDTH = 900. + 502| + 503| CALL METHOD W_POPUP_GRID->SHOW_DATA + 504| EXPORTING + 505| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Set popup ALV layout, instantiate the popup grid object and display the error message list via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, SET_ALV_LAYOUT_POP +- 업무 키워드: 팝업 ALV 표시, 오류 로그 +- English: ALV Grid, Popup, Error Log Display +- 정의부(복사 시 함께 필요): [`LS_LAYO`](#decl-zcoc0010f01-465-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0010top-104-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0010f01-464-popup_fieldcat), [`GT_LOG_POP`](#decl-zcoc0010top-96-gt_log_pop), [`LT_POPUP`](#decl-zcoc0010f01-466-lt_popup) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L491-L505` · confidence 0.8 · `ZCOC0010#ZCOC0010F01#FORM#SHOW_LOG_POP#C2` + +### FORM CONVERT_1000_UP — `ZCOC0010F01` L270-L291 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 라인의 해당 금액 필드를 동적으로 ASSIGN한 뒤 CONVERT_1000_U로 1000배(천원→원) 변환한다. + +```abap + 276| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 277| WHERE DATATYPE = 'CURR'. + 278| + 279| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 280| INTO LV_FIELD. + 281| + 282| LOOP AT GT_DATA ASSIGNING . + 283| ASSIGN (LV_FIELD) TO . + 284| + 285| IF SY-SUBRC EQ 0. + 286| PERFORM CONVERT_1000_U USING + 287| CHANGING . + 288| ENDIF. + 289| ENDLOOP. + 290| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog, dynamically assign the amount field in each GT_DATA row and multiply by 1000 (thousand KRW to KRW) via CONVERT_1000_U. +- 호출(파서): CONVERT_1000_U +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 천원 단위 환산, 금액 필드 동적 처리, 계획금액 +- English: Amount Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0010top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0010f01-271-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0010f01-274-lv_field), [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [``](#decl-zcoc0010f01-273--fs_data-), [``](#decl-zcoc0010f01-272--fs_field-) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L276-L290` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#CONVERT_1000_UP#C1` + +### FORM EXECUTE_BAPI — `ZCOC0010F01` L515-L536 (22줄) + +*중복 전기를 막고 사용자 확인 팝업 후 MAKE_BAPI_DATA로 예산 전기를 시작하는 FORM이다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 이미 전기된 경우(GV_ALREADY_POST) 오류 메시지 후 중단하고, POPUP_TO_CONFIRM_02로 '예산을 입력하시겠습니까?' 확인(J)을 받은 경우에만 전기 플래그를 세우고 MAKE_BAPI_DATA를 수행한다. + +```abap + 520| IF GV_ALREADY_POST = 'X'. + 521| MESSAGE S000 DISPLAY LIKE 'E' WITH + 522| '이미 처리하였습니다'(F12). + 523| EXIT. + 524| ENDIF. + 525| + 526| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 527| '예산을 입력하시겠습니까?'(F07) ' ' + 528| CHANGING L_ANSWER. + 529| IF L_ANSWER <> 'J'. + 530| EXIT. + 531| ENDIF. + 532| + 533| GV_ALREADY_POST = 'X'. + 534| + 535| PERFORM MAKE_BAPI_DATA. +``` + +- **EN**: Prevent duplicate posting, ask user confirmation via POPUP_TO_CONFIRM, then set already-posted flag and run MAKE_BAPI_DATA to post the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_02, MAKE_BAPI_DATA +- SAP 객체: POPUP_TO_CONFIRM_02, POPUP_TO_CONFIRM, MAKE_BAPI_DATA +- 업무 키워드: 중복 전기 방지, 확인 팝업, 예산 전기 실행 +- English: Duplicate Check, Confirmation Popup, Plan Posting +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0010top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0010f01-516-l_answer) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L520-L535` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#EXECUTE_BAPI#C1` + +### FORM MAKE_BAPI_DATA — `ZCOC0010F01` L545-L661 (117줄) + +*GT_DATA의 각 라인에 대해 1~12월별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 1차 원가 계획을 전기하고 COMMIT/ROLLBACK 및 라인별 상태·메시지를 설정하는 FORM이다.* + +> 이 unit 의 조각 2개가 84/117줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 각 코스트센터·원가요소 라인에 대해 12개월을 순회하며 FILL_TABLES로 BAPI 파라미터를 채우고 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA 옵션)로 계획값을 전기한 뒤, RETURN이 없으면 BAPI_TRANSACTION_COMMIT, 오류 시 ROLLBACK 후 월(WOGnn) 오류 필드와 메시지를 GT_DATA-MSG_LIST에 누적한다. + +```abap + 575| LOOP AT GT_DATA. + 576| + 577| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 578| + 579| PERFORM BAR_MSG_PER USING TEXT-F20 + 580| SY-TABIX LV_CNT. + 581| + 582| DO 12 TIMES. + 583| LV_NC = SY-INDEX. + 584| LV_PERIOD = SY-INDEX. + 585| + 586| CONCATENATE 'GT_DATA-WOG' LV_NC INTO LV_FIELD. + 587| + 588| PERFORM FILL_TABLES + 589| TABLES LT_INDEXSTRUCTURE + 590| LT_COOBJECT + 591| LT_TOTVALUE + 592| USING LV_PERIOD LV_FIELD + 593| CHANGING LS_HEADERINFO. + 594| + 595| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 596| EXPORTING + 597| HEADERINFO = LS_HEADERINFO + 598| DELTA = LV_DELTA + 599| TABLES + 600| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 601| COOBJECT = LT_COOBJECT + 602| PERVALUE = LT_PERVALUE + 603| TOTVALUE = LT_TOTVALUE + 604| CONTRL = LT_CONTRL + 605| RETURN = LT_RETURN. + 606| + 607| IF LT_RETURN[] IS INITIAL. + 608| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 609| EXPORTING + 610| WAIT = 'X'. + 611| ELSE. + 612| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 613| + 614| GT_DATA-BAPI_FAIL = 'X'. + 615| CONCATENATE 'WOG' LV_NC INTO LV_ERROR_FIELD. + 616| + 617| LOOP AT LT_RETURN INTO LS_RETURN. + 618| CONCATENATE LV_ERROR_FIELD+4(2) ` ` + 619| TEXT-F11 ` ` LS_RETURN-MESSAGE INTO LV_MESSAGE. + 620| PERFORM ADD_DATA_MESSAGE USING LV_ERROR_FIELD + 621| LV_MESSAGE. + 622| ENDLOOP. + 623| + 624| GT_DATA-MESSAGE = LV_MESSAGE. + 625| + 626| ENDIF. + 627| + 628| CLEAR : LT_INDEXSTRUCTURE, LT_INDEXSTRUCTURE[]. + 629| CLEAR : LT_COOBJECT, LT_COOBJECT[]. + 630| CLEAR : LT_TOTVALUE, LT_TOTVALUE[]. + 631| CLEAR : LS_HEADERINFO. + 632| CLEAR : LT_RETURN, LT_RETURN[]. + 633| ENDDO. + 634| + 635| MODIFY GT_DATA. + 636| CLEAR : GT_DATA. + 637| + 638| ENDLOOP. +``` + +- **EN**: For each cost center/cost element line and each of 12 periods, build BAPI tables and call BAPI_COSTACTPLN_POSTPRIMCOST with DELTA flag, commit on success or rollback and collect return messages per month field on error. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BAR_MSG_PER, FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, ADD_DATA_MESSAGE +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, FILL_TABLES, ADD_DATA_MESSAGE, BAR_MSG_PER, COSP +- 업무 키워드: 사업계획 예산 전기, 1차 원가 계획, 월별 전기, 커밋/롤백, 오류 메시지 누적, 진행률 표시 +- English: Primary Cost Planning, BAPI, Commit, Rollback, Delta Posting, Return Message +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`LV_CNT`](#decl-zcoc0010f01-560-lv_cnt), [`LV_NC`](#decl-zcoc0010f01-558-lv_nc), [`LV_PERIOD`](#decl-zcoc0010f01-557-lv_period), [`LV_FIELD`](#decl-zcoc0010f01-554-lv_field), [`LT_INDEXSTRUCTURE`](#decl-zcoc0010f01-547-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0010f01-548-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0010f01-550-lt_totvalue), [`LS_HEADERINFO`](#decl-zcoc0010f01-546-ls_headerinfo), [`LV_DELTA`](#decl-zcoc0010f01-556-lv_delta), [`LT_PERVALUE`](#decl-zcoc0010f01-549-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0010f01-551-lt_contrl) 외 4건 +- 위치: `abap://ZCOC0010/ZCOC0010F01#L575-L638` · confidence 0.95 · `ZCOC0010#ZCOC0010F01#FORM#MAKE_BAPI_DATA#C1` + +#### [output] BAPI 실패 여부(BAPI_FAIL)에 따라 라인 상태를 녹색(성공, 메시지 GP510)/빨간색(실패)으로 설정하고 완료 메시지와 ALV 갱신 플래그를 세운다. + +```abap + 640| LOOP AT GT_DATA. + 641| IF GT_DATA-BAPI_FAIL NE 'X'. + 642| GT_DATA-STATUS = GC_STATUS_GREEN. + 643| + 644| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 645| INTO GT_DATA-MESSAGE + 646| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 647| + 648| * GT_DATA-MESSAGE = '정상적으로 반영되었습니다.'(F10). + 649| ELSE. + 650| GT_DATA-STATUS = GC_STATUS_RED. + 651| ENDIF. + 652| + 653| MODIFY GT_DATA. + 654| CLEAR : GT_DATA. + 655| ENDLOOP. + 656| + 657| MESSAGE S000 WITH '처리가 완료되었습니다.'(F09). + 658| + 659| GV_REFRESH = 'X'. +``` + +- **EN**: Set per-line status icon green (with message GP 510) or red based on BAPI failure flag, issue completion message and set ALV refresh flag. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA +- 업무 키워드: 처리 결과 상태, 성공/실패 표시, 완료 메시지, ALV 갱신 +- English: Status Icon, Message, ALV Refresh +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L640-L659` · confidence 0.85 · `ZCOC0010#ZCOC0010F01#FORM#MAKE_BAPI_DATA#C2` + +### FORM FILL_TABLES — `ZCOC0010F01` L672-L727 (56줄) + +*BAPI_COSTACTPLN_POSTPRIMCOST 호출용 헤더(BAPIPLNHDR)와 코스트센터·원가요소·월별 금액 테이블을 한 기간(월) 기준으로 채우는 FORM이다.* + +> 이 unit 의 조각 2개가 34/56줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 관리회계영역(P_KOKRS)·회계연도·기간(월)·계획 버전(P_VERSN)·문서 텍스트·계획 통화유형을 BAPI 헤더 구조 BAPIPLNHDR에 채운다. + +```abap + 691| ES_HEADERINFO-CO_AREA = P_KOKRS. + 692| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 693| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 694| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 695| ES_HEADERINFO-VERSION = P_VERSN. + 696| ES_HEADERINFO-DOC_HDR_TX = '연간 사업계획 예산'(F08). + 697| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill BAPIPLNHDR header with controlling area, fiscal year, period from/to, plan version, document text and plan currency type for primary cost planning. +- SAP 객체: BAPIPLNHDR, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: 계획 헤더, 관리회계영역, 계획 버전, 회계연도, 기간 +- English: Controlling Area, Plan Version, Fiscal Year, Period, Primary Cost Planning +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0010top-113-p_kokrs), [`P_GJAHR`](#decl-zcoc0010top-131-p_gjahr), [`P_VERSN`](#decl-zcoc0010top-122-p_versn), [`GC_PLAN_CURR`](#decl-zcoc0010top-34-gc_plan_curr) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L691-L697` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#FILL_TABLES#C1` + +#### [interface] 동적 필드명(WOGnnn)으로 해당 월 금액을 읽어 천원 단위를 원 단위로 환산(CONVERT_1000_U)하고 통화 외부형식으로 변환(CONV_VIEW_WAERS)한 뒤 코스트센터(BAPIPCPOBJ)·원가요소 총액(BAPIPCPTOT)·인덱스(BAPIACPSTRU) 테이블에 추가한다. + +```abap + 700| ASSIGN (P_FIELD) TO . + 701| + 702| CHECK SY-SUBRC EQ 0. + 703| + 704| ET_INDEXSTRUCTURE-OBJECT_INDEX = 1. + 705| ET_INDEXSTRUCTURE-VALUE_INDEX = 1. + 706| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 707| + 708| ET_COOBJECT-OBJECT_INDEX = 1. + 709| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 710| APPEND ET_COOBJECT TO ET_COOBJECT. + 711| + 712| ET_TOTVALUE-VALUE_INDEX = 1. + 713| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR. + 714| + 715| LV_VALUE = . + 716| + 717| PERFORM CONVERT_1000_U USING LV_VALUE + 718| CHANGING LV_VALUE. + 719| + 720| PERFORM CONV_VIEW_WAERS USING LV_VALUE P_TWAER + 721| CHANGING LV_C_VALUE . + 722| + 723| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 724| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 725| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 726| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Read the month amount via dynamic field assignment, scale from thousands to units, convert to IDoc currency format, and append cost center object, cost element total value and index structure entries for the BAPI. +- 호출(파서): CONVERT_1000_U, CONV_VIEW_WAERS +- SAP 객체: BAPIPCPOBJ, BAPIPCPTOT, BAPIACPSTRU, CONVERT_1000_U, CONV_VIEW_WAERS, CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 코스트센터, 원가요소, 월별 계획금액, 천원 단위 환산, 통화 변환, BAPI 테이블 구성 +- English: Cost Center, Cost Element, Plan Value, Currency Conversion, BAPI Table +- 정의부(복사 시 함께 필요): [``](#decl-zcoc0010f01-680--fs_value-), [`GT_DATA`](#decl-zcoc0010top-65-gt_data), [`LV_VALUE`](#decl-zcoc0010f01-682-lv_value), [`P_TWAER`](#decl-zcoc0010top-128-p_twaer), [`LV_C_VALUE`](#decl-zcoc0010f01-683-lv_c_value) +- 위치: `abap://ZCOC0010/ZCOC0010F01#L700-L726` · confidence 0.9 · `ZCOC0010#ZCOC0010F01#FORM#FILL_TABLES#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0010I01` L6-L30 (25줄) + +*화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &POST 전기)을 분기 처리하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드에 따라 BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 화면을 종료하며, &POST 시 EXECUTE_BAPI를 수행해 사업계획 예산을 BAPI로 전기한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&POST'. + 24| PERFORM EXECUTE_BAPI. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 100 function codes: free ALV containers and leave on BACK/CANC/EXIT, call EXECUTE_BAPI to post the plan budget on &POST. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: EXECUTE_BAPI, CLEAR_CONTAINER_PROC +- 업무 키워드: 화면 명령 분기, 예산 전기, 화면 종료, ALV 컨테이너 해제 +- English: User Command, PAI, Function Code, Plan Posting +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0010/ZCOC0010I01#L9-L28` · confidence 0.9 · `ZCOC0010#ZCOC0010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (336건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0010TOP` (32건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc0010top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc0010top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L33-L33 {#decl-zcoc0010top-33-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0010'. +``` + +#### GC_PLAN_CURR — constants · L34-L34 {#decl-zcoc0010top-34-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L40-L40 {#decl-zcoc0010top-40-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L45-L60 {#decl-zcoc0010top-45-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL(10) TYPE C, " 코스트센터 + KSTAR(10) TYPE C, " 원가요소 + WOG001(20) TYPE C, + WOG002(20) TYPE C, + WOG003(20) TYPE C, + WOG004(20) TYPE C, + WOG005(20) TYPE C, + WOG006(20) TYPE C, + WOG007(20) TYPE C, + WOG008(20) TYPE C, + WOG009(20) TYPE C, + WOG010(20) TYPE C, + WOG011(20) TYPE C, + WOG012(20) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L63-L63 {#decl-zcoc0010top-63-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L65-L92 {#decl-zcoc0010top-65-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KSTAR LIKE CSKA-KSTAR, + TWAER LIKE COSP-TWAER, + + WOG001 LIKE COSP-WOG001, + WOG002 LIKE COSP-WOG001, + WOG003 LIKE COSP-WOG001, + WOG004 LIKE COSP-WOG001, + WOG005 LIKE COSP-WOG001, + WOG006 LIKE COSP-WOG001, + WOG007 LIKE COSP-WOG001, + WOG008 LIKE COSP-WOG001, + WOG009 LIKE COSP-WOG001, + WOG010 LIKE COSP-WOG001, + WOG011 LIKE COSP-WOG001, + WOG012 LIKE COSP-WOG001, + + DUP_DATA TYPE C, + BAPI_FAIL TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L94-L94 {#decl-zcoc0010top-94-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L96-L101 {#decl-zcoc0010top-96-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L104-L104 {#decl-zcoc0010top-104-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### P_KOKRS — parameter · L113-L114 {#decl-zcoc0010top-113-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_VERSN — parameter · L122-L123 {#decl-zcoc0010top-122-p_versn} + +```abap +PARAMETER : P_VERSN LIKE COSP-VERSN DEFAULT 'B00' OBLIGATORY + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L128-L129 {#decl-zcoc0010top-128-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER OBLIGATORY DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L131-L131 {#decl-zcoc0010top-131-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY. +``` + +#### P_FNAME — parameter · L135-L135 {#decl-zcoc0010top-135-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME MEMORY ID MD01. +``` + +#### P_INS — parameter · L147-L147 {#decl-zcoc0010top-147-p_ins} + +```abap +PARAMETER : P_INS TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X'. +``` + +#### P_DELTA — parameter · L148-L148 {#decl-zcoc0010top-148-p_delta} + +```abap +PARAMETER : P_DELTA TYPE C RADIOBUTTON GROUP RG1. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0010F01` (48건) + +#### L_UCOMM — data · unit 로컬 · L45-L45 {#decl-zcoc0010f01-45-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_CSKS — data · unit 로컬 · L161-L161 {#decl-zcoc0010f01-161-ls_csks} + +```abap + DATA : LS_CSKS LIKE CSKS. +``` + +#### LS_CSKA — data · unit 로컬 · L162-L162 {#decl-zcoc0010f01-162-ls_cska} + +```abap + DATA : LS_CSKA LIKE CSKA. +``` + +#### LV_CNT — data · unit 로컬 · L163-L163 {#decl-zcoc0010f01-163-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### LT_DATA — data · unit 로컬 · L165-L165 {#decl-zcoc0010f01-165-lt_data} + +```abap + DATA : LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L243-L243 {#decl-zcoc0010f01-243-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L244-L244 {#decl-zcoc0010f01-244--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L245-L245 {#decl-zcoc0010f01-245--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L246-L246 {#decl-zcoc0010f01-246-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L271-L271 {#decl-zcoc0010f01-271-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L272-L272 {#decl-zcoc0010f01-272--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L273-L273 {#decl-zcoc0010f01-273--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L274-L274 {#decl-zcoc0010f01-274-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### L_EXISTS — data · unit 로컬 · L298-L298 {#decl-zcoc0010f01-298-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LT_FCAT — data · unit 로컬 · L366-L366 {#decl-zcoc0010f01-366-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L367-L367 {#decl-zcoc0010f01-367-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L368-L368 {#decl-zcoc0010f01-368-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L369-L369 {#decl-zcoc0010f01-369-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L370-L370 {#decl-zcoc0010f01-370-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L371-L371 {#decl-zcoc0010f01-371--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L372-L372 {#decl-zcoc0010f01-372--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L373-L373 {#decl-zcoc0010f01-373--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L375-L378 {#decl-zcoc0010f01-375-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L464-L464 {#decl-zcoc0010f01-464-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L465-L465 {#decl-zcoc0010f01-465-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L466-L466 {#decl-zcoc0010f01-466-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L469-L469 {#decl-zcoc0010f01-469-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### L_ANSWER — data · unit 로컬 · L516-L516 {#decl-zcoc0010f01-516-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L546-L546 {#decl-zcoc0010f01-546-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L547-L547 {#decl-zcoc0010f01-547-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L548-L548 {#decl-zcoc0010f01-548-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L549-L549 {#decl-zcoc0010f01-549-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L550-L550 {#decl-zcoc0010f01-550-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L551-L551 {#decl-zcoc0010f01-551-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L552-L552 {#decl-zcoc0010f01-552-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L553-L553 {#decl-zcoc0010f01-553-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_FIELD — data · unit 로컬 · L554-L554 {#decl-zcoc0010f01-554-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_ERROR_FIELD — data · unit 로컬 · L555-L555 {#decl-zcoc0010f01-555-lv_error_field} + +```abap + DATA : LV_ERROR_FIELD(30) TYPE C. +``` + +#### LV_DELTA — data · unit 로컬 · L556-L556 {#decl-zcoc0010f01-556-lv_delta} + +```abap + DATA : LV_DELTA TYPE CO_DELTA. +``` + +#### LV_PERIOD — data · unit 로컬 · L557-L557 {#decl-zcoc0010f01-557-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_NC — data · unit 로컬 · L558-L558 {#decl-zcoc0010f01-558-lv_nc} + +```abap + DATA : LV_NC(3) TYPE N. +``` + +#### LV_MESSAGE — data · unit 로컬 · L559-L559 {#decl-zcoc0010f01-559-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_CNT — data · unit 로컬 · L560-L560 {#decl-zcoc0010f01-560-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### — field-symbol · unit 로컬 · L680-L680 {#decl-zcoc0010f01-680--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L682-L682 {#decl-zcoc0010f01-682-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L683-L683 {#decl-zcoc0010f01-683-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_MESSAGE — data · unit 로컬 · L737-L737 {#decl-zcoc0010f01-737-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L738-L738 {#decl-zcoc0010f01-738-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0010 L26-32 | 0 | 프로그램 시작 시 선택화면 기본값(SET_DYNP)과 양식 다운로드 버튼(FC01_ACTIVE)을 설정하는 INITIALIZATION 이벤트이다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0010 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 양식 다운로드 버튼 명령을 처리하는 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0010 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 이벤트이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0010 L42-47 | 0 | 업로드 파일명(P_FNAME) F4 요청 시 F4_FNAME 파일 선택 대화상자를 호출하는 이벤트이다. | +| START-OF-SELECTION | EVENT | ZCOC0010 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0010 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC0010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC0010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC0010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0010C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0010C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0010F01 L6-17 | 0 | 선택화면 그룹 MG1 필드를 회사코드 옵션(GV_BUKRS_O)이 없을 때 입력 불가로 제어하는 화면 속성 FORM이다. | +| SET_DYNP | FORM | ZCOC0010F01 L24-34 | 1 | 초기화 시 관리회계영역 명칭·계획 버전 텍스트를 조회해 선택화면에 표시하고 회계연도 기본값을 다음 연도로 설정하는 FORM이다. | +| CONTROL_FCXX | FORM | ZCOC0010F01 L44-56 | 1 | 선택화면 버튼 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0로 SMW0 문서 ZCOC0010 업로드 양식을 여는 FORM이다. | +| CHECK_INPUT | FORM | ZCOC0010F01 L65-72 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0010F01 L80-105 | 1 | 관리회계영역 기본정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 오류·전기 상태 변수를 초기화하는 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0010F01 L111-114 | 0 | 진행률 메시지를 표시한 뒤 READ_DATA를 호출해 엑셀 업로드·검증을 수행하는 단순 제어 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0010F01 L123-126 | 0 | 선택화면 버튼 01에 '엑셀 양식 다운로드' 아이콘·텍스트를 설정하는 단순 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0010F01 L135-150 | 1 | 엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 옮기며 코스트센터 대문자 변환·초기 상태·거래통화를 설정하고 숫자 변환 오류를 잡는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0010F01 L160-236 | 2 | 업로드된 각 라인의 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 코스트센터/원가요소 중복 라인을 검증해 오류 상태·메시지를 설정하는 FORM이다. | +| CONVERT_KRW_DATA | FORM | ZCOC0010F01 L242-263 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| CONVERT_1000_UP | FORM | ZCOC0010F01 L270-291 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0010F01 L297-315 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC0010F01 L324-340 | 1 | 엑셀 업로드 → 형식 정리 → GT_DATA 이전·통화 변환 → 검증 순서로 하위 FORM을 호출하는 데이터 읽기 제어 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0010F01 L348-356 | 0 | 오류 필드를 ALV 셀 색상 테이블(F_COL)에 빨간색(COL=6)으로 등록해 강조 표시하는 단순 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0010F01 L365-455 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| SHOW_LOG_POP | FORM | ZCOC0010F01 L463-506 | 2 | ALV에서 선택한 행이 오류 상태이면 해당 라인의 메시지 목록(MSG_LIST)을 팝업 그리드로 보여주는 FORM이다. | +| EXECUTE_BAPI | FORM | ZCOC0010F01 L515-536 | 1 | 중복 전기를 막고 사용자 확인 팝업 후 MAKE_BAPI_DATA로 예산 전기를 시작하는 FORM이다. | +| MAKE_BAPI_DATA | FORM | ZCOC0010F01 L545-661 | 2 | GT_DATA의 각 라인에 대해 1~12월별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 1차 원가 계획을 전기하고 COMMIT/ROLLBACK 및 라인별 상태·메시지를 설정하는 FORM이다. | +| FILL_TABLES | FORM | ZCOC0010F01 L672-727 | 2 | BAPI_COSTACTPLN_POSTPRIMCOST 호출용 헤더(BAPIPLNHDR)와 코스트센터·원가요소·월별 금액 테이블을 한 기간(월) 기준으로 채우는 FORM이다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0010F01 L735-747 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0010I01 L6-30 | 1 | 화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &POST 전기)을 분기 처리하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0010O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0010O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0010O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0010O01 L136-156 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0010O01 L164-173 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0010O01 L181-203 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0010O01 L212-240 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0010O01 L313-340 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0010O01 L350-447 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0010O01 L455-482 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | BDC 입력 시 값이 없으면 건너뛸 예외 필드명을 GT_EXCP_INIT_FIELD에 등록하는 단순 공통 FORM이다. | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | CALL TRANSACTION용 옵션 구조 CTU_PARAMS(표시모드·업데이트모드·커밋 등)를 전달 값으로 채우는 단순 공통 FORM이다. | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | CONVERSION_EXIT_ALPHA_OUTPUT으로 선행 0을 제거해 출력 형식으로 바꾸는 단순 공통 FORM이다. | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | CONVERSION_EXIT_ALPHA_INPUT으로 선행 0을 채워 내부 형식으로 바꾸는 단순 공통 FORM이다. | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | POPUP_TO_SELECT_MONTH 팝업으로 연월(YYYYMM)을 선택받는 공통 F4 헬퍼 FORM이다. | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | F4_DATE 달력 팝업으로 날짜(YYYYMMDD)를 선택받는 공통 F4 헬퍼 FORM이다. | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | SAPGUI_PROGRESS_INDICATOR로 지정 퍼센트와 메시지를 상태바에 표시하는 단순 공통 FORM이다. | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | CLOI_PUT_SIGN_IN_FRONT로 숫자 문자열의 음수 부호를 앞으로 옮기는 단순 공통 FORM이다. | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG로 업로드 파일을 선택받아 첫 파일 경로를 돌려주는 공통 F4 헬퍼 FORM이다. | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | 업로드 날짜 문자열에서 '.', '-', '/' 구분자를 제거해 YYYYMMDD 형식으로 정리하는 단순 공통 FORM이다. | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | 업로드 금액 문자열에서 콤마를 제거하는 단순 공통 FORM이다. | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | BDC용 체크박스 값을 대문자로 바꾸는 한 줄짜리 공통 FORM이다. | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | 내부테이블 값 목록으로 F4IF_INT_TABLE_VALUE_REQUEST 검색도움 팝업을 띄우는 공통 F4 헬퍼 FORM이다. | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | 선택화면 푸시버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 공통 FORM이다. | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | 선택화면 푸시버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 공통 FORM이다. | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | 금액에 1000을 곱해 천원 단위를 원 단위로 환산하는 단순 계산 FORM이다. | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | 금액을 1000으로 나누어 원 단위를 천원 단위로 환산하는 단순 계산 FORM이다. | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0020.md b/wiki/programs/ZCOC0020.md new file mode 100644 index 0000000..00decc1 --- /dev/null +++ b/wiki/programs/ZCOC0020.md @@ -0,0 +1,5119 @@ +--- +type: abap-program +title: "ZCOC0020 — 월별 실행예산 Upload" +description: "코스트센터(부서)·원가요소·기간(월)별 실행예산 금액(천원 단위)을 엑셀로 업로드하여 관리회계영역 KR01의 실행예산 버전(P_VERSN, 기본 B10)에 1차 원가 계획(Primary Cost Planning)으로 전기하는 프로그램이다. CSKS·CSKA 마스터 존재 여부와 부서/원가요소/기간 중복을 검증하여 ALV로 보여준 뒤, 전기 확인 시 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 COSP 계획값을 생성하며, 기존 값 삭제 후 재업로드(P_INS) 또는 가산(P_DELTA) 옵션을 지원한다. ZCOC0010(사업계획 예산 Upload)을 복사하여 행 구조를 월별 단일 금액(PERBL, WOGXXX)으로 바꾼 변형이다." +resource: "abap://ZCOC0020" +tags: ["예산관리", "실행예산", "월별 예산", "코스트센터 계획", "1차 원가계획", "엑셀 업로드", "CO-OM-CCA", "계획 헤더", "실행예산 버전", "기간", "관리회계영역", "월별 예산 금액", "천원 단위 환산", "코스트센터", "원가요소", "고정값", "실행예산 전기", "1차 원가 계획", "커밋", "롤백"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:10+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKA", "CSKS", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "6714addb189e54cfe0f2c3ff657a229f1209f5a3c4b3921089252ba4d9b74158" +x-unit-count: 145 +x-chunk-count: 73 +x-declaration-count: 206 +--- + +## 업무 목적 + +코스트센터(부서)·원가요소·기간(월)별 실행예산 금액(천원 단위)을 엑셀로 업로드하여 관리회계영역 KR01의 실행예산 버전(P_VERSN, 기본 B10)에 1차 원가 계획(Primary Cost Planning)으로 전기하는 프로그램이다. CSKS·CSKA 마스터 존재 여부와 부서/원가요소/기간 중복을 검증하여 ALV로 보여준 뒤, 전기 확인 시 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출해 COSP 계획값을 생성하며, 기존 값 삭제 후 재업로드(P_INS) 또는 가산(P_DELTA) 옵션을 지원한다. ZCOC0010(사업계획 예산 Upload)을 복사하여 행 구조를 월별 단일 금액(PERBL, WOGXXX)으로 바꾼 변형이다. + +## 주 흐름 + +1. 관리회계영역·버전 텍스트를 조회하고 회계연도 기본값(당해 연도)과 엑셀 양식 다운로드 버튼을 설정한다 (SET_DYNP, FC01_ACTIVE) +2. 양식 다운로드 버튼(FC01) 클릭 시 SMW0 문서 ZCOC0020을 열어 업로드 양식을 제공한다 (CONTROL_FCXX) +3. 업로드 파일 입력 여부를 확인하고 필드카탈로그·상태 변수를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +4. 엑셀 파일을 읽어 GT_UPLOAD에 적재한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA) +5. 숫자·날짜 형식 정리와 대문자 변환 후 GT_DATA로 이전하고 금액을 통화 내부형식으로 변환한다 (SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +6. 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 부서/원가요소/기간(PERBL) 중복을 검증한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 화면 100 ALV Grid로 결과를 표시하고 오류 라인 메시지를 팝업으로 보여준다 (DISPLAY_ALV_LIST, SHOW_LOG_POP) +8. 전기(&POST) 확인 후 라인별로 해당 기간에 BAPI_COSTACTPLN_POSTPRIMCOST를 호출하여 계획값을 전기하고 COMMIT/ROLLBACK 결과를 기록한다 (EXECUTE_BAPI, MAKE_BAPI_DATA, FILL_TABLES) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행(KOSTL, KSTAR, PERBL 기간, WOGXXX 금액) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 검증·전기 대상 메인 ALV 테이블 (KOSTL, KSTAR, PERBL, TWAER, WOGXXX, STATUS, MESSAGE, MSG_LIST) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, MAKE_BAPI_DATA / 소비: DISPLAY_ALV_LIST, MAKE_BAPI_DATA, FILL_TABLES, SHOW_LOG_POP) +- `GT_LOG_POP` — 오류 메시지 팝업 ALV용 테이블 (채움: SHOW_LOG_POP / 소비: SHOW_LOG_POP) +- `GT_MAIN_FIELDCAT` — GT_DATA 기준 ALV 필드카탈로그 (채움: INITIALIZE_DATA / 소비: CONVERT_KRW_DATA, ADD_DATA_MESSAGE) + +## 테이블 / 외부 호출 + +- read: AENR, CSKA, CSKS, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH + +## 로직 조각 (73건 / unit 63개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_DYNP — `ZCOC0020F01` L24-L34 (11줄) + +*초기화 시 관리회계영역 명칭(SET_KOKRS_BASE)과 실행예산 버전 텍스트(GET_VERSN_TEXT)를 조회해 선택화면에 표시하고 회계연도 기본값을 당해 연도로 설정한다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 텍스트(P_BEZEI), GET_VERSN_TEXT로 버전 P_VERSN의 텍스트(P_VSN_T)를 세팅하고 P_GJAHR 기본값을 SY-DATUM의 연도로 설정한다. + +```abap + 26| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 27| P_BEZEI = GV_KOKRS_BEZEI. + 28| + 29| PERFORM GET_VERSN_TEXT USING P_KOKRS + 30| P_VERSN CHANGING P_VSN_T. + 31| + 32| P_GJAHR = SY-DATUM+0(4). +``` + +- **EN**: Set controlling area text, plan version text and default fiscal year (current year) on the selection screen. +- 호출(파서): SET_KOKRS_BASE, GET_VERSN_TEXT +- 업무 키워드: 관리회계영역 텍스트, 버전 텍스트, 회계연도 기본값 +- English: Controlling Area, Plan Version, Fiscal Year Default +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`P_VERSN`](#decl-zcoc0020top-101-p_versn), [`P_GJAHR`](#decl-zcoc0020top-110-p_gjahr) +- 선언을 못 찾은 이름: P_BEZEI, P_VSN_T (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L26-L32` · confidence 0.75 · `ZCOC0020#ZCOC0020F01#FORM#SET_DYNP#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs), [`P_VERSN`](#decl-zcoc0020top-101-p_versn) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM CONTROL_FCXX — `ZCOC0020F01` L44-L56 (13줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서 ZCOC0020을 열어 월별 실행예산 업로드 양식을 제공한다.* + +> 이 unit 의 조각 1개가 8/13줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 웹 리포지토리 문서(GC_SMW0)를 열어 월별 실행예산 업로드 엑셀 양식을 다운로드하게 한다. + +```abap + 47| L_UCOMM = SSCRFIELDS-UCOMM. + 48| CASE L_UCOMM. + 49| WHEN 'FC01'. + 50| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 51| EXPORTING + 52| P_DOCNAM = GC_SMW0 + 53| P_TITLE = '월별 실행예산 Upload 양식'(F02). + 54| ENDCASE. +``` + +- **EN**: On function key FC01 call Z_CO_OPEN_SMW0 to open the SMW0 document holding the monthly budget upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키 처리, 업로드 템플릿 +- English: SMW0, Upload Template, Function Key +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0020f01-45-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0020top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0020top-33-gc_smw0) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L47-L54` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0020` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0020/ZCOC0020#L49-L51` · confidence 0.8 · `ZCOC0020#ZCOC0020#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0020F01` L65-L72 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 67| IF P_FNAME IS INITIAL. + 68| MESSAGE S000 DISPLAY LIKE 'E' WITH + 69| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 70| LEAVE LIST-PROCESSING. + 71| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0020top-114-p_fname) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L67-L71` · confidence 0.9 · `ZCOC0020#ZCOC0020F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0020F01` L80-L105 (26줄) + +*관리회계영역 기본정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 오류·전기 상태 변수를 초기화하는 FORM이다.* + +> 이 unit 의 조각 1개가 8/26줄(31%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역(P_KOKRS)의 기본정보·명칭을 읽어 P_BEZEI에 넣고, GET_FCAT_LIKE_ITAB으로 GT_DATA 기준 메인 ALV 필드카탈로그(GT_MAIN_FIELDCAT)를 생성한다. + +```abap + 87| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 88| P_BEZEI = GV_KOKRS_BEZEI. + 89| + 90| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 91| " MAIN ALV용 딕셔너리 구조 취득. + 92| PERFORM GET_FCAT_LIKE_ITAB + 93| TABLES GT_MAIN_FIELDCAT + 94| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Load controlling area base data and description via SET_KOKRS_BASE and build the main ALV field catalog for GT_DATA via GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- SAP 객체: SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB, GT_MAIN_FIELDCAT, TKA01 +- 업무 키워드: 관리회계영역 기본정보, 필드카탈로그 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc0020top-40-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc0020top-31-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L87-L94` · confidence 0.8 · `ZCOC0020#ZCOC0020F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM READ_DATA — `ZCOC0020F01` L327-L342 (16줄) + +*엑셀 업로드 → BDC 형식 정리 → GT_DATA 이전·통화 변환 → 마스터·중복 검증까지 실행예산 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 13/16줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] UPLOAD_EXCEL_DATA로 엑셀을 읽고 GT_UPLOAD가 있으면 SET_BDC_FORM·TRANSFER_GT_DATA·CONVERT_KRW_DATA로 정리·이전한 후 VALIDATION_CHECK로 검증한다. + +```abap + 328| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 329| + 330| CHECK GT_UPLOAD[] IS NOT INITIAL. + 331| + 332| "2. 업로드가 제대로 되었다면. + 333| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 334| + 335| "3. 엑셀 데이터를 인터널 테이블로 이전 + 336| PERFORM TRANSFER_GT_DATA. + 337| PERFORM CONVERT_KRW_DATA. + 338| + 339| "4. Validation + 340| PERFORM VALIDATION_CHECK. +``` + +- **EN**: Orchestrate Excel upload, BDC formatting, transfer to GT_DATA, currency conversion and validation. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK +- 업무 키워드: 업로드 처리 흐름, 데이터 검증 +- English: Upload Flow, Validation +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0020top-114-p_fname), [`GT_UPLOAD`](#decl-zcoc0020top-45-gt_upload) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L328-L340` · confidence 0.8 · `ZCOC0020#ZCOC0020F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0020F01` L300-L318 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 303| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 304| + 305| IF L_EXISTS = ABAP_FALSE. + 306| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 307| LEAVE LIST-PROCESSING. + 308| EXIT. + 309| ENDIF. + 310| + 311| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 312| 'GS_UPLOAD' + 313| P_NAME + 314| 1 "S_COL-LOW + 315| 2 "S_ROW-LOW + 316| 256 "S_COL-HIGH + 317| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0020f01-301-l_exists) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L303-L317` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0020top-114-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0020F01` L367-L457 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 386| L_TABNAME = P_STRUCT_NM. + 387| + 388| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 389| USING L_TABNAME. + 390| + 391| SELECT DOMNAME LOWERCASE + 392| INTO TABLE LT_LOWERCASE + 393| FROM DD01L + 394| FOR ALL ENTRIES IN LT_FCAT + 395| WHERE DOMNAME = LT_FCAT-DOMNAME + 396| AND AS4LOCAL = 'A'. + 397| + 398| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0020f01-369-l_tabname), [`LT_FCAT`](#decl-zcoc0020f01-368-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0020f01-377-lt_lowercase) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L386-L398` · confidence 0.9 · `ZCOC0020#ZCOC0020F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 400| LOOP AT LT_FCAT ASSIGNING . + 401| CASE -DATATYPE. + 402| " 숫자 타입 + 403| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 404| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 405| L_TYPE = 'NUMB'. + 406| " 날짜 + 407| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 408| L_TYPE = 'DATS'. + 409| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 410| "CHECK BOX + 411| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 412| L_TYPE = 'CHCK'. + 413| ENDIF. + 414| WHEN OTHERS. + 415| ENDCASE. + 416| + 417| IF -CONVEXIT IS NOT INITIAL. + 418| L_CONV_ALPHA = 'X'. + 419| ENDIF. + 420| + 421| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 422| CONTINUE. + 423| ENDIF. + 424| + 425| LOOP AT GT_UPLOAD ASSIGNING . + 426| CONCATENATE '-' -FIELDNAME + 427| INTO L_FSNAME. + 428| ASSIGN (L_FSNAME) TO . + 429| + 430| IF SY-SUBRC EQ 0. + 431| CASE L_TYPE. + 432| WHEN 'NUMB'. + 433| PERFORM BDC_CURR USING . + 434| WHEN 'DATS'. + 435| PERFORM BDC_DATE USING . + 436| WHEN 'CHCK'. + 437| PERFORM BDC_CHECKBOX USING . + 438| WHEN OTHERS. + 439| ENDCASE. + 440| + 441| IF L_CONV_ALPHA = 'X'. + 442| PERFORM ZERO_I USING . + 443| ENDIF. + 444| + 445| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 446| BINARY SEARCH. + 447| + 448| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 449| TRANSLATE TO UPPER CASE. + 450| ENDIF. + 451| ENDIF. + 452| ENDLOOP. + 453| + 454| CLEAR : L_TYPE. + 455| CLEAR : L_CONV_ALPHA. + 456| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0020f01-368-lt_fcat), [``](#decl-zcoc0020f01-375--fs_fcat-), [`L_TYPE`](#decl-zcoc0020f01-371-l_type), [`L_CONV_ALPHA`](#decl-zcoc0020f01-372-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0020top-45-gt_upload), [``](#decl-zcoc0020f01-373--fs_upload-), [`L_FSNAME`](#decl-zcoc0020f01-370-l_fsname), [``](#decl-zcoc0020f01-374--fs-), [`LT_LOWERCASE`](#decl-zcoc0020f01-377-lt_lowercase) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L400-L456` · confidence 0.9 · `ZCOC0020#ZCOC0020F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0020F01` L135-L152 (18줄) + +*엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 이전하며 초기 상태·대문자 코스트센터·통화를 세팅하고 숫자 변환 오류를 처리한다.* + +> 이 unit 의 조각 1개가 16/18줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 행을 GT_DATA로 MOVE-CORRESPONDING하며 상태 INIT, 코스트센터 대문자화, 통화(P_TWAER)를 세팅하고, 숫자 변환 예외(CX_SY_CONVERSION_NO_NUMBER) 시 오류 메시지 후 종료한다. + +```abap + 136| TRY. + 137| LOOP AT GT_UPLOAD. + 138| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 139| GT_DATA-STATUS = GC_STATUS_INIT. + 140| TRANSLATE GT_DATA-KOSTL TO UPPER CASE. + 141| + 142| GT_DATA-TWAER = P_TWAER. + 143| APPEND GT_DATA. + 144| CLEAR : GT_DATA. + 145| + 146| ENDLOOP. + 147| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 148| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F20) + 149| DISPLAY LIKE 'E'. + 150| LEAVE LIST-PROCESSING. + 151| ENDTRY. +``` + +- **EN**: Transfer uploaded Excel rows into GT_DATA with initial status, upper-case cost center and currency; abort with a message on CX_SY_CONVERSION_NO_NUMBER. +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 대문자 변환, 숫자 변환 오류 +- English: Excel Upload, Exception Handling +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0020top-45-gt_upload), [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0020top-107-p_twaer) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L136-L151` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0020F01` L245-L266 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 251| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 252| WHERE DATATYPE = 'CURR'. + 253| + 254| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 255| INTO LV_FIELD. + 256| + 257| LOOP AT GT_DATA ASSIGNING . + 258| ASSIGN (LV_FIELD) TO . + 259| + 260| IF SY-SUBRC EQ 0. + 261| PERFORM CONV_DB_WAERS USING GV_WAERS. + 262| ENDIF. + 263| ENDLOOP. + 264| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0020top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0020f01-246-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0020f01-249-lv_field), [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [``](#decl-zcoc0020f01-248--fs_data-), [``](#decl-zcoc0020f01-247--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L251-L264` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0020F01` L162-L239 (78줄) + +*업로드된 실행예산 행의 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 부서/원가요소/기간(PERBL) 중복을 검증해 오류 행을 표시한다.* + +> 이 unit 의 조각 2개가 66/78줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 행별로 CSKS(관리회계영역·현재일자 유효)와 CSKA(계정과목표 GV_KTOPL)를 SELECT SINGLE로 조회해 코스트센터·원가요소가 없으면 오류 메시지·RED 상태·필드 강조·GV_UPLOAD_ERROR를 세팅한다. + +```abap + 171| LOOP AT GT_DATA. + 172| SELECT SINGLE * + 173| INTO LS_CSKS + 174| FROM CSKS + 175| WHERE KOKRS = P_KOKRS + 176| AND KOSTL = GT_DATA-KOSTL + 177| AND DATBI >= SY-DATUM + 178| AND DATAB <= SY-DATUM. + 179| + 180| IF SY-SUBRC NE 0. + 181| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다'(F04). + 182| GT_DATA-STATUS = GC_STATUS_RED. + 183| GV_UPLOAD_ERROR = 'X'. + 184| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 185| PERFORM ADD_DATA_MESSAGE USING 'KOSTL' + 186| GT_DATA-MESSAGE. + 187| ENDIF. + 188| * + 189| SELECT SINGLE * + 190| FROM CSKA + 191| INTO LS_CSKA + 192| WHERE KTOPL = GV_KTOPL + 193| AND KSTAR = GT_DATA-KSTAR. + 194| + 195| IF SY-SUBRC NE 0. + 196| GT_DATA-MESSAGE = '존재하지 않는 원가요소입니다'(F05). + 197| GT_DATA-STATUS = GC_STATUS_RED. + 198| GV_UPLOAD_ERROR = 'X'. + 199| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 200| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 201| GT_DATA-MESSAGE. + 202| ENDIF. + 203| + 204| MODIFY GT_DATA. + 205| CLEAR : GT_DATA. + 206| ENDLOOP. +``` + +- **EN**: For each row check cost center existence in CSKS (valid today) and cost element in CSKA for the chart of accounts; flag missing ones with message, red status and field highlight. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKA](/tables/CSKA.md) / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, CSKA +- 업무 키워드: 코스트센터 존재 검증, 원가요소 존재 검증, 마스터 검증, 오류 표시 +- English: Cost Center Master, Cost Element Master, Validation, Chart of Accounts +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`LS_CSKS`](#decl-zcoc0020f01-163-ls_csks), [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0020top-22-gv_upload_error), [`LS_CSKA`](#decl-zcoc0020f01-164-ls_cska), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L171-L206` · confidence 0.92 · `ZCOC0020#ZCOC0020F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] GT_DATA를 복사본 LT_DATA와 비교해 코스트센터·원가요소·기간(PERBL) 조합이 2건 이상이면 DUP_DATA='X'와 중복 오류 메시지·RED 상태로 표시한다. + +```abap + 208| SORT GT_DATA BY KOSTL KSTAR. + 209| + 210| LT_DATA[] = GT_DATA[]. + 211| + 212| LOOP AT GT_DATA. + 213| + 214| LOOP AT LT_DATA TRANSPORTING NO FIELDS + 215| WHERE KOSTL = GT_DATA-KOSTL + 216| AND KSTAR = GT_DATA-KSTAR + 217| AND PERBL = GT_DATA-PERBL. + 218| ADD 1 TO LV_CNT. + 219| ENDLOOP. + 220| + 221| IF LV_CNT > 1. + 222| GT_DATA-DUP_DATA = 'X'. + 223| + 224| GT_DATA-MESSAGE = '부서코드/원가요소 중복된 라인입니다.'(F06). + 225| GT_DATA-STATUS = GC_STATUS_RED. + 226| GV_UPLOAD_ERROR = 'X'. + 227| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 228| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 229| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 230| GT_DATA-MESSAGE. + 231| MODIFY GT_DATA. + 232| CLEAR : GT_DATA. + 233| ENDIF. + 234| + 235| CLEAR : LV_CNT. + 236| + 237| ENDLOOP. +``` + +- **EN**: Detect duplicate cost center / cost element / period combinations in GT_DATA and flag them as duplicate errors. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 중복 검증, 부서코드 중복, 원가요소 중복, 기간 중복 +- English: Duplicate Check, Validation, Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`LT_DATA`](#decl-zcoc0020f01-167-lt_data), [`LV_CNT`](#decl-zcoc0020f01-165-lv_cnt), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0020top-22-gv_upload_error) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L208-L237` · confidence 0.9 · `ZCOC0020#ZCOC0020F01#FORM#VALIDATION_CHECK#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC0020F01` L734-L746 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 739| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 740| WITH KEY FIELDNAME = P_FIELD. + 741| + 742| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 743| INTO LV_MESSAGE. + 744| + 745| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0020top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0020f01-737-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0020f01-736-lv_message), [`GT_DATA`](#decl-zcoc0020top-56-gt_data) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L739-L745` · confidence 0.8 · `ZCOC0020#ZCOC0020F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC0020` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data) +- 위치: `abap://ZCOC0020/ZCOC0020#L57-L67` · confidence 0.85 · `ZCOC0020#ZCOC0020#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0020/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0020/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0020/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0020/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0020/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0020#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0020/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_LOG_POP — `ZCOC0020F01` L465-L508 (44줄) + +*ALV에서 선택한 행이 오류 상태이면 해당 라인의 메시지 목록(MSG_LIST)을 팝업 그리드로 보여주는 FORM이다.* + +> 이 unit 의 조각 2개가 32/44줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행 번호로 GT_DATA를 읽어 상태가 빨간색(오류)인 경우에만 GT_DATA-MSG_LIST의 메시지를 코스트센터와 함께 팝업용 테이블 LT_POPUP에 적재한다. + +```abap + 475| CHECK P_ROW CO '0123456789 '. + 476| + 477| READ TABLE GT_DATA INDEX P_ROW. + 478| + 479| CHECK SY-SUBRC EQ 0. + 480| CHECK GT_DATA-STATUS = GC_STATUS_RED. + 481| + 482| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 483| USING 'GT_LOG_POP'. + 484| + 485| LOOP AT GT_DATA-MSG_LIST INTO LV_MESSAGE. + 486| LT_POPUP-KOSTL = GT_DATA-KOSTL. + 487| LT_POPUP-STATUS = GC_STATUS_RED. + 488| LT_POPUP-MESSAGE = LV_MESSAGE. + 489| APPEND LT_POPUP. + 490| CLEAR : LT_POPUP. + 491| ENDLOOP. +``` + +- **EN**: Read the selected GT_DATA row, and if its status is red, build popup table lines with cost center, status and each error message from MSG_LIST. +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: GT_DATA, GT_LOG_POP, GET_FCAT_LIKE_ITAB +- 업무 키워드: 오류 메시지 팝업, 코스트센터, 검증 오류 조회 +- English: Error Log, Popup, Cost Center +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`POPUP_FIELDCAT`](#decl-zcoc0020f01-466-popup_fieldcat), [`LV_MESSAGE`](#decl-zcoc0020f01-471-lv_message), [`GT_LOG_POP`](#decl-zcoc0020top-76-gt_log_pop), [`LT_POPUP`](#decl-zcoc0020f01-468-lt_popup) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L475-L491` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#SHOW_LOG_POP#C1` + +#### [output] 팝업 레이아웃을 설정하고 W_POPUP_GRID 객체를 생성해 SHOW_DATA로 오류 메시지 목록을 팝업 ALV로 표시한다. + +```abap + 493| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 494| + 495| CREATE OBJECT W_POPUP_GRID + 496| EXPORTING + 497| I_T_FIELDCATALOG = POPUP_FIELDCAT + 498| I_S_LAYOUT = LS_LAYO + 499| I_CAPTION = '' + 500| I_LEFT = 100 + 501| I_TOP = 150 + 502| I_HEIGHT = 400 + 503| I_WIDTH = 900. + 504| + 505| CALL METHOD W_POPUP_GRID->SHOW_DATA + 506| EXPORTING + 507| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Set popup ALV layout, instantiate the popup grid object and display the error message list via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, SET_ALV_LAYOUT_POP +- 업무 키워드: 팝업 ALV 표시, 오류 로그 +- English: ALV Grid, Popup, Error Log Display +- 정의부(복사 시 함께 필요): [`LS_LAYO`](#decl-zcoc0020f01-467-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0020top-83-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0020f01-466-popup_fieldcat), [`GT_LOG_POP`](#decl-zcoc0020top-76-gt_log_pop), [`LT_POPUP`](#decl-zcoc0020f01-468-lt_popup) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L493-L507` · confidence 0.8 · `ZCOC0020#ZCOC0020F01#FORM#SHOW_LOG_POP#C2` + +### FORM CONVERT_1000_UP — `ZCOC0020F01` L273-L294 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 라인의 해당 금액 필드를 동적으로 ASSIGN한 뒤 CONVERT_1000_U로 1000배(천원→원) 변환한다. + +```abap + 279| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 280| WHERE DATATYPE = 'CURR'. + 281| + 282| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 283| INTO LV_FIELD. + 284| + 285| LOOP AT GT_DATA ASSIGNING . + 286| ASSIGN (LV_FIELD) TO . + 287| + 288| IF SY-SUBRC EQ 0. + 289| PERFORM CONVERT_1000_U USING + 290| CHANGING . + 291| ENDIF. + 292| ENDLOOP. + 293| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog, dynamically assign the amount field in each GT_DATA row and multiply by 1000 (thousand KRW to KRW) via CONVERT_1000_U. +- 호출(파서): CONVERT_1000_U +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 천원 단위 환산, 금액 필드 동적 처리, 계획금액 +- English: Amount Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0020top-40-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0020f01-274-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0020f01-277-lv_field), [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [``](#decl-zcoc0020f01-276--fs_data-), [``](#decl-zcoc0020f01-275--fs_field-) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L279-L293` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#CONVERT_1000_UP#C1` + +### FORM EXECUTE_BAPI — `ZCOC0020F01` L517-L538 (22줄) + +*중복 전기를 막고 사용자 확인 팝업 후 MAKE_BAPI_DATA로 예산 전기를 시작하는 FORM이다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 이미 전기된 경우(GV_ALREADY_POST) 오류 메시지 후 중단하고, POPUP_TO_CONFIRM_02로 '예산을 입력하시겠습니까?' 확인(J)을 받은 경우에만 전기 플래그를 세우고 MAKE_BAPI_DATA를 수행한다. + +```abap + 522| IF GV_ALREADY_POST = 'X'. + 523| MESSAGE S000 DISPLAY LIKE 'E' WITH + 524| '이미 처리하였습니다'(F12). + 525| EXIT. + 526| ENDIF. + 527| + 528| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 529| '예산을 입력하시겠습니까?'(F07) ' ' + 530| CHANGING L_ANSWER. + 531| IF L_ANSWER <> 'J'. + 532| EXIT. + 533| ENDIF. + 534| + 535| GV_ALREADY_POST = 'X'. + 536| + 537| PERFORM MAKE_BAPI_DATA. +``` + +- **EN**: Prevent duplicate posting, ask user confirmation via POPUP_TO_CONFIRM, then set already-posted flag and run MAKE_BAPI_DATA to post the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_02, MAKE_BAPI_DATA +- SAP 객체: POPUP_TO_CONFIRM_02, POPUP_TO_CONFIRM, MAKE_BAPI_DATA +- 업무 키워드: 중복 전기 방지, 확인 팝업, 예산 전기 실행 +- English: Duplicate Check, Confirmation Popup, Plan Posting +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0020top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0020f01-518-l_answer) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L522-L537` · confidence 0.9 · `ZCOC0020#ZCOC0020F01#FORM#EXECUTE_BAPI#C1` + +### FORM MAKE_BAPI_DATA — `ZCOC0020F01` L547-L659 (113줄) + +*GT_DATA 각 행(코스트센터·원가요소·월)을 BAPI_COSTACTPLN_POSTPRIMCOST로 실행예산 버전에 1차 원가 계획 전기하고 성공/실패 상태와 메시지를 행에 반영한다.* + +> 이 unit 의 조각 2개가 79/113줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 행별로 진행률 표시 후 FILL_TABLES로 기간(PERBL)·금액(WOGXXX) BAPI 데이터를 구성해 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA=P_DELTA)로 전기하고, RETURN 없으면 COMMIT, 있으면 ROLLBACK 후 BAPI_FAIL='X'와 RETURN 메시지를 MSG_LIST·MESSAGE에 기록한다. + +```abap + 576| LOOP AT GT_DATA. + 577| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 578| + 579| LV_CURRENT = SY-TABIX. + 580| PERFORM BAR_MSG_PER USING '월별 실행예산을 반영중입니다...'(F21) + 581| LV_CURRENT LV_TOTAL. + 582| + 583| LV_PERIOD = GT_DATA-PERBL. + 584| LV_FIELD = 'GT_DATA-WOGXXX'. + 585| + 586| * CONCATENATE 'GT_DATA-WOG' LV_NC INTO LV_FIELD. + 587| + 588| PERFORM FILL_TABLES + 589| TABLES LT_INDEXSTRUCTURE + 590| LT_COOBJECT + 591| LT_TOTVALUE + 592| USING LV_PERIOD LV_FIELD + 593| CHANGING LS_HEADERINFO. + 594| + 595| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 596| EXPORTING + 597| HEADERINFO = LS_HEADERINFO + 598| DELTA = LV_DELTA + 599| TABLES + 600| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 601| COOBJECT = LT_COOBJECT + 602| PERVALUE = LT_PERVALUE + 603| TOTVALUE = LT_TOTVALUE + 604| CONTRL = LT_CONTRL + 605| RETURN = LT_RETURN. + 606| + 607| IF LT_RETURN[] IS INITIAL. + 608| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 609| EXPORTING + 610| WAIT = 'X'. + 611| ELSE. + 612| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 613| + 614| GT_DATA-BAPI_FAIL = 'X'. + 615| LV_ERROR_FIELD = 'WOGXXX'. + 616| + 617| LOOP AT LT_RETURN INTO LS_RETURN. + 618| LV_MESSAGE = LS_RETURN-MESSAGE. + 619| PERFORM ADD_DATA_MESSAGE USING LV_ERROR_FIELD + 620| LS_RETURN-MESSAGE. + 621| ENDLOOP. + 622| + 623| " 마지막 메세지만 저장. + 624| GT_DATA-MESSAGE = LV_MESSAGE. + 625| ENDIF. + 626| + 627| CLEAR : LT_INDEXSTRUCTURE, LT_INDEXSTRUCTURE[]. + 628| CLEAR : LT_COOBJECT, LT_COOBJECT[]. + 629| CLEAR : LT_TOTVALUE, LT_TOTVALUE[]. + 630| CLEAR : LS_HEADERINFO. + 631| CLEAR : LT_RETURN, LT_RETURN[]. + 632| + 633| MODIFY GT_DATA. + 634| CLEAR : GT_DATA. + 635| + 636| ENDLOOP. +``` + +- **EN**: For each row build BAPI data via FILL_TABLES and post primary cost planning with BAPI_COSTACTPLN_POSTPRIMCOST (DELTA=P_DELTA); commit on success, otherwise rollback and store return messages. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BAR_MSG_PER, FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, ADD_DATA_MESSAGE +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2, COSP +- 업무 키워드: 실행예산 전기, 1차 원가 계획, 월별 예산, 커밋, 롤백, 오류 메시지 +- English: Primary Cost Planning, BAPI Posting, Commit, Rollback, Delta +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`LV_CURRENT`](#decl-zcoc0020f01-562-lv_current), [`LV_TOTAL`](#decl-zcoc0020f01-561-lv_total), [`LV_PERIOD`](#decl-zcoc0020f01-559-lv_period), [`LV_FIELD`](#decl-zcoc0020f01-556-lv_field), [`LT_INDEXSTRUCTURE`](#decl-zcoc0020f01-549-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0020f01-550-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0020f01-552-lt_totvalue), [`LS_HEADERINFO`](#decl-zcoc0020f01-548-ls_headerinfo), [`LV_DELTA`](#decl-zcoc0020f01-558-lv_delta), [`LT_PERVALUE`](#decl-zcoc0020f01-551-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0020f01-553-lt_contrl) 외 4건 +- 위치: `abap://ZCOC0020/ZCOC0020F01#L576-L636` · confidence 0.92 · `ZCOC0020#ZCOC0020F01#FORM#MAKE_BAPI_DATA#C1` + +#### [output] 전기 결과에 따라 실패(BAPI_FAIL)가 아니면 GREEN 상태와 성공 메시지(GP 510)를, 실패면 RED 상태를 각 행에 설정하고 완료 메시지를 표시한다. + +```abap + 638| LOOP AT GT_DATA. + 639| IF GT_DATA-BAPI_FAIL NE 'X'. + 640| GT_DATA-STATUS = GC_STATUS_GREEN. + 641| + 642| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 643| INTO GT_DATA-MESSAGE + 644| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 645| + 646| * GT_DATA-MESSAGE = '정상적으로 반영되었습니다.'(F10). + 647| ELSE. + 648| GT_DATA-STATUS = GC_STATUS_RED. + 649| ENDIF. + 650| + 651| MODIFY GT_DATA. + 652| CLEAR : GT_DATA. + 653| ENDLOOP. + 654| + 655| MESSAGE S000 WITH '처리가 완료되었습니다.'(F09). +``` + +- **EN**: Set green status with message GP510 for posted rows and red status for failed rows, then show completion message. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 전기 결과 상태, 성공 메시지, 오류 상태 +- English: Status Icon, Posting Result +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L638-L655` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#MAKE_BAPI_DATA#C2` + +### FORM FILL_TABLES — `ZCOC0020F01` L670-L725 (56줄) + +*현재 GT_DATA 행의 코스트센터·원가요소·월 금액으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(BAPIPLNHDR)와 인덱스·CO오브젝트·총액 테이블을 구성한다.* + +> 이 unit 의 조각 2개가 35/56줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 관리회계영역·회계연도·기간(PERBL)·실행예산 버전(P_VERSN)·헤더텍스트·계획통화유형으로 BAPIPLNHDR 헤더를 채운다. + +```abap + 688| " 1. 헤더 작성 + 689| ES_HEADERINFO-CO_AREA = P_KOKRS. + 690| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 691| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 692| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 693| ES_HEADERINFO-VERSION = P_VERSN. + 694| ES_HEADERINFO-DOC_HDR_TX = '월별 실행 예산'(F08). + 695| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill the BAPIPLNHDR header with controlling area, fiscal year, period, plan version P_VERSN and plan currency type. +- SAP 객체: BAPIPLNHDR +- 업무 키워드: 계획 헤더, 실행예산 버전, 기간, 관리회계영역 +- English: Plan Header, Version, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0020top-92-p_kokrs), [`P_GJAHR`](#decl-zcoc0020top-110-p_gjahr), [`P_VERSN`](#decl-zcoc0020top-101-p_versn), [`GC_PLAN_CURR`](#decl-zcoc0020top-34-gc_plan_curr) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L688-L695` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#FILL_TABLES#C1` + +#### [calculation] 동적 필드(GT_DATA-WOGXXX)의 월 금액을 CONVERT_1000_U로 천원 단위 환산하고 CONV_VIEW_WAERS로 통화 표시 형식 변환해 코스트센터(BAPIPCPOBJ)·원가요소 고정값(BAPIPCPTOT) 라인 1건을 구성한다. + +```abap + 698| ASSIGN (P_FIELD) TO . + 699| + 700| CHECK SY-SUBRC EQ 0. + 701| + 702| ET_INDEXSTRUCTURE-OBJECT_INDEX = 1. + 703| ET_INDEXSTRUCTURE-VALUE_INDEX = 1. + 704| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 705| + 706| ET_COOBJECT-OBJECT_INDEX = 1. + 707| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 708| APPEND ET_COOBJECT TO ET_COOBJECT. + 709| + 710| ET_TOTVALUE-VALUE_INDEX = 1. + 711| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR. + 712| + 713| LV_VALUE = . + 714| + 715| PERFORM CONVERT_1000_U USING LV_VALUE + 716| CHANGING LV_VALUE. + 717| + 718| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 719| CHANGING LV_C_VALUE. + 720| + 721| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 722| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 723| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 724| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Read the monthly amount dynamically, scale by 1000 and convert currency format, then append one cost center object and cost element fixed-value line for the BAPI. +- 호출(파서): CONVERT_1000_U, CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT +- 업무 키워드: 월별 예산 금액, 천원 단위 환산, 코스트센터, 원가요소, 고정값 +- English: Cost Center, Cost Element, Fixed Value, Amount Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc0020f01-678--fs_value-), [`GT_DATA`](#decl-zcoc0020top-56-gt_data), [`LV_VALUE`](#decl-zcoc0020f01-680-lv_value), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0020f01-681-lv_c_value), [`P_TWAER`](#decl-zcoc0020top-107-p_twaer) +- 위치: `abap://ZCOC0020/ZCOC0020F01#L698-L724` · confidence 0.85 · `ZCOC0020#ZCOC0020F01#FORM#FILL_TABLES#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0020I01` L6-L30 (25줄) + +*화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &POST 전기)을 분기 처리하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드에 따라 BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 화면을 종료하며, &POST 시 EXECUTE_BAPI를 수행해 사업계획 예산을 BAPI로 전기한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&POST'. + 24| PERFORM EXECUTE_BAPI. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 100 function codes: free ALV containers and leave on BACK/CANC/EXIT, call EXECUTE_BAPI to post the plan budget on &POST. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: EXECUTE_BAPI, CLEAR_CONTAINER_PROC +- 업무 키워드: 화면 명령 분기, 예산 전기, 화면 종료, ALV 컨테이너 해제 +- English: User Command, PAI, Function Code, Plan Posting +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0020top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0020c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0020/ZCOC0020I01#L9-L28` · confidence 0.9 · `ZCOC0020#ZCOC0020I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (336건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0020C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0020c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0020TOP` (32건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0020top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0020top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0020top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0020top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0020top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0020top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0020top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0020top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0020top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0020top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0020top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0020top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0020top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0020top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc0020top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc0020top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L33-L33 {#decl-zcoc0020top-33-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0020'. +``` + +#### GC_PLAN_CURR — constants · L34-L34 {#decl-zcoc0020top-34-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L40-L40 {#decl-zcoc0020top-40-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L45-L51 {#decl-zcoc0020top-45-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL(10) TYPE C, " 코스트센터 + KSTAR(10) TYPE C, " 원가요소 + PERBL(3) TYPE C, + WOGXXX(20) TYPE C, + +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L54-L54 {#decl-zcoc0020top-54-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L56-L72 {#decl-zcoc0020top-56-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KSTAR LIKE CSKA-KSTAR, + PERBL LIKE COSP-PERBL, + TWAER LIKE COSP-TWAER, + WOGXXX LIKE COSP-WOG001, + + DUP_DATA TYPE C, + BAPI_FAIL TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L74-L74 {#decl-zcoc0020top-74-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L76-L80 {#decl-zcoc0020top-76-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L83-L83 {#decl-zcoc0020top-83-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### P_KOKRS — parameter · L92-L93 {#decl-zcoc0020top-92-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_VERSN — parameter · L101-L102 {#decl-zcoc0020top-101-p_versn} + +```abap +PARAMETER : P_VERSN LIKE COSP-VERSN DEFAULT 'B10' OBLIGATORY + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L107-L108 {#decl-zcoc0020top-107-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER OBLIGATORY DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L110-L110 {#decl-zcoc0020top-110-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY. +``` + +#### P_FNAME — parameter · L114-L114 {#decl-zcoc0020top-114-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME MEMORY ID MD20. +``` + +#### P_INS — parameter · L125-L125 {#decl-zcoc0020top-125-p_ins} + +```abap +PARAMETER : P_INS TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X'. +``` + +#### P_DELTA — parameter · L126-L126 {#decl-zcoc0020top-126-p_delta} + +```abap +PARAMETER : P_DELTA TYPE C RADIOBUTTON GROUP RG1. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0020F01` (48건) + +#### L_UCOMM — data · unit 로컬 · L45-L45 {#decl-zcoc0020f01-45-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_CSKS — data · unit 로컬 · L163-L163 {#decl-zcoc0020f01-163-ls_csks} + +```abap + DATA : LS_CSKS LIKE CSKS. +``` + +#### LS_CSKA — data · unit 로컬 · L164-L164 {#decl-zcoc0020f01-164-ls_cska} + +```abap + DATA : LS_CSKA LIKE CSKA. +``` + +#### LV_CNT — data · unit 로컬 · L165-L165 {#decl-zcoc0020f01-165-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### LT_DATA — data · unit 로컬 · L167-L167 {#decl-zcoc0020f01-167-lt_data} + +```abap + DATA : LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L246-L246 {#decl-zcoc0020f01-246-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L247-L247 {#decl-zcoc0020f01-247--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L248-L248 {#decl-zcoc0020f01-248--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L249-L249 {#decl-zcoc0020f01-249-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L274-L274 {#decl-zcoc0020f01-274-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L275-L275 {#decl-zcoc0020f01-275--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L276-L276 {#decl-zcoc0020f01-276--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L277-L277 {#decl-zcoc0020f01-277-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### L_EXISTS — data · unit 로컬 · L301-L301 {#decl-zcoc0020f01-301-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LT_FCAT — data · unit 로컬 · L368-L368 {#decl-zcoc0020f01-368-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L369-L369 {#decl-zcoc0020f01-369-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L370-L370 {#decl-zcoc0020f01-370-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L371-L371 {#decl-zcoc0020f01-371-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L372-L372 {#decl-zcoc0020f01-372-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L373-L373 {#decl-zcoc0020f01-373--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L374-L374 {#decl-zcoc0020f01-374--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L375-L375 {#decl-zcoc0020f01-375--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L377-L380 {#decl-zcoc0020f01-377-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L466-L466 {#decl-zcoc0020f01-466-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L467-L467 {#decl-zcoc0020f01-467-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L468-L468 {#decl-zcoc0020f01-468-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L471-L471 {#decl-zcoc0020f01-471-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### L_ANSWER — data · unit 로컬 · L518-L518 {#decl-zcoc0020f01-518-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L548-L548 {#decl-zcoc0020f01-548-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L549-L549 {#decl-zcoc0020f01-549-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L550-L550 {#decl-zcoc0020f01-550-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L551-L551 {#decl-zcoc0020f01-551-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L552-L552 {#decl-zcoc0020f01-552-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L553-L553 {#decl-zcoc0020f01-553-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L554-L554 {#decl-zcoc0020f01-554-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L555-L555 {#decl-zcoc0020f01-555-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_FIELD — data · unit 로컬 · L556-L556 {#decl-zcoc0020f01-556-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_ERROR_FIELD — data · unit 로컬 · L557-L557 {#decl-zcoc0020f01-557-lv_error_field} + +```abap + DATA : LV_ERROR_FIELD(30) TYPE C. +``` + +#### LV_DELTA — data · unit 로컬 · L558-L558 {#decl-zcoc0020f01-558-lv_delta} + +```abap + DATA : LV_DELTA TYPE CO_DELTA. +``` + +#### LV_PERIOD — data · unit 로컬 · L559-L559 {#decl-zcoc0020f01-559-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_MESSAGE — data · unit 로컬 · L560-L560 {#decl-zcoc0020f01-560-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_TOTAL — data · unit 로컬 · L561-L561 {#decl-zcoc0020f01-561-lv_total} + +```abap + DATA : LV_TOTAL TYPE I. +``` + +#### LV_CURRENT — data · unit 로컬 · L562-L562 {#decl-zcoc0020f01-562-lv_current} + +```abap + DATA : LV_CURRENT TYPE I. +``` + +#### — field-symbol · unit 로컬 · L678-L678 {#decl-zcoc0020f01-678--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L680-L680 {#decl-zcoc0020f01-680-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L681-L681 {#decl-zcoc0020f01-681-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_MESSAGE — data · unit 로컬 · L736-L736 {#decl-zcoc0020f01-736-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L737-L737 {#decl-zcoc0020f01-737-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0020 L26-32 | 0 | INITIALIZATION 이벤트에서 선택화면 기본값 설정(SET_DYNP)과 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0020 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능키(양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0020 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0020 L42-47 | 0 | 업로드 파일 파라미터 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC0020 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0020 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0020C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0020C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0020C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0020C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0020C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0020C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0020C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0020C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0020C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0020C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0020C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0020C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0020C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0020C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0020C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0020C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC0020C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC0020C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0020C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0020C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0020C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC0020C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0020C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0020C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0020C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0020F01 L6-17 | 0 | 선택화면에서 GV_BUKRS_O가 비어 있으면 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC0020F01 L24-34 | 1 | 초기화 시 관리회계영역 명칭(SET_KOKRS_BASE)과 실행예산 버전 텍스트(GET_VERSN_TEXT)를 조회해 선택화면에 표시하고 회계연도 기본값을 당해 연도로 설정한다. | +| CONTROL_FCXX | FORM | ZCOC0020F01 L44-56 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서 ZCOC0020을 열어 월별 실행예산 업로드 양식을 제공한다. | +| CHECK_INPUT | FORM | ZCOC0020F01 L65-72 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0020F01 L80-105 | 1 | 관리회계영역 기본정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 오류·전기 상태 변수를 초기화하는 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0020F01 L111-114 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA를 호출해 엑셀 업로드·검증 처리를 시작하는 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0020F01 L123-126 | 0 | 선택화면 기능키 01에 엑셀 양식 다운로드 버튼(아이콘·텍스트)을 설정한다. | +| TRANSFER_GT_DATA | FORM | ZCOC0020F01 L135-152 | 1 | 엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 이전하며 초기 상태·대문자 코스트센터·통화를 세팅하고 숫자 변환 오류를 처리한다. | +| VALIDATION_CHECK | FORM | ZCOC0020F01 L162-239 | 2 | 업로드된 실행예산 행의 코스트센터(CSKS)·원가요소(CSKA) 존재 여부와 부서/원가요소/기간(PERBL) 중복을 검증해 오류 행을 표시한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0020F01 L245-266 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| CONVERT_1000_UP | FORM | ZCOC0020F01 L273-294 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0020F01 L300-318 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC0020F01 L327-342 | 1 | 엑셀 업로드 → BDC 형식 정리 → GT_DATA 이전·통화 변환 → 마스터·중복 검증까지 실행예산 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0020F01 L350-358 | 0 | 오류가 발생한 필드를 ALV 셀 색상(COL=6, 빨강)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 보조 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0020F01 L367-457 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| SHOW_LOG_POP | FORM | ZCOC0020F01 L465-508 | 2 | ALV에서 선택한 행이 오류 상태이면 해당 라인의 메시지 목록(MSG_LIST)을 팝업 그리드로 보여주는 FORM이다. | +| EXECUTE_BAPI | FORM | ZCOC0020F01 L517-538 | 1 | 중복 전기를 막고 사용자 확인 팝업 후 MAKE_BAPI_DATA로 예산 전기를 시작하는 FORM이다. | +| MAKE_BAPI_DATA | FORM | ZCOC0020F01 L547-659 | 2 | GT_DATA 각 행(코스트센터·원가요소·월)을 BAPI_COSTACTPLN_POSTPRIMCOST로 실행예산 버전에 1차 원가 계획 전기하고 성공/실패 상태와 메시지를 행에 반영한다. | +| FILL_TABLES | FORM | ZCOC0020F01 L670-725 | 2 | 현재 GT_DATA 행의 코스트센터·원가요소·월 금액으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(BAPIPLNHDR)와 인덱스·CO오브젝트·총액 테이블을 구성한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0020F01 L734-746 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0020I01 L6-30 | 1 | 화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &POST 전기)을 분기 처리하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0020O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0020O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0020O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0020O01 L136-156 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0020O01 L164-173 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0020O01 L181-203 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0020O01 L212-240 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0020O01 L313-340 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0020O01 L350-407 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0020O01 L415-442 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0030.md b/wiki/programs/ZCOC0030.md new file mode 100644 index 0000000..a8dfb24 --- /dev/null +++ b/wiki/programs/ZCOC0030.md @@ -0,0 +1,5220 @@ +--- +type: abap-program +title: "ZCOC0030 — 부서 예산 이월" +description: "코스트센터(부서)별·원가요소별로 특정 월(P_FROM)의 가용예산(예산-실적 잔액)을 이월 대상 월(P_TO)로 옮기는 예산 이월 프로그램이다. 코스트센터 그룹/원가요소 그룹(K_GROUP_SELECT, SETLEAF) 또는 개별 범위로 대상을 결정하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 가용예산(ZCOS0030)을 조회한 뒤, 이월 버전 B20에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 From 월에는 음수(-), To 월에는 양수(+) 계획값을 전기하고 To 월 전기 실패 시 From 월을 원복한다. 처리 결과는 예산조정 이력 테이블 ZCOT0020(BGTYPE '50' 이월)에 로그로 남기며, 실행 중 ENQUEUE_EZ_ZCOT0020으로 잠금을 건다." +resource: "abap://ZCOC0030" +tags: ["예산관리", "예산 이월", "가용예산", "코스트센터 계획", "예산조정 이력", "CO-OM-CCA", "기능코드 분기", "화면 종료", "잠금 해제", "예산 이월 전기", "동시성 제어", "순번 채번", "조정일자", "예산 이월 로그", "송신 코스트센터", "수신 코스트센터", "이월 금액", "로그 저장", "처리 결과 반영", "상태 아이콘"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:10+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKT", "CSKU", "DD07T", "ONRKS", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0020"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DEQUEUE_EZ_ZCOT0020", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "ENQUEUE_EZ_ZCOT0020", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_GROUP_SELECT", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST"] +x-code-hash: "0c1caec7102bc5c8b6327cea02b2d429e101d4079da8ffa36967dda5ea6beea5" +x-unit-count: 150 +x-chunk-count: 77 +x-declaration-count: 218 +--- + +## 업무 목적 + +코스트센터(부서)별·원가요소별로 특정 월(P_FROM)의 가용예산(예산-실적 잔액)을 이월 대상 월(P_TO)로 옮기는 예산 이월 프로그램이다. 코스트센터 그룹/원가요소 그룹(K_GROUP_SELECT, SETLEAF) 또는 개별 범위로 대상을 결정하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 가용예산(ZCOS0030)을 조회한 뒤, 이월 버전 B20에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 From 월에는 음수(-), To 월에는 양수(+) 계획값을 전기하고 To 월 전기 실패 시 From 월을 원복한다. 처리 결과는 예산조정 이력 테이블 ZCOT0020(BGTYPE '50' 이월)에 로그로 남기며, 실행 중 ENQUEUE_EZ_ZCOT0020으로 잠금을 건다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 조회하고 회계연도·From 월(전월)·To 월(당월) 기본값을 설정한다 (SET_DYNP) +2. 코스트센터/원가요소 그룹 F4(K_GROUP_SELECT)와 원가요소 F4(CSKB/CSKU 50000000~69999999)를 제공한다 (F4_GRP, F4_KSTAR) +3. 예산조정 이력 테이블 ZCOT0020에 잠금을 설정한다 (ENQUEUE_ZCOT0020) +4. 그룹과 개별값 중 하나만 입력되었는지, To 월이 From 월보다 큰지 검증한다 (CHECK_INPUT) +5. 코스트센터 그룹(SETLEAF 0101)/범위로 ONRKS·CSKT에서 대상 코스트센터 OBJNR을, 원가요소 그룹(0102)/범위로 CSKB·CSKU에서 대상 원가요소를 결정하고 BAPI 헤더 텍스트를 만든다 (INITIALIZE_DATA, DETERMINE_KOSTL, DETERMINE_KSTAR) +6. Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 From 월의 예산/실적/가용예산(ZCOS0030)을 조회하고 GT_DATA로 옮기며 가용액 0인 라인은 노란색(비대상)으로 표시한다 (PROCESS_DATA, GET_AVAILABLE_BG_DATA, TRANSFER_GT_DATA) +7. 화면 100 ALV Grid에 이월 대상 목록을 표시하고 이월(&POST) 확인 팝업을 띄운다 (DISPLAY_ALV_LIST, EXECUTE_BAPI) +8. From 월에 음수(P), To 월에 양수(C)로 BAPI_COSTACTPLN_POSTPRIMCOST를 전기하고 C 실패 시 From 월을 원복(R)한 뒤 결과 상태를 반영하고 ZCOT0020에 이력을 저장한다 (BAPI_CARRY_FWD_POST, FILL_TABLES, SET_RESULT, INSERT_LOG) + +## 핵심 내부테이블 + +- `GT_KOSTL_OBJNR` — 대상 코스트센터·OBJNR·명칭 (ONRKS, CSKT) (채움: DETERMINE_KOSTL / 소비: GET_AVAILABLE_BG_DATA) +- `GT_KSTAR` — 대상 원가요소·명칭 (CSKB, CSKU) (채움: DETERMINE_KSTAR / 소비: GET_AVAILABLE_BG_DATA) +- `GT_ZCOS0030` — Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과: 코스트센터/원가요소별 예산·실적·가용예산 (채움: GET_AVAILABLE_BG_DATA / 소비: TRANSFER_GT_DATA) +- `GT_DATA` — 이월 대상 메인 ALV 테이블 (ZCOS0030 + FROM_BG, TO_BG, BAPI_TARGET, STATUS, MESSAGE) (채움: TRANSFER_GT_DATA, SET_RESULT / 소비: DISPLAY_ALV_LIST, FILL_TABLES, SET_RESULT, INSERT_LOG) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKT, CSKU, DD07T, ONRKS, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0020 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DEQUEUE_EZ_ZCOT0020, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, ENQUEUE_EZ_ZCOT0020, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_GROUP_SELECT, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT + +## 로직 조각 (77건 / unit 65개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_DYNP — `ZCOC0030F01` L22-L55 (34줄) + +*초기화 시 관리회계영역 텍스트를 설정하고 회계연도·From 월(전월)·To 월(당월) 기본값을 계산하며 DEV 시스템에서는 테스트용 범위를 채운다.* + +> 이 unit 의 조각 1개가 10/34줄(29%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 현재 일자로 회계연도 P_GJAHR를 설정하고 From 월 P_FROM은 전월(1월이면 12월), To 월 P_TO는 당월로 기본값을 계산한다. + +```abap + 30| P_GJAHR = SY-DATUM+0(4). + 31| IF SY-DATUM+4(2) NE '01'. + 32| P_FROM = SY-DATUM+4(2) - 1. + 33| ELSE. + 34| P_FROM = '12'. + 35| ENDIF. + 36| + 37| CLEAR : GV_LOCK. + 38| + 39| P_TO = SY-DATUM+4(2). +``` + +- **EN**: Derive default fiscal year from the system date, set source period P_FROM to previous month (12 if January) and target period P_TO to current month. +- 업무 키워드: 기본값 설정, 회계연도, 이월 기준월, 이월 대상월 +- English: Fiscal Year, Period, Default Value, Carry Forward +- 정의부(복사 시 함께 필요): [`P_GJAHR`](#decl-zcoc0030top-114-p_gjahr), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`GV_LOCK`](#decl-zcoc0030top-21-gv_lock), [`P_TO`](#decl-zcoc0030top-117-p_to) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L30-L39` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#SET_DYNP#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM F4_GRP — `ZCOC0030F01` L491-L513 (23줄) + +*K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 12/23줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터 그룹/0102 원가요소 그룹)·필드명·관리회계영역·계정과목표 GV_KTOPL을 넘겨 K_GROUP_SELECT로 그룹 선택 대화상자를 띄우고 선택된 세트명을 선택화면 파라미터에 반환한다. + +```abap + 500| CALL FUNCTION 'K_GROUP_SELECT' + 501| EXPORTING + 502| CLASS = LV_CLASS + 503| FIELD_NAME = LV_FIELDNAME + 504| KOKRS = P_KOKRS + 505| KTOPL = GV_KTOPL + 506| IMPORTING + 507| SET_NAME = P_DYN_FIELD + 508| SET_TITLE = KMAS_D-SETTXT_KST + 509| EXCEPTIONS + 510| NO_SET_PICKED = 1 + 511| OTHERS = 2. +``` + +- **EN**: Call K_GROUP_SELECT with set class (0101 cost center group / 0102 cost element group), field name, controlling area and chart of accounts to let the user pick a group and return the set name. +- 호출(파서): K_GROUP_SELECT +- SAP 객체: K_GROUP_SELECT, RGSBS +- 업무 키워드: 그룹 선택, 코스트센터 그룹, 원가요소 그룹, 검색도움 +- English: Cost Center Group, Cost Element Group, Set, F4 Help, Chart of Accounts +- 정의부(복사 시 함께 필요): [`LV_CLASS`](#decl-zcoc0030f01-494-lv_class), [`LV_FIELDNAME`](#decl-zcoc0030f01-493-lv_fieldname), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`KMAS_D`](#decl-zcoc0030top-4-kmas_d) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L500-L511` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#F4_GRP#C1` + +### FORM F4_KSTAR — `ZCOC0030F01` L521-L544 (24줄) + +*관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다.* + +> 이 unit 의 조각 1개가 13/24줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKB와 CSKU를 조인해 P_KOKRS의 원가요소 50000000~69999999 중 현재 유효한 원가요소와 명칭을 조회하고 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 필드에 F4 목록을 띄운다. + +```abap + 530| SELECT A~KSTAR B~KTEXT + 531| FROM CSKB AS A INNER JOIN CSKU AS B + 532| ON A~KSTAR = B~KSTAR + 533| INTO CORRESPONDING FIELDS OF TABLE LT_CSKA + 534| WHERE A~KOKRS = P_KOKRS + 535| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 536| AND SPRAS = SY-LANGU + 537| AND A~DATBI >= SY-DATUM + 538| AND A~DATAB <= SY-DATUM. + 539| + 540| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 541| TABLES LT_CSKA LT_FIELDTAB LT_RETURN + 542| USING 'KSTAR' P_FIELD. +``` + +- **EN**: Select valid cost elements in range 50000000-69999999 with texts from CSKB joined CSKU for the controlling area and present them as an F4 value list via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: CSKB, CSKU, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 원가요소 검색도움, 원가요소 명칭, 유효기간, F4 +- English: Cost Element, Search Help, F4 Help, Controlling Area +- 정의부(복사 시 함께 필요): [`LT_CSKA`](#decl-zcoc0030f01-522-lt_cska), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`LT_FIELDTAB`](#decl-zcoc0030f01-528-lt_fieldtab), [`LT_RETURN`](#decl-zcoc0030f01-527-lt_return) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L530-L542` · confidence 0.85 · `ZCOC0030#ZCOC0030F01#FORM#F4_KSTAR#C1` + +### EVENT START-OF-SELECTION — `ZCOC0030` L56-L66 (11줄) + +*ZCOT0020 잠금 설정, 입력 검증, 초기화(대상 코스트센터·원가요소 결정), 가용예산 조회를 순서대로 수행하는 메인 이벤트이다.* + +> 이 unit 의 조각 1개가 5/11줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] ENQUEUE_ZCOT0020으로 잠금을 걸고 CHECK_INPUT으로 입력을 검증한 뒤 INITIALIZE_DATA(대상 결정)와 PROCESS_DATA(가용예산 조회·GT_DATA 구성)를 순차 실행한다. + +```abap + 58| PERFORM ENQUEUE_ZCOT0020 CHANGING GV_LOCK. + 59| + 60| PERFORM CHECK_INPUT. + 61| PERFORM INITIALIZE_DATA. + 62| PERFORM PROCESS_DATA. +``` + +- **EN**: Main flow: lock ZCOT0020, validate selection input, initialize target cost centers/cost elements, then read available budget data into GT_DATA. +- 호출(파서): ENQUEUE_ZCOT0020, CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: ZCOT0020 +- 업무 키워드: 메인 흐름, 잠금, 입력 검증, 가용예산 조회 +- English: Main Processing, Enqueue, Validation, Available Budget +- 정의부(복사 시 함께 필요): [`GV_LOCK`](#decl-zcoc0030top-21-gv_lock) +- 위치: `abap://ZCOC0030/ZCOC0030#L58-L62` · confidence 0.85 · `ZCOC0030#ZCOC0030#EVENT#START-OF-SELECTION#C1` + +### FORM ENQUEUE_ZCOT0020 — `ZCOC0030F01` L787-L806 (20줄) + +*예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다.* + +> 이 unit 의 조각 1개가 18/20줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] ENQUEUE_EZ_ZCOT0020으로 ZCOT0020 테이블 전체 잠금을 요청하고, 타 사용자 잠금(FOREIGN_LOCK) 등 실패 시 시스템 메시지를 I 타입으로 보여주고 P_ERR='X'를 반환한다. + +```abap + 788| CALL FUNCTION 'ENQUEUE_EZ_ZCOT0020' + 789| EXPORTING + 790| MODE_ZCOT0020 = 'X' + 791| MANDT = SY-MANDT + 792| EXCEPTIONS + 793| FOREIGN_LOCK = 1 + 794| SYSTEM_FAILURE = 2 + 795| OTHERS = 3. + 796| + 797| IF SY-SUBRC <> 0. + 798| * Retrieve message displayed within Function Module + 799| MESSAGE ID SY-MSGID + 800| TYPE 'I' + 801| NUMBER SY-MSGNO + 802| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 803| P_ERR = 'X'. + 804| EXIT. + 805| ENDIF. +``` + +- **EN**: Request an exclusive lock on ZCOT0020 via ENQUEUE_EZ_ZCOT0020; on FOREIGN_LOCK or failure show the system message and return error flag P_ERR. +- 호출(파서): ENQUEUE_EZ_ZCOT0020 +- SAP 객체: ENQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 설정, 예산조정 이력, 동시 실행 방지, 잠금 오류 +- English: Enqueue, Lock Object, Foreign Lock, Budget Adjustment Log +- 위치: `abap://ZCOC0030/ZCOC0030F01#L788-L805` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#ENQUEUE_ZCOT0020#C1` + +### FORM CHECK_INPUT — `ZCOC0030F01` L78-L111 (34줄) + +*코스트센터/원가요소는 그룹과 개별 범위 중 하나만 입력되었는지, 이월 대상월(To)이 From 월보다 큰지 선택화면 입력을 검증한다.* + +> 이 unit 의 조각 2개가 28/34줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 코스트센터 그룹(P_KSSET)과 코스트센터 범위(S_KOSTL), 원가요소 그룹(P_KASET)과 원가요소 범위(S_KSTAR)가 각각 둘 다 입력되거나 둘 다 비어 있으면 오류 메시지로 처리를 중단한다. + +```abap + 80| IF P_KSSET IS NOT INITIAL AND S_KOSTL[] IS NOT INITIAL. + 81| MESSAGE S000 DISPLAY LIKE 'E' + 82| WITH '코스트센터 그룹 혹은 코스트센터 필드 하나만 입력하여 주십시오.'(F01). + 83| LEAVE LIST-PROCESSING. + 84| ENDIF. + 85| + 86| IF P_KSSET IS INITIAL AND S_KOSTL[] IS INITIAL. + 87| MESSAGE S000 DISPLAY LIKE 'E' + 88| WITH '코스트센터 그룹 혹은 코스트센터 필드를 입력하여 주십시오.'(F02). + 89| LEAVE LIST-PROCESSING. + 90| ENDIF. + 91| + 92| IF P_KASET IS NOT INITIAL AND S_KSTAR[] IS NOT INITIAL. + 93| MESSAGE S000 DISPLAY LIKE 'E' + 94| WITH '원가요소 그룹 혹은 원가요소 필드 하나만 입력하여 주십시오.'(F03). + 95| LEAVE LIST-PROCESSING. + 96| ENDIF. + 97| + 98| IF P_KASET IS INITIAL AND S_KSTAR[] IS INITIAL. + 99| MESSAGE S000 DISPLAY LIKE 'E' + 100| WITH '원가요소 그룹 혹은 원가요소 필드를 입력하여 주십시오.'(F04). + 101| LEAVE LIST-PROCESSING. + 102| ENDIF. +``` + +- **EN**: Validate that exactly one of cost center group / cost center range and exactly one of cost element group / cost element range is entered, otherwise abort with an error message. +- 업무 키워드: 입력 검증, 코스트센터 그룹, 원가요소 그룹, 상호 배타 입력 +- English: Input Validation, Cost Center Group, Cost Element Group, Selection Screen +- 정의부(복사 시 함께 필요): [`P_KSSET`](#decl-zcoc0030top-122-p_ksset), [`S_KOSTL`](#decl-zcoc0030top-123-s_kostl), [`P_KASET`](#decl-zcoc0030top-127-p_kaset), [`S_KSTAR`](#decl-zcoc0030top-128-s_kstar) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L80-L102` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#CHECK_INPUT#C1` + +#### [validation] 이월 대상월 P_TO가 From 월 P_FROM보다 크지 않으면 오류 메시지로 처리를 중단해 과거 월로의 역이월을 막는다. + +```abap + 105| IF P_TO <= P_FROM. + 106| MESSAGE S000 DISPLAY LIKE 'E' + 107| WITH '입력월(From)보다 큰 이월 대상월(To)을 입력하여 주십시오.'(F04). + 108| LEAVE LIST-PROCESSING. + 109| ENDIF. +``` + +- **EN**: Ensure the target period P_TO is greater than the source period P_FROM, otherwise abort with an error. +- 업무 키워드: 이월 대상월 검증, 기간 순서, 입력 검증 +- English: Period Validation, Carry Forward +- 정의부(복사 시 함께 필요): [`P_TO`](#decl-zcoc0030top-117-p_to), [`P_FROM`](#decl-zcoc0030top-116-p_from) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L105-L109` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#CHECK_INPUT#C2` + +### FORM INITIALIZE_DATA — `ZCOC0030F01` L118-L157 (40줄) + +*관리회계영역 기본정보 설정, 메인 ALV 필드카탈로그 취득, 전역 플래그 초기화 후 대상 코스트센터·원가요소를 결정하고 BAPI 헤더 텍스트('예산 이월 연도: From월 -> To월')를 만든다.* + +> 이 unit 의 조각 1개가 11/40줄(28%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] DETERMINE_KOSTL·DETERMINE_KSTAR로 대상 코스트센터와 원가요소를 확정한 뒤 회계연도와 From/To 월을 조합해 BAPI 전표 헤더 텍스트 GV_HEADER_MSG('예산 이월 YYYY년 : M월 -> N월')를 생성한다. + +```abap + 145| PERFORM DETERMINE_KOSTL. + 146| PERFORM DETERMINE_KSTAR. + 147| + 148| CLEAR : GV_HEADER_MSG. + 149| + 150| WRITE P_FROM TO LV_FROM NO-ZERO. + 151| WRITE P_TO TO LV_TO NO-ZERO. + 152| + 153| CONCATENATE '예산 이월'(F05) ` ` + 154| P_GJAHR `년 : ` LV_FROM `월 -> ` LV_TO `월 ` + 155| INTO GV_HEADER_MSG. +``` + +- **EN**: Determine target cost centers and cost elements, then compose the BAPI document header text GV_HEADER_MSG from fiscal year and from/to periods. +- 호출(파서): DETERMINE_KOSTL, DETERMINE_KSTAR +- 업무 키워드: 대상 코스트센터 결정, 대상 원가요소 결정, 헤더 텍스트, 예산 이월 +- English: Cost Center, Cost Element, Document Header Text, Carry Forward +- 정의부(복사 시 함께 필요): [`GV_HEADER_MSG`](#decl-zcoc0030top-72-gv_header_msg), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`LV_FROM`](#decl-zcoc0030f01-119-lv_from), [`P_TO`](#decl-zcoc0030top-117-p_to), [`LV_TO`](#decl-zcoc0030f01-120-lv_to), [`P_GJAHR`](#decl-zcoc0030top-114-p_gjahr) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L145-L155` · confidence 0.85 · `ZCOC0030#ZCOC0030F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM DETERMINE_KOSTL — `ZCOC0030F01` L553-L593 (41줄) + +*코스트센터 범위(S_KOSTL) 또는 코스트센터 그룹(P_KSSET, SETLEAF 클래스 0101)으로 대상 코스트센터를 결정하고 ONRKS/CSKT에서 OBJNR·명칭을 GT_KOSTL_OBJNR·GR_SELECT_OBJ에 담는다.* + +> 이 unit 의 조각 2개가 33/41줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 코스트센터 범위가 입력되면 그대로 쓰고, 아니면 코스트센터 그룹 P_KSSET을 GET_SETLEAF_VALUES(클래스 0101)로 풀어 범위 LR_KOSTL을 만들며 그룹에 값이 없으면 오류로 중단한다. + +```abap + 559| IF S_KOSTL[] IS NOT INITIAL. + 560| LR_KOSTL[] = S_KOSTL[]. + 561| ELSEIF P_KSSET IS NOT INITIAL. + 562| PERFORM GET_SETLEAF_VALUES USING + 563| P_KSSET '0101'. + 564| MACRO_VALUE_TO_RANGE : LR_KOSTL GT_VALUE_SET. + 565| + 566| IF LR_KOSTL[] IS INITIAL. + 567| MESSAGE S000 DISPLAY LIKE 'E' + 568| WITH '코스트센터 그룹에 데이터가 없습니다.'(F09). + 569| LEAVE LIST-PROCESSING. + 570| ENDIF. + 571| ENDIF. +``` + +- **EN**: Use the entered cost center range, or resolve cost center group P_KSSET via GET_SETLEAF_VALUES (set class 0101) into range LR_KOSTL; abort with error if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: SETLEAF, GET_SETLEAF_VALUES +- 업무 키워드: 코스트센터 그룹, 그룹 값 전개, 범위 생성, 입력 검증 +- English: Cost Center Group, Set Leaf, Range, Validation +- 정의부(복사 시 함께 필요): [`S_KOSTL`](#decl-zcoc0030top-123-s_kostl), [`LR_KOSTL`](#decl-zcoc0030f01-554-lr_kostl), [`P_KSSET`](#decl-zcoc0030top-122-p_ksset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L559-L571` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#DETERMINE_KOSTL#C1` + +#### [sql_select] ONRKS(코스트센터 오브젝트번호)와 CSKT(명칭)를 조인해 관리회계영역·범위 LR_KOSTL·현재 유효한 코스트센터의 OBJNR과 명칭을 GT_KOSTL_OBJNR에 조회하고, OBJNR 범위 GR_SELECT_OBJ를 만들되 대상이 없으면 오류로 중단한다. + +```abap + 573| SELECT A~OBJNR A~KOSTL B~KTEXT AS KOSTL_T + 574| FROM ONRKS AS A INNER JOIN CSKT AS B + 575| ON A~KOSTL = B~KOSTL + 576| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_OBJNR + 577| WHERE A~KOKRS = P_KOKRS + 578| AND A~KOSTL IN LR_KOSTL + 579| AND B~DATBI >= SY-DATUM + 580| AND SPRAS = SY-LANGU. + 581| + 582| SORT GT_KOSTL_OBJNR BY OBJNR. + 583| + 584| " 실제조회 대상 코스트센터 + 585| LOOP AT GT_KOSTL_OBJNR. + 586| ADD_RANGE_EQ : GR_SELECT_OBJ GT_KOSTL_OBJNR-OBJNR. + 587| ENDLOOP. + 588| + 589| IF GR_SELECT_OBJ[] IS INITIAL. + 590| MESSAGE S000 DISPLAY LIKE 'E' WITH '대상 코스트센터가 없습니다.'(F13). + 591| LEAVE LIST-PROCESSING. + 592| ENDIF. +``` + +- **EN**: Select cost center object numbers and texts from ONRKS joined CSKT for the controlling area and range into GT_KOSTL_OBJNR, build OBJNR range GR_SELECT_OBJ and abort with error when no target cost center exists. +- 테이블(파서): read [ONRKS](/tables/ONRKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: ONRKS, CSKT, CSKS +- 업무 키워드: 코스트센터 조회, 오브젝트 번호, 코스트센터 명칭, 대상 없음 검증 +- English: Cost Center, Object Number, Cost Center Text, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KOSTL_OBJNR`](#decl-zcoc0030top-78-gt_kostl_objnr), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`LR_KOSTL`](#decl-zcoc0030f01-554-lr_kostl), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_SELECT_OBJ`](#decl-zcoc0030top-77-gr_select_obj) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L573-L592` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#DETERMINE_KOSTL#C2` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DETERMINE_KSTAR — `ZCOC0030F01` L602-L643 (42줄) + +*원가요소 범위(S_KSTAR) 또는 원가요소 그룹(P_KASET, SETLEAF 클래스 0102)으로 대상 원가요소를 결정하고 CSKB/CSKU에서 유효한 원가요소(50000000~69999999)와 명칭을 GT_KSTAR·GR_KSTAR에 담는다.* + +> 이 unit 의 조각 2개가 30/42줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 원가요소 범위가 입력되면 그대로 쓰고, 아니면 원가요소 그룹 P_KASET을 GET_SETLEAF_VALUES(클래스 0102)로 SETLEAF 값을 풀어 범위 LR_KSTAR로 만들며 그룹에 값이 없으면 오류로 중단한다. + +```abap + 611| IF S_KSTAR[] IS NOT INITIAL. + 612| LR_KSTAR[] = S_KSTAR[]. + 613| ELSEIF P_KASET IS NOT INITIAL. + 614| PERFORM GET_SETLEAF_VALUES USING + 615| P_KASET '0102'. + 616| MACRO_VALUE_TO_RANGE : LR_KSTAR GT_VALUE_SET. + 617| + 618| IF LR_KSTAR[] IS INITIAL. + 619| MESSAGE S000 DISPLAY LIKE 'E' + 620| WITH '원가요소 그룹에 데이터가 없습니다.'(F10). + 621| LEAVE LIST-PROCESSING. + 622| ENDIF. + 623| ENDIF. +``` + +- **EN**: Use the entered cost element range, or resolve cost element group P_KASET via GET_SETLEAF_VALUES (set class 0102) into range LR_KSTAR; abort with error if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: SETLEAF, GET_SETLEAF_VALUES +- 업무 키워드: 원가요소 그룹, 그룹 값 전개, 범위 생성, 입력 검증 +- English: Cost Element Group, Set Leaf, Range, Validation +- 정의부(복사 시 함께 필요): [`S_KSTAR`](#decl-zcoc0030top-128-s_kstar), [`LR_KSTAR`](#decl-zcoc0030f01-603-lr_kstar), [`P_KASET`](#decl-zcoc0030top-127-p_kaset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L611-L623` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#DETERMINE_KSTAR#C1` + +#### [sql_select] CSKB(원가요소 마스터)와 CSKU(명칭)를 조인하여 관리회계영역 P_KOKRS, 원가요소 50000000~69999999, 현재 유효기간 내, LR_KSTAR 범위에 해당하는 원가요소와 명칭을 GT_KSTAR에 조회하고 실조회용 범위 GR_KSTAR를 구성한다. + +```abap + 626| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 627| FROM CSKB AS A INNER JOIN CSKU AS B + 628| ON A~KSTAR = B~KSTAR + 629| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 630| WHERE A~KOKRS = P_KOKRS + 631| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 632| AND SPRAS = SY-LANGU + 633| AND A~DATBI >= SY-DATUM + 634| AND A~DATAB <= SY-DATUM + 635| AND A~KSTAR IN LR_KSTAR. + 636| + 637| SORT GT_KSTAR BY KSTAR. + 638| + 639| " 실 제조회 대상 원가요소 + 640| LOOP AT GT_KSTAR. + 641| ADD_RANGE_EQ : GR_KSTAR GT_KSTAR-KSTAR. + 642| ENDLOOP. +``` + +- **EN**: Select valid cost elements (50000000-69999999, current validity) with texts from CSKB joined CSKU for the controlling area and range into GT_KSTAR, then build range GR_KSTAR for the actual selection. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU, CSKA +- 업무 키워드: 원가요소 조회, 원가요소 명칭, 유효기간, 대상 원가요소 범위 +- English: Cost Element, Cost Element Text, Validity Period, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0030top-84-gt_kstar), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`LR_KSTAR`](#decl-zcoc0030f01-603-lr_kstar), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KSTAR`](#decl-zcoc0030top-89-gr_kstar) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L626-L642` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#DETERMINE_KSTAR#C2` + +### FORM GET_AVAILABLE_BG_DATA — `ZCOC0030F01` L652-L685 (34줄) + +*대상 코스트센터·원가요소 목록을 넘겨 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 From 월의 예산·실적·가용예산(ZCOS0030)을 조회한다.* + +> 이 unit 의 조각 1개가 25/34줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_KOSTL_OBJNR·GT_KSTAR를 ZCOS0010/ZCOS0020 입력 테이블로 변환한 뒤 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 관리회계영역·연도·From 월(P_FROM) 기준으로 호출해 코스트센터/원가요소별 예산·실적·가용예산 GT_ZCOS0030을 받아 OBJNR로 정렬한다. + +```abap + 659| LOOP AT GT_KOSTL_OBJNR. + 660| LT_ZCOS0010-KOSTL = GT_KOSTL_OBJNR-KOSTL. + 661| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 662| ENDLOOP. + 663| + 664| LOOP AT GT_KSTAR. + 665| LT_ZCOS0020-KSTAR = GT_KSTAR-KSTAR. + 666| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 667| ENDLOOP. + 668| + 669| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 670| EXPORTING + 671| I_KOKRS = P_KOKRS + 672| I_GJAHR = P_GJAHR + 673| I_S_PERBL = P_FROM + 674| I_E_PERBL = P_FROM + 675| IMPORTING + 676| E_RESULTCODE = RESULTCODE + 677| E_RESULTMSG = RESULTMSG + 678| TABLES + 679| IT_KOSTL = LT_ZCOS0010 + 680| IT_KSTAR = LT_ZCOS0020 + 681| ET_ZCOS0030 = GT_ZCOS0030[]. + 682| + 683| SORT GT_ZCOS0030 BY OBJNR. +``` + +- **EN**: Build cost center (ZCOS0010) and cost element (ZCOS0020) input tables and call Z_CO_SEL_KOSTL_BUDGET_ACTUAL for the source period to get budget/actual/available budget per cost center and cost element into GT_ZCOS0030, sorted by OBJNR. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산 조회, 예산 실적 잔액, 코스트센터, 원가요소, 이월 기준월 +- English: Available Budget, Budget vs Actual, Cost Center, Cost Element, Period +- 정의부(복사 시 함께 필요): [`GT_KOSTL_OBJNR`](#decl-zcoc0030top-78-gt_kostl_objnr), [`LT_ZCOS0010`](#decl-zcoc0030f01-653-lt_zcos0010), [`GT_KSTAR`](#decl-zcoc0030top-84-gt_kstar), [`LT_ZCOS0020`](#decl-zcoc0030f01-654-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`P_GJAHR`](#decl-zcoc0030top-114-p_gjahr), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`RESULTCODE`](#decl-zcoc0030f01-656-resultcode), [`RESULTMSG`](#decl-zcoc0030f01-657-resultmsg), [`GT_ZCOS0030`](#decl-zcoc0030top-91-gt_zcos0030) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L659-L683` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#GET_AVAILABLE_BG_DATA#C1` + +### FORM TRANSFER_GT_DATA — `ZCOC0030F01` L175-L201 (27줄) + +*Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과 GT_ZCOS0030를 메인 테이블 GT_DATA로 옮기고 가용예산(BG_SUM)이 0인 라인은 노란색·비대상, 그 외는 BAPI 대상으로 표시한다.* + +> 이 unit 의 조각 1개가 22/27줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] GT_ZCOS0030 각 라인을 GT_DATA로 복사하며 가용예산 BG_SUM을 FROM_BG(이월금액)로 두고 천원 단위 표시금액을 계산한 뒤, FROM_BG가 0이면 상태 YELLOW·BAPI 비대상, 아니면 INIT·BAPI_TARGET='X'로 설정한다. + +```abap + 178| LOOP AT GT_ZCOS0030. + 179| MOVE-CORRESPONDING GT_ZCOS0030 TO GT_DATA. + 180| GT_DATA-FROM_BG = GT_DATA-BG_SUM. + 181| + 182| " 1000원 단위로 보이기 위해 화면상에만 표시할 금액 + 183| " 1000원 단위로 보이기 위해 화면상에만 표시할 금액 + 184| PERFORM CONVERT_1000_D USING GT_DATA-FROM_BG + 185| CHANGING GT_DATA-FROM_BG_VIEW. + 186| + 187| PERFORM CONVERT_1000_D USING GT_DATA-TO_BG + 188| CHANGING GT_DATA-TO_BG_VIEW. + 189| IF GT_DATA-FROM_BG = 0. + 190| GT_DATA-STATUS = GC_STATUS_YELLOW. + 191| CLEAR : GT_DATA-BAPI_TARGET. + 192| ELSE. + 193| GT_DATA-STATUS = GC_STATUS_INIT. + 194| GT_DATA-BAPI_TARGET = 'X'. + 195| ENDIF. + 196| + 197| APPEND GT_DATA. + 198| CLEAR : GT_DATA. + 199| ENDLOOP. +``` + +- **EN**: Move each GT_ZCOS0030 row to GT_DATA, set FROM_BG from available budget BG_SUM, derive 1000-unit view amounts, and flag rows with zero available budget as YELLOW/non-target, others as BAPI targets. +- 호출(파서): CONVERT_1000_D, CONVERT_1000_D +- SAP 객체: ZCOS0030 +- 업무 키워드: 가용예산, 이월 대상 판정, 이월 금액, 천원 단위 표시, 상태 아이콘 +- English: Available Budget, Carry Forward Target, Status Icon, Cost Center +- 정의부(복사 시 함께 필요): [`GT_ZCOS0030`](#decl-zcoc0030top-91-gt_zcos0030), [`GT_DATA`](#decl-zcoc0030top-43-gt_data), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L178-L199` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#TRANSFER_GT_DATA#C1` + +### EVENT END-OF-SELECTION — `ZCOC0030` L67-L78 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 68| IF SY-BATCH NE 'X'. + 69| IF GT_DATA[] IS NOT INITIAL. + 70| CALL SCREEN 100. + 71| ELSE. + 72| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 73| ENDIF. + 74| ELSE. + 75| IF GT_DATA[] IS NOT INITIAL. + 76| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 77| ENDIF. + 78| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0030top-43-gt_data) +- 위치: `abap://ZCOC0030/ZCOC0030#L68-L78` · confidence 0.85 · `ZCOC0030#ZCOC0030#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0030/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0030/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0030/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0030/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0030/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0030#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0030/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM CONVERT_1000_UP — `ZCOC0030F01` L207-L228 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 라인의 해당 금액 필드를 동적으로 ASSIGN한 뒤 CONVERT_1000_U로 1000배(천원→원) 변환한다. + +```abap + 213| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 214| WHERE DATATYPE = 'CURR'. + 215| + 216| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 217| INTO LV_FIELD. + 218| + 219| LOOP AT GT_DATA ASSIGNING . + 220| ASSIGN (LV_FIELD) TO . + 221| + 222| IF SY-SUBRC EQ 0. + 223| PERFORM CONVERT_1000_U USING + 224| CHANGING . + 225| ENDIF. + 226| ENDLOOP. + 227| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog, dynamically assign the amount field in each GT_DATA row and multiply by 1000 (thousand KRW to KRW) via CONVERT_1000_U. +- 호출(파서): CONVERT_1000_U +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 천원 단위 환산, 금액 필드 동적 처리, 계획금액 +- English: Amount Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0030top-38-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0030f01-208-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0030f01-211-lv_field), [`GT_DATA`](#decl-zcoc0030top-43-gt_data), [``](#decl-zcoc0030f01-210--fs_data-), [``](#decl-zcoc0030f01-209--fs_field-) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L213-L227` · confidence 0.85 · `ZCOC0030#ZCOC0030F01#FORM#CONVERT_1000_UP#C1` + +### FORM EXECUTE_BAPI — `ZCOC0030F01` L253-L301 (49줄) + +*중복 실행을 막고 사용자 확인 후 From 월 차감(P) → To 월 가산(C) → 실패 시 원복(R) 순으로 예산 이월 BAPI를 실행하고 ZCOT0020 로그를 남긴다.* + +> 이 unit 의 조각 2개가 38/49줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 이미 전기한 경우(GV_ALREADY_POST) 오류 메시지로 중단하고, From/To 월을 담은 확인 메시지를 POPUP_TO_CONFIRM_02로 띄워 사용자가 'J'(예)를 선택하지 않으면 이월을 취소한다. + +```abap + 262| IF GV_ALREADY_POST = 'X'. + 263| MESSAGE S000 DISPLAY LIKE 'E' WITH + 264| '이미 처리하였습니다'(F06). + 265| EXIT. + 266| ENDIF. + 267| + 268| WRITE P_FROM TO LV_TEMP1 NO-ZERO. + 269| CONDENSE LV_TEMP1 NO-GAPS. + 270| WRITE P_TO TO LV_TEMP2 NO-ZERO. + 271| CONDENSE LV_TEMP2 NO-GAPS. + 272| + 273| CONCATENATE `해당금액을 ` LV_TEMP1 `월에서 ` LV_TEMP2 `월로` + 274| '이월을 실행하시겠습니까?' INTO LV_MSG. + 275| + 276| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 277| LV_MSG ' ' + 278| CHANGING L_ANSWER. + 279| IF L_ANSWER <> 'J'. + 280| EXIT. + 281| ENDIF. +``` + +- **EN**: Block re-posting if already posted, then show a confirmation popup (POPUP_TO_CONFIRM_02) with from/to periods and exit unless the user answers Yes. +- 호출(파서): POPUP_TO_CONFIRM_02 +- SAP 객체: POPUP_TO_CONFIRM_02 +- 업무 키워드: 중복 전기 방지, 확인 팝업, 이월 실행 확인 +- English: Duplicate Posting Check, Confirmation Popup, Carry Forward +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0030top-23-gv_already_post), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`LV_TEMP1`](#decl-zcoc0030f01-258-lv_temp1), [`P_TO`](#decl-zcoc0030top-117-p_to), [`LV_TEMP2`](#decl-zcoc0030f01-259-lv_temp2), [`LV_MSG`](#decl-zcoc0030f01-260-lv_msg), [`L_ANSWER`](#decl-zcoc0030f01-255-l_answer) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L262-L281` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#EXECUTE_BAPI#C1` + +#### [control_flow] 전기 플래그를 세운 뒤 BAPI_CARRY_FWD_POST를 'P'(From 월 차감)로 실행하고 성공 시 'C'(To 월 가산)를 실행하며, C가 실패하면 'R'로 From 월을 원복한 후 INSERT_LOG로 ZCOT0020 이력을 남기고 완료 메시지를 표시한다. + +```abap + 283| GV_ALREADY_POST = 'X'. + 284| + 285| PERFORM BAPI_CARRY_FWD_POST USING 'P' + 286| LV_SUBRC. + 287| + 288| CHECK LV_SUBRC EQ 0. + 289| + 290| PERFORM BAPI_CARRY_FWD_POST USING 'C' + 291| LV_SUBRC. + 292| IF LV_SUBRC NE 0. + 293| " 2번째 C BAPI가 오류났을 경우 1번째 P를 원복시킴. + 294| PERFORM BAPI_CARRY_FWD_POST USING 'R' + 295| LV_SUBRC. + 296| ENDIF. + 297| + 298| PERFORM INSERT_LOG. + 299| + 300| MESSAGE S000 WITH '처리가 완료되었습니다.'(F11). +``` + +- **EN**: Run BAPI_CARRY_FWD_POST in mode P (deduct from source period), then C (add to target period); if C fails, run R to restore the source period; finally write the ZCOT0020 log and show completion message. +- 호출(파서): BAPI_CARRY_FWD_POST, BAPI_CARRY_FWD_POST, BAPI_CARRY_FWD_POST, INSERT_LOG +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, ZCOT0020 +- 업무 키워드: 예산 이월 순서, 이전 월 차감, 이월 대상 월 가산, 원복, 이력 저장 +- English: Carry Forward, Reversal, Budget Adjustment Log, Posting Sequence +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0030top-23-gv_already_post), [`LV_SUBRC`](#decl-zcoc0030f01-254-lv_subrc) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L283-L300` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#EXECUTE_BAPI#C2` + +### FORM BAPI_CARRY_FWD_POST — `ZCOC0030F01` L310-L380 (71줄) + +*구분(P: From 월 차감, C: To 월 가산, R: From 월 원복)에 따라 기간을 정하고 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 예산 이월 계획값을 전기한 뒤 커밋/롤백과 결과 상태를 처리한다.* + +> 이 unit 의 조각 2개가 44/71줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 구분이 P/R이면 From 월(P_FROM), C이면 To 월(P_TO)을 전기 기간으로 정하고 FILL_TABLES로 BAPI 헤더·인덱스·코스트센터·금액 테이블을 구성한다. + +```abap + 335| IF P_GUBUN = 'P' OR P_GUBUN = 'R'. + 336| LV_PERIOD = P_FROM. + 337| ELSEIF P_GUBUN = 'C'. + 338| LV_PERIOD = P_TO. + 339| ENDIF. + 340| + 341| PERFORM FILL_TABLES + 342| TABLES LT_INDEXSTRUCTURE + 343| LT_COOBJECT + 344| LT_TOTVALUE + 345| USING LV_PERIOD P_GUBUN + 346| CHANGING LS_HEADERINFO. +``` + +- **EN**: Determine posting period (P_FROM for modes P/R, P_TO for mode C) and build the BAPI header and item tables via FILL_TABLES. +- 호출(파서): FILL_TABLES +- SAP 객체: BAPIPLNHDR +- 업무 키워드: 전기 기간 결정, 이전 월 차감, 이월 대상 월, 원복 +- English: Period, Carry Forward, Reversal, BAPI Tables +- 정의부(복사 시 함께 필요): [`LV_PERIOD`](#decl-zcoc0030f01-324-lv_period), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`P_TO`](#decl-zcoc0030top-117-p_to), [`LT_INDEXSTRUCTURE`](#decl-zcoc0030f01-316-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0030f01-317-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0030f01-319-lt_totvalue), [`LS_HEADERINFO`](#decl-zcoc0030f01-315-ls_headerinfo) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L335-L346` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#BAPI_CARRY_FWD_POST#C1` + +#### [fm_call] BAPI_COSTACTPLN_POSTPRIMCOST를 DELTA='X'로 호출해 코스트센터/원가요소별 예산 계획값을 델타 전기하고, RETURN이 없으면 BAPI_TRANSACTION_COMMIT 후(C 구분 시) 성공 상태를, 오류가 있으면 ROLLBACK 후 마지막 RETURN 메시지로 오류 상태를 GT_DATA에 반영한다. + +```abap + 348| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 349| EXPORTING + 350| HEADERINFO = LS_HEADERINFO + 351| DELTA = 'X' + 352| TABLES + 353| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 354| COOBJECT = LT_COOBJECT + 355| PERVALUE = LT_PERVALUE + 356| TOTVALUE = LT_TOTVALUE + 357| CONTRL = LT_CONTRL + 358| RETURN = LT_RETURN. + 359| + 360| IF LT_RETURN[] IS INITIAL. + 361| + 362| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 363| EXPORTING + 364| WAIT = 'X'. + 365| + 366| IF P_GUBUN = 'C'. + 367| PERFORM SET_RESULT USING 'S' ''. + 368| ENDIF. + 369| + 370| P_SUBRC = 0. + 371| ELSE. + 372| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 373| + 374| LOOP AT LT_RETURN INTO LS_RETURN. + 375| ENDLOOP. + 376| + 377| PERFORM SET_RESULT USING 'E' LS_RETURN. + 378| P_SUBRC = 4. + 379| ENDIF. +``` + +- **EN**: Call BAPI_COSTACTPLN_POSTPRIMCOST with DELTA='X' to post primary cost plan values per cost center/cost element; commit via BAPI_TRANSACTION_COMMIT and set success on empty RETURN, otherwise rollback and set error status with the last RETURN message. +- 호출(파서): BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, SET_RESULT, BAPI_TRANSACTION_ROLLBACK, SET_RESULT +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 예산 이월 전기, 계획값 델타 전기, 커밋, 롤백, 오류 처리, 원가요소 계획 +- English: Primary Cost Planning, Delta Posting, BAPI Commit, Rollback, Return Message +- 정의부(복사 시 함께 필요): [`LS_HEADERINFO`](#decl-zcoc0030f01-315-ls_headerinfo), [`LT_INDEXSTRUCTURE`](#decl-zcoc0030f01-316-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0030f01-317-lt_coobject), [`LT_PERVALUE`](#decl-zcoc0030f01-318-lt_pervalue), [`LT_TOTVALUE`](#decl-zcoc0030f01-319-lt_totvalue), [`LT_CONTRL`](#decl-zcoc0030f01-320-lt_contrl), [`LT_RETURN`](#decl-zcoc0030f01-321-lt_return), [`LS_RETURN`](#decl-zcoc0030f01-322-ls_return) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L348-L379` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#BAPI_CARRY_FWD_POST#C2` + +### FORM FILL_TABLES — `ZCOC0030F01` L391-L460 (70줄) + +*BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(관리회계영역·연도·기간·버전 B20)와 코스트센터/원가요소별 계획값 테이블을 GT_DATA-FROM_BG로부터 채운다.* + +> 이 unit 의 조각 2개가 38/70줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BAPI 헤더(BAPIPLNHDR)에 관리회계영역 P_KOKRS, 회계연도, 대상 기간(From 또는 To 월), 이월 계획버전 GC_VERSN, 헤더텍스트, 계획통화유형을 설정한다. + +```abap + 413| ES_HEADERINFO-CO_AREA = P_KOKRS. + 414| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 415| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 416| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 417| ES_HEADERINFO-VERSION = GC_VERSN. + 418| ES_HEADERINFO-DOC_HDR_TX = GV_HEADER_MSG. + 419| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill BAPIPLNHDR header info with controlling area, fiscal year, period, carry-forward plan version, document header text and plan currency type. +- SAP 객체: BAPIPLNHDR, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: BAPI 헤더, 계획버전, 관리회계영역, 회계연도, 기간 +- English: Plan Version, Controlling Area, Fiscal Year, Period, BAPI Header +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`P_GJAHR`](#decl-zcoc0030top-114-p_gjahr), [`GC_VERSN`](#decl-zcoc0030top-32-gc_versn), [`GV_HEADER_MSG`](#decl-zcoc0030top-72-gv_header_msg), [`GC_PLAN_CURR`](#decl-zcoc0030top-31-gc_plan_curr) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L413-L419` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#FILL_TABLES#C1` + +#### [interface] GT_DATA의 FROM_BG가 0이 아닌 라인마다 인덱스·코스트센터(BAPIPCPOBJ)·원가요소/금액(BAPIPCPTOT)을 채우되, 구분 'P'(이전 월 차감)일 때는 금액 부호를 반전하고 통화 형식 변환(CONV_VIEW_WAERS) 후 거래통화 P_TWAER로 설정한다. + +```abap + 429| LOOP AT GT_DATA. + 430| + 431| CHECK NE 0. + 432| + 433| ADD 1 TO LV_INDEX. + 434| + 435| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX. + 436| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX. + 437| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 438| + 439| ET_COOBJECT-OBJECT_INDEX = LV_INDEX. + 440| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 441| APPEND ET_COOBJECT TO ET_COOBJECT. + 442| + 443| ET_TOTVALUE-VALUE_INDEX = LV_INDEX. + 444| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR. + 445| + 446| LV_VALUE = . + 447| + 448| IF P_GUBUN = 'P'. " C와 R일 경우에는 해당 금액 그대로. + 449| LV_VALUE = LV_VALUE * -1. + 450| ENDIF. + 451| + 452| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 453| CHANGING LV_C_VALUE. + 454| + 455| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 456| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 457| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 458| APPEND ET_TOTVALUE TO ET_TOTVALUE. + 459| ENDLOOP. +``` + +- **EN**: For each GT_DATA line with non-zero FROM_BG append index structure, cost center object (BAPIPCPOBJ) and cost element total value (BAPIPCPTOT); negate the amount for mode 'P' (deduct from source period), convert currency format and set transaction currency. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: BAPI 테이블 구성, 코스트센터, 원가요소, 금액 부호 반전, 이전 월 차감, 거래통화 +- English: Cost Center, Cost Element, Primary Cost Planning, Delta Posting, Transaction Currency +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0030top-43-gt_data), [``](#decl-zcoc0030f01-402--fs_value-), [`LV_INDEX`](#decl-zcoc0030f01-400-lv_index), [`LV_VALUE`](#decl-zcoc0030f01-404-lv_value), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0030f01-405-lv_c_value), [`P_TWAER`](#decl-zcoc0030top-112-p_twaer) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L429-L459` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#FILL_TABLES#C2` + +### FORM SET_RESULT — `ZCOC0030F01` L693-L723 (31줄) + +*BAPI 전기 결과(S/E)에 따라 GT_DATA 대상 라인의 상태 아이콘·메시지·To 월 금액을 갱신하고 ALV 리프레시 플래그를 켠다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] BAPI 대상 라인에 대해 성공 시 상태 GREEN·성공메시지(GP 510)·TO_BG=FROM_BG 및 1000원 단위 표시금액을 설정하고, 실패 시 상태 RED와 BAPI 오류메시지를 GT_DATA에 반영한다. + +```abap + 697| LOOP AT GT_DATA WHERE BAPI_TARGET = 'X'. + 698| + 699| IF P_RESULT = 'S'. + 700| GT_DATA-STATUS = GC_STATUS_GREEN. + 701| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 702| INTO GT_DATA-MESSAGE + 703| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 704| GT_DATA-TO_BG = GT_DATA-FROM_BG. + 705| + 706| " 1000원 단위로 보이기 위해 화면상에만 표시할 금액 + 707| PERFORM CONVERT_1000_D USING GT_DATA-FROM_BG + 708| CHANGING GT_DATA-FROM_BG_VIEW. + 709| + 710| PERFORM CONVERT_1000_D USING GT_DATA-TO_BG + 711| CHANGING GT_DATA-TO_BG_VIEW. + 712| + 713| ELSEIF P_RESULT = 'E'. + 714| GT_DATA-STATUS = GC_STATUS_RED. + 715| GT_DATA-MESSAGE = P_ERR_MSG. + 716| ENDIF. + 717| + 718| MODIFY GT_DATA. CLEAR : GT_DATA. + 719| ENDLOOP. +``` + +- **EN**: For each BAPI-target line set status GREEN with success message GP 510 and copy FROM_BG to TO_BG (plus 1000-unit view amounts) on success, or status RED with the BAPI error message on failure. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D, CONVERT_1000_D +- SAP 객체: GP 510 +- 업무 키워드: 처리 결과 반영, 상태 아이콘, 오류 메시지, 이월 금액, 천원 단위 표시 +- English: Posting Result, Status Icon, Message, Carry Forward Amount +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0030top-43-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L697-L719` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#SET_RESULT#C1` + +### FORM INSERT_LOG — `ZCOC0030F01` L732-L779 (48줄) + +*이월 처리된 코스트센터/원가요소 라인을 예산조정 이력 테이블 ZCOT0020(BGTYPE '50' 이월)에 로그로 저장한다.* + +> 이 unit 의 조각 2개가 36/48줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_CO_GET_BGSEQ로 오늘 날짜 기준 예산조정 이력의 시작 순번(SEQ)을 채번한다. + +```abap + 741| CALL FUNCTION 'Z_CO_GET_BGSEQ' + 742| EXPORTING + 743| I_ADJUST_DATE = SY-DATUM + 744| IMPORTING + 745| E_RESULTMSG = LV_RESULTMSG + 746| E_RESULTCODE = LV_RESULTCODE + 747| E_SEQ = LV_SEQ. +``` + +- **EN**: Call Z_CO_GET_BGSEQ to get the next sequence number for today's budget adjustment log entries. +- 호출(파서): Z_CO_GET_BGSEQ +- SAP 객체: Z_CO_GET_BGSEQ, ZCOT0020 +- 업무 키워드: 순번 채번, 예산조정 이력, 조정일자 +- English: Sequence Number, Budget Adjustment Log +- 정의부(복사 시 함께 필요): [`LV_RESULTMSG`](#decl-zcoc0030f01-734-lv_resultmsg), [`LV_RESULTCODE`](#decl-zcoc0030f01-735-lv_resultcode), [`LV_SEQ`](#decl-zcoc0030f01-733-lv_seq) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L741-L747` · confidence 0.9 · `ZCOC0030#ZCOC0030F01#FORM#INSERT_LOG#C1` + +#### [db_write] BAPI 전기 대상(BAPI_TARGET='X') 라인마다 송신/수신 코스트센터·원가요소·From/To 월·이월금액(BG_SUM)·헤더텍스트를 담아 BGTYPE '50'(이월), BGSRC '01'(SAP 입력)으로 ZCOT0020에 MODIFY 저장한다. + +```abap + 749| LOOP AT GT_DATA WHERE BAPI_TARGET = 'X'. + 750| LT_ZCOT0020-ADJUST_DATE = SY-DATUM. + 751| + 752| LT_ZCOT0020-KOKRS = P_KOKRS. + 753| LT_ZCOT0020-BGTYPE = '50'. " 이월. + 754| LT_ZCOT0020-SEQ = LV_SEQ. + 755| LT_ZCOT0020-GJAHR = P_GJAHR. + 756| LT_ZCOT0020-SEND_KOSTL = GT_DATA-KOSTL. + 757| LT_ZCOT0020-SEND_PERBL = P_FROM. + 758| LT_ZCOT0020-SEND_KSTAR = GT_DATA-KSTAR. + 759| LT_ZCOT0020-RECV_KOSTL = GT_DATA-KOSTL. + 760| LT_ZCOT0020-RECV_PERBL = P_TO. + 761| LT_ZCOT0020-RECV_KSTAR = GT_DATA-KSTAR. + 762| LT_ZCOT0020-TRANS_WKG = GT_DATA-BG_SUM. + 763| LT_ZCOT0020-TWAER = P_TWAER. + 764| LT_ZCOT0020-BLTXT = GV_HEADER_MSG. + 765| LT_ZCOT0020-ERNAM = SY-UNAME. + 766| LT_ZCOT0020-ERZEIT = SY-UZEIT. + 767| LT_ZCOT0020-BGSRC = '01'. " SAP에서 입력 + 768| * LT_ZCOT0020-ERDAT = SY-DATUM. + 769| APPEND LT_ZCOT0020. + 770| CLEAR : LT_ZCOT0020. + 771| + 772| LV_SEQ = LV_SEQ + 1. + 773| ENDLOOP. + 774| + 775| IF LT_ZCOT0020[] IS NOT INITIAL. + 776| MODIFY ZCOT0020 FROM TABLE LT_ZCOT0020. + 777| ENDIF. +``` + +- **EN**: For each BAPI-target line build a ZCOT0020 record (sender/receiver cost center, cost element, from/to period, transferred amount, BGTYPE '50' carry-forward, BGSRC '01') and MODIFY the budget adjustment log table. +- 테이블(파서): read - / write [ZCOT0020](/tables/ZCOT0020.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 예산 이월 로그, 예산조정 이력, 송신 코스트센터, 수신 코스트센터, 이월 금액, 로그 저장 +- English: Budget Adjustment Log, Cost Center, Cost Element, Carry Forward, Database Update +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0030top-43-gt_data), [`LT_ZCOT0020`](#decl-zcoc0030f01-737-lt_zcot0020), [`P_KOKRS`](#decl-zcoc0030top-106-p_kokrs), [`LV_SEQ`](#decl-zcoc0030f01-733-lv_seq), [`P_GJAHR`](#decl-zcoc0030top-114-p_gjahr), [`P_FROM`](#decl-zcoc0030top-116-p_from), [`P_TO`](#decl-zcoc0030top-117-p_to), [`P_TWAER`](#decl-zcoc0030top-112-p_twaer), [`GV_HEADER_MSG`](#decl-zcoc0030top-72-gv_header_msg) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L749-L777` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#INSERT_LOG#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC0030F01` L469-L481 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 474| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 475| WITH KEY FIELDNAME = P_FIELD. + 476| + 477| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 478| INTO LV_MESSAGE. + 479| + 480| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0030top-38-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0030f01-472-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0030f01-471-lv_message), [`GT_DATA`](#decl-zcoc0030top-43-gt_data) +- 위치: `abap://ZCOC0030/ZCOC0030F01#L474-L480` · confidence 0.8 · `ZCOC0030#ZCOC0030F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM DEQUEUE_ZCOT0020 — `ZCOC0030F01` L812-L819 (8줄) + +*예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 프로그램 종료 시 예산조정 이력 테이블 ZCOT0020의 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제하여 다른 사용자가 처리할 수 있게 한다. + +```abap + 814| CALL FUNCTION 'DEQUEUE_EZ_ZCOT0020' + 815| EXPORTING + 816| MODE_ZCOT0020 = 'X' + 817| MANDT = SY-MANDT. +``` + +- **EN**: Release the lock on budget adjustment log table ZCOT0020 via DEQUEUE_EZ_ZCOT0020 when leaving the program. +- 호출(파서): DEQUEUE_EZ_ZCOT0020 +- SAP 객체: DEQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 해제, 예산조정 이력, 동시성 제어 +- English: Dequeue, Lock Object, Budget Adjustment Log +- 위치: `abap://ZCOC0030/ZCOC0030F01#L814-L817` · confidence 0.95 · `ZCOC0030#ZCOC0030F01#FORM#DEQUEUE_ZCOT0020#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0030I01` L6-L31 (26줄) + +*화면 100의 기능코드(BACK/EXIT/&POST)에 따라 컨테이너 정리·잠금 해제 후 화면 종료 또는 예산 이월 BAPI 실행(EXECUTE_BAPI)을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 21/26줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 기능코드별로 BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 ZCOT0020 잠금(DEQUEUE_EZ_ZCOT0020)을 풀어 화면을 나가며, &POST 시 예산 이월 전기(EXECUTE_BAPI)를 수행한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| PERFORM DEQUEUE_ZCOT0020. + 17| + 18| IF GV_T_OK_CODE = 'EXIT'. + 19| LEAVE PROGRAM. + 20| ELSE. + 21| LEAVE TO SCREEN 0. + 22| ENDIF. + 23| "Function Code 맵핑 + 24| WHEN '&POST'. + 25| PERFORM EXECUTE_BAPI. + 26| + 27| WHEN OTHERS. + 28| * LEAVE PROGRAM. + 29| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: on BACK/CANC/EXIT free ALV containers, dequeue ZCOT0020 lock and leave; on &POST run the budget carry-forward BAPI posting. +- 호출(파서): CLEAR_CONTAINER_PROC, DEQUEUE_ZCOT0020, EXECUTE_BAPI +- SAP 객체: ZCOT0020, DEQUEUE_EZ_ZCOT0020 +- 업무 키워드: 기능코드 분기, 화면 종료, 잠금 해제, 예산 이월 전기 +- English: User Command, Dequeue, Budget Carry Forward, Posting +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0030top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0030c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0030/ZCOC0030I01#L9-L29` · confidence 0.9 · `ZCOC0030#ZCOC0030I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (341건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0030C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0030c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0030TOP` (44건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0030top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0030top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0030top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0030top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0030top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0030top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### CSKA — tables · L4-L4 {#decl-zcoc0030top-4-cska} + +```abap +TABLES : DD03L, CSKS, CSKA, KMAS_D. +``` + +#### CSKS — tables · L4-L4 {#decl-zcoc0030top-4-csks} + +```abap +TABLES : DD03L, CSKS, CSKA, KMAS_D. +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0030top-4-dd03l} + +```abap +TABLES : DD03L, CSKS, CSKA, KMAS_D. +``` + +#### KMAS_D — tables · L4-L4 {#decl-zcoc0030top-4-kmas_d} + +```abap +TABLES : DD03L, CSKS, CSKA, KMAS_D. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0030top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0030top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0030top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0030top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0030top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0030top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0030top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcoc0030top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_PLAN_CURR — constants · L31-L31 {#decl-zcoc0030top-31-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GC_VERSN — constants · L32-L32 {#decl-zcoc0030top-32-gc_versn} + +```abap +CONSTANTS : GC_VERSN TYPE COSP-VERSN VALUE 'B20'. " 이월 버전. +``` + +#### GT_MAIN_FIELDCAT — data · L38-L38 {#decl-zcoc0030top-38-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L43-L62 {#decl-zcoc0030top-43-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0030. + +DATA : +FROM_BG LIKE COSP-WKG001, +TO_BG LIKE COSP-WKG001, + +FROM_BG_VIEW LIKE COSP-WKG001, +TO_BG_VIEW LIKE COSP-WKG001, + +BAPI_TARGET TYPE C, " 금액이 0이 아닌 경우 X 셋팅. +BAPI_FAIL TYPE C, + +EXCEL_LINE TYPE I, +MARK TYPE C , +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L64-L64 {#decl-zcoc0030top-64-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L66-L70 {#decl-zcoc0030top-66-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### GV_HEADER_MSG — data · L72-L72 {#decl-zcoc0030top-72-gv_header_msg} + +```abap +DATA : GV_HEADER_MSG TYPE BAPIPLNHDR-DOC_HDR_TX. +``` + +#### W_POPUP_GRID — data · L75-L75 {#decl-zcoc0030top-75-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GR_SELECT_OBJ — ranges · L77-L77 {#decl-zcoc0030top-77-gr_select_obj} + +```abap +RANGES : GR_SELECT_OBJ FOR ONRKS-OBJNR. +``` + +#### GT_KOSTL_OBJNR — data · L78-L82 {#decl-zcoc0030top-78-gt_kostl_objnr} + +```abap +DATA : BEGIN OF GT_KOSTL_OBJNR OCCURS 0 , + KOSTL LIKE CSKS-KOSTL, + OBJNR LIKE ONRKS-OBJNR, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL_OBJNR. +``` + +#### GT_KSTAR — data · L84-L87 {#decl-zcoc0030top-84-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GR_KSTAR — ranges · L89-L89 {#decl-zcoc0030top-89-gr_kstar} + +```abap +RANGES : GR_KSTAR FOR CSKA-KSTAR. +``` + +#### GT_ZCOS0030 — data · L91-L91 {#decl-zcoc0030top-91-gt_zcos0030} + +```abap +DATA : GT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_CURR_DATA — data · L93-L93 {#decl-zcoc0030top-93-gt_curr_data} + +```abap +DATA : GT_CURR_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_NEXT_DATA — data · L94-L94 {#decl-zcoc0030top-94-gt_next_data} + +```abap +DATA : GT_NEXT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### GV_ERROR_MSG — data · L95-L95 {#decl-zcoc0030top-95-gv_error_msg} + +```abap +DATA : GV_ERROR_MSG LIKE BAPIRET2-MESSAGE. +``` + +#### GV_ERR — data · L97-L97 {#decl-zcoc0030top-97-gv_err} + +```abap +DATA : GV_ERR. +``` + +#### P_KOKRS — parameter · L106-L107 {#decl-zcoc0030top-106-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L112-L113 {#decl-zcoc0030top-112-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER OBLIGATORY DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L114-L114 {#decl-zcoc0030top-114-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_FROM — parameter · L116-L116 {#decl-zcoc0030top-116-p_from} + +```abap +PARAMETER : P_FROM LIKE COSP-PERBL OBLIGATORY. +``` + +#### P_TO — parameter · L117-L117 {#decl-zcoc0030top-117-p_to} + +```abap +PARAMETER : P_TO LIKE COSP-PERBL OBLIGATORY. +``` + +#### P_KSSET — parameter · L122-L122 {#decl-zcoc0030top-122-p_ksset} + +```abap +PARAMETER : P_KSSET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KOSTL — select-option · L123-L123 {#decl-zcoc0030top-123-s_kostl} + +```abap +SELECT-OPTIONS : S_KOSTL FOR CSKS-KOSTL MODIF ID MG2. +``` + +#### P_KASET — parameter · L127-L127 {#decl-zcoc0030top-127-p_kaset} + +```abap +PARAMETER : P_KASET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KSTAR — select-option · L128-L128 {#decl-zcoc0030top-128-s_kstar} + +```abap +SELECT-OPTIONS : S_KSTAR FOR CSKA-KSTAR MODIF ID MG2. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0030F01` (41건) + +#### LV_FROM — data · unit 로컬 · L119-L119 {#decl-zcoc0030f01-119-lv_from} + +```abap + DATA : LV_FROM(3) TYPE C. +``` + +#### LV_TO — data · unit 로컬 · L120-L120 {#decl-zcoc0030f01-120-lv_to} + +```abap + DATA : LV_TO(3) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L208-L208 {#decl-zcoc0030f01-208-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L209-L209 {#decl-zcoc0030f01-209--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L210-L210 {#decl-zcoc0030f01-210--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L211-L211 {#decl-zcoc0030f01-211-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_SUBRC — data · unit 로컬 · L254-L254 {#decl-zcoc0030f01-254-lv_subrc} + +```abap + DATA : LV_SUBRC LIKE SY-SUBRC. +``` + +#### L_ANSWER — data · unit 로컬 · L255-L255 {#decl-zcoc0030f01-255-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LV_TEMP1 — data · unit 로컬 · L258-L258 {#decl-zcoc0030f01-258-lv_temp1} + +```abap + DATA : LV_TEMP1(255) TYPE C. +``` + +#### LV_TEMP2 — data · unit 로컬 · L259-L259 {#decl-zcoc0030f01-259-lv_temp2} + +```abap + DATA : LV_TEMP2(255) TYPE C. +``` + +#### LV_MSG — data · unit 로컬 · L260-L260 {#decl-zcoc0030f01-260-lv_msg} + +```abap + DATA : LV_MSG(255) TYPE C. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L315-L315 {#decl-zcoc0030f01-315-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L316-L316 {#decl-zcoc0030f01-316-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L317-L317 {#decl-zcoc0030f01-317-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L318-L318 {#decl-zcoc0030f01-318-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L319-L319 {#decl-zcoc0030f01-319-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L320-L320 {#decl-zcoc0030f01-320-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L321-L321 {#decl-zcoc0030f01-321-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L322-L322 {#decl-zcoc0030f01-322-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_PERIOD — data · unit 로컬 · L324-L324 {#decl-zcoc0030f01-324-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_INDEX — data · unit 로컬 · L400-L400 {#decl-zcoc0030f01-400-lv_index} + +```abap + DATA : LV_INDEX TYPE BAPIACPSTRU-OBJECT_INDEX. +``` + +#### — field-symbol · unit 로컬 · L402-L402 {#decl-zcoc0030f01-402--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L404-L404 {#decl-zcoc0030f01-404-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L405-L405 {#decl-zcoc0030f01-405-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_MESSAGE — data · unit 로컬 · L471-L471 {#decl-zcoc0030f01-471-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L472-L472 {#decl-zcoc0030f01-472-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_FIELDNAME — data · unit 로컬 · L493-L493 {#decl-zcoc0030f01-493-lv_fieldname} + +```abap + DATA : LV_FIELDNAME TYPE RGSBS-FIELD. +``` + +#### LV_CLASS — data · unit 로컬 · L494-L494 {#decl-zcoc0030f01-494-lv_class} + +```abap + DATA : LV_CLASS TYPE RGSBS-CLASS. +``` + +#### LT_CSKA — data · unit 로컬 · L522-L525 {#decl-zcoc0030f01-522-lt_cska} + +```abap + DATA : BEGIN OF LT_CSKA OCCURS 0, + KSTAR LIKE CSKA-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKA. +``` + +#### LT_RETURN — data · unit 로컬 · L527-L527 {#decl-zcoc0030f01-527-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L528-L528 {#decl-zcoc0030f01-528-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L554-L554 {#decl-zcoc0030f01-554-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L603-L603 {#decl-zcoc0030f01-603-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L653-L653 {#decl-zcoc0030f01-653-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L654-L654 {#decl-zcoc0030f01-654-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### RESULTCODE — data · unit 로컬 · L656-L656 {#decl-zcoc0030f01-656-resultcode} + +```abap + DATA : RESULTCODE. +``` + +#### RESULTMSG — data · unit 로컬 · L657-L657 {#decl-zcoc0030f01-657-resultmsg} + +```abap + DATA : RESULTMSG(100) TYPE C. +``` + +#### LV_SEQ — data · unit 로컬 · L733-L733 {#decl-zcoc0030f01-733-lv_seq} + +```abap + DATA : LV_SEQ TYPE ZCOT0020-SEQ. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L734-L734 {#decl-zcoc0030f01-734-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L735-L735 {#decl-zcoc0030f01-735-lv_resultcode} + +```abap + DATA : LV_RESULTCODE(1) TYPE C. +``` + +#### LT_ZCOT0020 — data · unit 로컬 · L737-L737 {#decl-zcoc0030f01-737-lt_zcot0020} + +```abap + DATA : LT_ZCOT0020 LIKE ZCOT0020 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0030 L26-31 | 0 | INITIALIZATION 이벤트에서 SET_DYNP를 호출해 선택화면 기본값을 설정한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0030 L32-34 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출하는 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0030 L35-40 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 PBO 이벤트이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0030 L41-43 | 0 | 코스트센터 그룹(P_KSSET)의 F4 검색도움으로 F4_GRP(클래스 0101, KOSTL)를 호출한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0030 L44-46 | 0 | 원가요소 그룹(P_KASET)의 F4 검색도움으로 F4_GRP(클래스 0102, KSTAR)를 호출한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0030 L47-49 | 0 | 원가요소 범위 하한(S_KSTAR-LOW)의 F4 검색도움으로 F4_KSTAR를 호출한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0030 L50-55 | 0 | 원가요소 범위 상한(S_KSTAR-HIGH)의 F4 검색도움으로 F4_KSTAR를 호출한다(파라미터 'S_KSTAR-IGH' 오타 의심). | +| START-OF-SELECTION | EVENT | ZCOC0030 L56-66 | 1 | ZCOT0020 잠금 설정, 입력 검증, 초기화(대상 코스트센터·원가요소 결정), 가용예산 조회를 순서대로 수행하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0030 L67-78 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0030C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0030C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0030C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0030C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0030C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0030C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0030C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0030C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0030C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0030C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0030C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0030C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0030C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0030C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0030C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0030C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0030C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0030C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0030C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0030C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0030C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0030C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0030C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0030C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0030C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0030F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 설정하는 LOOP AT SCREEN 화면 제어이다. | +| SET_DYNP | FORM | ZCOC0030F01 L22-55 | 1 | 초기화 시 관리회계영역 텍스트를 설정하고 회계연도·From 월(전월)·To 월(당월) 기본값을 계산하며 DEV 시스템에서는 테스트용 범위를 채운다. | +| CONTROL_FCXX | FORM | ZCOC0030F01 L65-69 | 0 | 선택화면 기능코드(SSCRFIELDS-UCOMM)를 로컬 변수에 담기만 하는 빈 제어 FORM이다. | +| CHECK_INPUT | FORM | ZCOC0030F01 L78-111 | 2 | 코스트센터/원가요소는 그룹과 개별 범위 중 하나만 입력되었는지, 이월 대상월(To)이 From 월보다 큰지 선택화면 입력을 검증한다. | +| INITIALIZE_DATA | FORM | ZCOC0030F01 L118-157 | 1 | 관리회계영역 기본정보 설정, 메인 ALV 필드카탈로그 취득, 전역 플래그 초기화 후 대상 코스트센터·원가요소를 결정하고 BAPI 헤더 텍스트('예산 이월 연도: From월 -> To월')를 만든다. | +| PROCESS_DATA | FORM | ZCOC0030F01 L163-166 | 0 | 가용예산 조회(GET_AVAILABLE_BG_DATA)와 GT_DATA 변환(TRANSFER_GT_DATA)을 순서대로 호출하는 단순 디스패치 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0030F01 L175-201 | 1 | Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과 GT_ZCOS0030를 메인 테이블 GT_DATA로 옮기고 가용예산(BG_SUM)이 0인 라인은 노란색·비대상, 그 외는 BAPI 대상으로 표시한다. | +| CONVERT_1000_UP | FORM | ZCOC0030F01 L207-228 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0030F01 L236-244 | 0 | 오류가 난 필드를 ALV 셀 색상(빨강, COL=6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EXECUTE_BAPI | FORM | ZCOC0030F01 L253-301 | 2 | 중복 실행을 막고 사용자 확인 후 From 월 차감(P) → To 월 가산(C) → 실패 시 원복(R) 순으로 예산 이월 BAPI를 실행하고 ZCOT0020 로그를 남긴다. | +| BAPI_CARRY_FWD_POST | FORM | ZCOC0030F01 L310-380 | 2 | 구분(P: From 월 차감, C: To 월 가산, R: From 월 원복)에 따라 기간을 정하고 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 예산 이월 계획값을 전기한 뒤 커밋/롤백과 결과 상태를 처리한다. | +| FILL_TABLES | FORM | ZCOC0030F01 L391-460 | 2 | BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(관리회계영역·연도·기간·버전 B20)와 코스트센터/원가요소별 계획값 테이블을 GT_DATA-FROM_BG로부터 채운다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0030F01 L469-481 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| F4_GRP | FORM | ZCOC0030F01 L491-513 | 1 | K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다. | +| F4_KSTAR | FORM | ZCOC0030F01 L521-544 | 1 | 관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다. | +| DETERMINE_KOSTL | FORM | ZCOC0030F01 L553-593 | 2 | 코스트센터 범위(S_KOSTL) 또는 코스트센터 그룹(P_KSSET, SETLEAF 클래스 0101)으로 대상 코스트센터를 결정하고 ONRKS/CSKT에서 OBJNR·명칭을 GT_KOSTL_OBJNR·GR_SELECT_OBJ에 담는다. | +| DETERMINE_KSTAR | FORM | ZCOC0030F01 L602-643 | 2 | 원가요소 범위(S_KSTAR) 또는 원가요소 그룹(P_KASET, SETLEAF 클래스 0102)으로 대상 원가요소를 결정하고 CSKB/CSKU에서 유효한 원가요소(50000000~69999999)와 명칭을 GT_KSTAR·GR_KSTAR에 담는다. | +| GET_AVAILABLE_BG_DATA | FORM | ZCOC0030F01 L652-685 | 1 | 대상 코스트센터·원가요소 목록을 넘겨 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 From 월의 예산·실적·가용예산(ZCOS0030)을 조회한다. | +| SET_RESULT | FORM | ZCOC0030F01 L693-723 | 1 | BAPI 전기 결과(S/E)에 따라 GT_DATA 대상 라인의 상태 아이콘·메시지·To 월 금액을 갱신하고 ALV 리프레시 플래그를 켠다. | +| INSERT_LOG | FORM | ZCOC0030F01 L732-779 | 2 | 이월 처리된 코스트센터/원가요소 라인을 예산조정 이력 테이블 ZCOT0020(BGTYPE '50' 이월)에 로그로 저장한다. | +| ENQUEUE_ZCOT0020 | FORM | ZCOC0030F01 L787-806 | 1 | 예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다. | +| DEQUEUE_ZCOT0020 | FORM | ZCOC0030F01 L812-819 | 1 | 예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0030I01 L6-31 | 1 | 화면 100의 기능코드(BACK/EXIT/&POST)에 따라 컨테이너 정리·잠금 해제 후 화면 종료 또는 예산 이월 BAPI 실행(EXECUTE_BAPI)을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0030O01 L6-22 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0030O01 L28-72 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0030O01 L82-126 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0030O01 L134-154 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0030O01 L162-171 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0030O01 L179-201 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0030O01 L210-238 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0030O01 L311-342 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0030O01 L352-433 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0030O01 L441-469 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0040.md b/wiki/programs/ZCOC0040.md new file mode 100644 index 0000000..0d21b67 --- /dev/null +++ b/wiki/programs/ZCOC0040.md @@ -0,0 +1,3939 @@ +--- +type: abap-program +title: "ZCOC0040 — 예산 조정 Main 프로그램" +description: "코스트센터 예산 조정 업무의 진입 화면(메뉴) 역할을 하는 프로그램이다. 관리회계영역(TKA01) KR01을 표시하고 라디오버튼으로 조정 유형(추경 P_ADJ1, 전용 P_ADJ2, 이체 P_ADJ3, 환수 P_ADJ4)을 선택하면 각각 ZCOC0050, ZCOC0060, ZCOC0070, ZCOC0080 트랜잭션을 CALL TRANSACTION으로 호출한다. 자체적으로 데이터 조회나 전기는 하지 않는다." +resource: "abap://ZCOC0040" +tags: ["예산관리", "예산 조정", "추경", "전용", "이체", "환수", "CO-OM-CCA", "트랜잭션 호출", "메뉴 진입", "엑셀 업로드", "파일 읽기", "업로드 오류 처리", "셀 값 매핑", "콤마 제거", "행 단위 적재", "계획 버전 텍스트", "관리회계영역", "통화 금액 변환", "외부 형식", "BAPI 금액"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:11+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: [] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_TRANSACTION", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "b5c04b651ad275fa5c8c9a94a4d47570e1a81b70b773c9b77d0cf0b306d50381" +x-unit-count: 128 +x-chunk-count: 50 +x-declaration-count: 202 +--- + +## 업무 목적 + +코스트센터 예산 조정 업무의 진입 화면(메뉴) 역할을 하는 프로그램이다. 관리회계영역(TKA01) KR01을 표시하고 라디오버튼으로 조정 유형(추경 P_ADJ1, 전용 P_ADJ2, 이체 P_ADJ3, 환수 P_ADJ4)을 선택하면 각각 ZCOC0050, ZCOC0060, ZCOC0070, ZCOC0080 트랜잭션을 CALL TRANSACTION으로 호출한다. 자체적으로 데이터 조회나 전기는 하지 않는다. + +## 주 흐름 + +1. 관리회계영역 KR01의 명칭을 조회하여 선택화면에 표시한다 (SET_DYNP) +2. 관리회계영역 필드를 입력 불가로 제어한다 (LOOP_AT_SCREEN) +3. ALV 필드카탈로그와 상태 변수를 초기화한다 (INITIALIZE_DATA) +4. 선택된 조정 유형(추경/전용/이체/환수)에 따라 ZCOC0050/ZCOC0060/ZCOC0070/ZCOC0080 트랜잭션을 호출한다 (PROCESS_DATA) + +## 핵심 내부테이블 + +- `GT_DATA` — 템플릿에서 남은 ALV 메인 테이블 정의 (TABNAME, FIELDNAME 등) - 실제로 채워지지 않음 (채움: ? / 소비: ?) +- `GT_UPLOAD` — 템플릿 잔재 업로드 구조(PERNR, DMBTR, SGTXT, BVTYP) - 사용되지 않음 (채움: ? / 소비: ?) + +## 테이블 / 외부 호출 + +- read: AENR, DD07T, T001, TKA01, TKT09 +- write: - +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_TRANSACTION, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (50건 / unit 45개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0040top-83-p_kokrs) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM PROCESS_DATA — `ZCOC0040F01` L74-L90 (17줄) + +*선택된 예산 조정 유형(추경/전용/이체/환수)에 따라 ZCOC0050/ZCOC0060/ZCOC0070/ZCOC0080 트랜잭션을 CALL TRANSACTION 으로 호출한다.* + +> 이 unit 의 조각 1개가 11/17줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 라디오버튼 P_ADJ1(추경)→ZCOC0050, P_ADJ2(전용)→ZCOC0060, P_ADJ3(이체)→ZCOC0070, P_ADJ4(환수)→ZCOC0080 으로 트랜잭션 코드를 정한 뒤 CALL TRANSACTION 으로 해당 예산 조정 프로그램을 호출한다. + +```abap + 78| IF P_ADJ1 ='X'. + 79| LV_TRANSACTION = 'ZCOC0050'. + 80| ELSEIF P_ADJ2 = 'X'. + 81| LV_TRANSACTION = 'ZCOC0060'. + 82| ELSEIF P_ADJ3 = 'X'. + 83| LV_TRANSACTION = 'ZCOC0070'. + 84| ELSEIF P_ADJ4 = 'X'. + 85| LV_TRANSACTION = 'ZCOC0080'. + 86| ENDIF. + 87| + 88| CALL TRANSACTION LV_TRANSACTION. +``` + +- **EN**: Maps the selected budget adjustment type (supplementary, transfer of appropriation, transfer, return) to transactions ZCOC0050-ZCOC0080 and calls the chosen transaction. +- 호출(파서): LV_TRANSACTION +- SAP 객체: ZCOC0050, ZCOC0060, ZCOC0070, ZCOC0080 +- 업무 키워드: 예산 조정, 추경, 전용, 이체, 환수, 트랜잭션 호출, 메뉴 진입 +- English: Budget Adjustment, Call Transaction, Cost Center Budget, Menu +- 정의부(복사 시 함께 필요): [`P_ADJ1`](#decl-zcoc0040top-91-p_adj1), [`LV_TRANSACTION`](#decl-zcoc0040f01-75-lv_transaction), [`P_ADJ2`](#decl-zcoc0040top-92-p_adj2), [`P_ADJ3`](#decl-zcoc0040top-93-p_adj3), [`P_ADJ4`](#decl-zcoc0040top-94-p_adj4) +- 위치: `abap://ZCOC0040/ZCOC0040F01#L78-L88` · confidence 0.92 · `ZCOC0040#ZCOC0040F01#FORM#PROCESS_DATA#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0040/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0040/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0040/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0040/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0040/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0040#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0040top-83-p_kokrs) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0040/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +## 정의부 (285건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0040C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0040c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0040TOP` (28건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0040top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0040top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0040top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0040top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0040top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0040top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0040top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0040top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0040top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0040top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0040top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0040top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0040top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0040top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc0040top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc0040top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L38-L38 {#decl-zcoc0040top-38-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L43-L48 {#decl-zcoc0040top-43-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + PERNR(8) TYPE C, + DMBTR(16) TYPE C, "금액 + SGTXT(50) TYPE C, " 라인아이템 텍스트 + BVTYP(4) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L51-L51 {#decl-zcoc0040top-51-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L53-L63 {#decl-zcoc0040top-53-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + TABNAME LIKE DD03L-TABNAME, + FIELDNAME LIKE DD03L-FIELDNAME, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L65-L65 {#decl-zcoc0040top-65-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L67-L71 {#decl-zcoc0040top-67-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L74-L74 {#decl-zcoc0040top-74-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### P_KOKRS — parameter · L83-L84 {#decl-zcoc0040top-83-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_ADJ1 — parameter · L91-L91 {#decl-zcoc0040top-91-p_adj1} + +```abap +PARAMETER : P_ADJ1 TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X'. +``` + +#### P_ADJ2 — parameter · L92-L92 {#decl-zcoc0040top-92-p_adj2} + +```abap +PARAMETER : P_ADJ2 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_ADJ3 — parameter · L93-L93 {#decl-zcoc0040top-93-p_adj3} + +```abap +PARAMETER : P_ADJ3 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_ADJ4 — parameter · L94-L94 {#decl-zcoc0040top-94-p_adj4} + +```abap +PARAMETER : P_ADJ4 TYPE C RADIOBUTTON GROUP RG1. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0040F01` (1건) + +#### LV_TRANSACTION — data · unit 로컬 · L75-L75 {#decl-zcoc0040f01-75-lv_transaction} + +```abap + DATA : LV_TRANSACTION LIKE TADIR-OBJ_NAME. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0040 L25-30 | 0 | INITIALIZATION 에서 화면 기본값(SET_DYNP, 관리회계영역 명칭)을 설정한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0040 L31-32 | 0 | AT SELECTION-SCREEN 이벤트 블록으로 처리 내용이 없다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0040 L33-42 | 0 | 선택화면 PBO 에서 LOOP_AT_SCREEN 을 호출하여 관리회계영역 필드 속성을 제어한다. | +| START-OF-SELECTION | EVENT | ZCOC0040 L43-49 | 0 | START-OF-SELECTION 에서 초기화(INITIALIZE_DATA) 후 선택된 예산 조정 트랜잭션을 호출(PROCESS_DATA)한다. | +| END-OF-SELECTION | EVENT | ZCOC0040 L50-50 | 0 | END-OF-SELECTION 이벤트 블록으로 처리 내용이 없다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0040C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0040C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0040C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0040C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0040C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0040C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0040C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0040C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0040C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0040C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0040C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0040C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0040C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0040C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0040C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0040C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0040C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0040C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0040C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0040C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0040C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0040C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0040C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0040C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0040C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0040F01 L6-17 | 0 | 선택화면에서 회사코드 오픈 여부(GV_BUKRS_O)가 없으면 MG1 그룹 필드(관리회계영역)를 입력 불가로 설정한다. | +| SET_DYNP | FORM | ZCOC0040F01 L24-31 | 0 | 선택화면 초기화 시 관리회계영역(P_KOKRS) 기본 정보를 읽어 명칭(P_BEZEI)을 화면에 설정한다. | +| INITIALIZE_DATA | FORM | ZCOC0040F01 L37-65 | 0 | 관리회계영역 텍스트 설정, 메인 ALV 필드카탈로그 취득 및 처리 상태 플래그 초기화를 수행한다(템플릿 잔재로 실제 데이터 처리에는 사용되지 않음). | +| PROCESS_DATA | FORM | ZCOC0040F01 L74-90 | 1 | 선택된 예산 조정 유형(추경/전용/이체/환수)에 따라 ZCOC0050/ZCOC0060/ZCOC0070/ZCOC0080 트랜잭션을 CALL TRANSACTION 으로 호출한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0040I01 L6-28 | 0 | 화면 0100 의 BACK/CANC/EXIT 명령 시 ALV 컨테이너를 해제하고 화면 또는 프로그램을 종료하는 PAI 모듈이다(템플릿 잔재, 실제 업무 분기 없음). | +| STATUS_0100 OUTPUT | MODULE | ZCOC0040O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0040O01 L26-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0040O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0040O01 L127-147 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0040O01 L155-164 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0040O01 L172-194 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0040O01 L203-231 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0040O01 L304-319 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0040O01 L329-370 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0040O01 L378-405 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0050.md b/wiki/programs/ZCOC0050.md new file mode 100644 index 0000000..c4ded53 --- /dev/null +++ b/wiki/programs/ZCOC0050.md @@ -0,0 +1,5125 @@ +--- +type: abap-program +title: "ZCOC0050 — 예산 조정(추경)" +description: "코스트센터(부서)·원가요소별 추경 금액(천원 단위, 양수만)과 헤더 텍스트를 엑셀로 업로드하여 관리회계영역 KR01의 추경 버전 B11에 해당 월(P_PERBL)의 1차 원가 계획으로 추가 전기하는 예산 조정(추경) 프로그램이다. CSKS/CSKT·CSKB/CSKU로 코스트센터·원가요소 존재 여부와 금액(0 또는 음수 불가)을 검증해 ALV로 보여주고, 추경 확인 시 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')를 호출하며 성공 건은 예산조정 이력 테이블 ZCOT0020(BGTYPE '10' 추경)에 기록한다. ZCOC0040 예산조정 메뉴에서 호출된다." +resource: "abap://ZCOC0050" +tags: ["예산관리", "예산 조정", "추경", "코스트센터 계획", "예산조정 이력", "엑셀 업로드", "CO-OM-CCA", "기능코드 분기", "추경 전기", "예산 리포트 호출", "예산조정 로그", "잠금 해제", "예산조정 이력 조회", "트랜잭션 호출", "예산 리포트 조회", "순번 채번", "추경 로그", "코스트센터", "원가요소", "추경 금액"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:11+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKS", "CSKT", "CSKU", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0020"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DEQUEUE_EZ_ZCOT0020", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "ENQUEUE_EZ_ZCOT0020", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE"] +x-code-hash: "fa23ad6bcec98a7c3893ca7578ef5758b9a46ac53da6b08943c6bdba2a357874" +x-unit-count: 149 +x-chunk-count: 75 +x-declaration-count: 207 +--- + +## 업무 목적 + +코스트센터(부서)·원가요소별 추경 금액(천원 단위, 양수만)과 헤더 텍스트를 엑셀로 업로드하여 관리회계영역 KR01의 추경 버전 B11에 해당 월(P_PERBL)의 1차 원가 계획으로 추가 전기하는 예산 조정(추경) 프로그램이다. CSKS/CSKT·CSKB/CSKU로 코스트센터·원가요소 존재 여부와 금액(0 또는 음수 불가)을 검증해 ALV로 보여주고, 추경 확인 시 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')를 호출하며 성공 건은 예산조정 이력 테이블 ZCOT0020(BGTYPE '10' 추경)에 기록한다. ZCOC0040 예산조정 메뉴에서 호출된다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 조회하고 엑셀 양식 다운로드 버튼(FC01)을 설정한다 (SET_DYNP, FC01_ACTIVE) +2. 양식 다운로드 버튼 클릭 시 SMW0 문서 ZCOC0050을 열어 업로드 양식을 제공한다 (CONTROL_FCXX) +3. 업로드 파일 입력 여부를 확인하고 필드카탈로그·상태 변수를 초기화한 뒤 ZCOT0020 잠금을 설정한다 (CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020) +4. 엑셀 파일을 읽어 GT_UPLOAD에 적재하고 숫자 형식 정리·대문자 변환 후 GT_DATA로 이전하며 금액을 1000배·내부형식으로 변환한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +5. CSKS/CSKT, CSKB/CSKU에서 코스트센터·원가요소 존재를 확인하고 금액 0 또는 음수 라인을 오류 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +6. 코스트센터명·원가요소명을 보완하여 화면 100 ALV Grid로 표시한다 (EDIT_DATA, DISPLAY_ALV_LIST) +7. 추경(&POST) 확인 후 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST를 호출하여 버전 B11에 전기하고 COMMIT/ROLLBACK 결과를 상태로 기록한다 (EXECUTE_BAPI, BAPI_POST_SENDER, FILL_TABLES) +8. 성공 라인을 ZCOT0020 예산조정 이력에 저장하고, 툴바에서 예산 현황(ZCOR0030)·조정 이력(ZCOR0040) 조회 트랜잭션을 호출할 수 있다 (INSERT_LOG, CALL_BG_REPORT, CALL_BG_ADJ_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (KOSTL, KSTAR, WKG001 추경금액, BLTXT 헤더텍스트) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 추경 대상 메인 ALV 테이블 (KOSTL/명, KSTAR/명, WKG001, BLTXT, TWAER, BAPI_RESULT, STATUS, MESSAGE) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, BAPI_POST_SENDER / 소비: DISPLAY_ALV_LIST, FILL_TABLES, INSERT_LOG, SHOW_LOG_POP) +- `GT_KOSTL` — 유효 코스트센터·명칭 (CSKS JOIN CSKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_KSTAR` — 유효 원가요소·명칭 (CSKB JOIN CSKU) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKS, CSKT, CSKU, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0020 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DEQUEUE_EZ_ZCOT0020, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, ENQUEUE_EZ_ZCOT0020, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM + +## 로직 조각 (75건 / unit 65개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0050F01` L111-L123 (13줄) + +*선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0으로 SMW0 문서(추경 업로드 엑셀 양식)를 연다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택화면 기능코드 FC01(엑셀 양식 다운로드)이면 Z_CO_OPEN_SMW0으로 SMW0에 등록된 문서 GC_SMW0을 '예산 조정 - 추경 Upload 양식' 제목으로 열어 업로드 양식을 제공한다. + +```abap + 115| CASE L_UCOMM. + 116| WHEN 'FC01'. + 117| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 118| EXPORTING + 119| P_DOCNAM = GC_SMW0 + 120| P_TITLE = '예산 조정 - 추경 Upload 양식'(F03). + 121| ENDCASE. +``` + +- **EN**: On selection-screen function code FC01 call Z_CO_OPEN_SMW0 to open the SMW0 web repository document with the supplementary budget upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 양식, SMW0 문서 +- English: Excel Template, Web Repository, SMW0 +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0050f01-112-l_ucomm), [`GC_SMW0`](#decl-zcoc0050top-31-gc_smw0) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L115-L121` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0050` L47-L58 (12줄) + +*입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다.* + +> 이 unit 의 조각 1개가 6/12줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHECK_INPUT으로 파일 입력을 검증하고 INITIALIZE_DATA 후 ENQUEUE_ZCOT0020으로 잠금을 건 뒤 PROCESS_DATA로 엑셀 추경 데이터를 읽어 검증한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| + 52| PERFORM ENQUEUE_ZCOT0020 USING GV_LOCK. + 53| + 54| PERFORM PROCESS_DATA. +``` + +- **EN**: Main flow: validate input, initialize, lock ZCOT0020, then read and validate the uploaded supplementary budget data. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020, PROCESS_DATA +- SAP 객체: ZCOT0020 +- 업무 키워드: 메인 흐름, 입력 검증, 잠금, 엑셀 업로드 +- English: Main Processing, Enqueue, Excel Upload +- 정의부(복사 시 함께 필요): [`GV_LOCK`](#decl-zcoc0050top-21-gv_lock) +- 위치: `abap://ZCOC0050/ZCOC0050#L49-L54` · confidence 0.85 · `ZCOC0050#ZCOC0050#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0050F01` L38-L45 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 40| IF P_FNAME IS INITIAL. + 41| MESSAGE S000 DISPLAY LIKE 'E' WITH + 42| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 43| LEAVE LIST-PROCESSING. + 44| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0050top-119-p_fname) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L40-L44` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM ENQUEUE_ZCOT0020 — `ZCOC0050F01` L710-L729 (20줄) + +*예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다.* + +> 이 unit 의 조각 1개가 18/20줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] ENQUEUE_EZ_ZCOT0020으로 ZCOT0020 테이블 전체 잠금을 요청하고, 타 사용자 잠금(FOREIGN_LOCK) 등 실패 시 시스템 메시지를 I 타입으로 보여주고 P_ERR='X'를 반환한다. + +```abap + 711| CALL FUNCTION 'ENQUEUE_EZ_ZCOT0020' + 712| EXPORTING + 713| MODE_ZCOT0020 = 'X' + 714| MANDT = SY-MANDT + 715| EXCEPTIONS + 716| FOREIGN_LOCK = 1 + 717| SYSTEM_FAILURE = 2 + 718| OTHERS = 3. + 719| + 720| IF SY-SUBRC <> 0. + 721| * Retrieve message displayed within Function Module + 722| MESSAGE ID SY-MSGID + 723| TYPE 'I' + 724| NUMBER SY-MSGNO + 725| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 726| P_ERR = 'X'. + 727| EXIT. + 728| ENDIF. +``` + +- **EN**: Request an exclusive lock on ZCOT0020 via ENQUEUE_EZ_ZCOT0020; on FOREIGN_LOCK or failure show the system message and return error flag P_ERR. +- 호출(파서): ENQUEUE_EZ_ZCOT0020 +- SAP 객체: ENQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 설정, 예산조정 이력, 동시 실행 방지, 잠금 오류 +- English: Enqueue, Lock Object, Foreign Lock, Budget Adjustment Log +- 위치: `abap://ZCOC0050/ZCOC0050F01#L711-L728` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#ENQUEUE_ZCOT0020#C1` + +### FORM READ_DATA — `ZCOC0050F01` L132-L148 (17줄) + +*엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 검증 → 명칭 보완 순으로 추경 데이터를 읽는 흐름을 제어한다.* + +> 이 unit 의 조각 1개가 15/17줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] UPLOAD_EXCEL_DATA로 파일을 읽고 GT_UPLOAD가 있으면 SET_BDC_FORM으로 형식을 정리한 뒤 TRANSFER_GT_DATA·CONVERT_KRW_DATA로 GT_DATA를 만들고 VALIDATION_CHECK·EDIT_DATA로 검증과 명칭 보완을 수행한다. + +```abap + 133| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 134| + 135| CHECK GT_UPLOAD[] IS NOT INITIAL. + 136| + 137| "2. 업로드가 제대로 되었다면. + 138| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 139| + 140| "3. 엑셀 데이터를 인터널 테이블로 이전 + 141| PERFORM TRANSFER_GT_DATA. + 142| PERFORM CONVERT_KRW_DATA. + 143| + 144| "4. Validation + 145| PERFORM VALIDATION_CHECK. + 146| + 147| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate reading the Excel file, normalizing formats, transferring to GT_DATA with currency conversion, validating and enriching texts. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, EDIT_DATA +- 업무 키워드: 엑셀 읽기 흐름, 형식 정리, 검증, 명칭 보완 +- English: Excel Upload, Validation, Processing Flow +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0050top-119-p_fname), [`GT_UPLOAD`](#decl-zcoc0050top-44-gt_upload) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L133-L147` · confidence 0.8 · `ZCOC0050#ZCOC0050F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0050F01` L315-L333 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 318| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 319| + 320| IF L_EXISTS = ABAP_FALSE. + 321| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 322| LEAVE LIST-PROCESSING. + 323| EXIT. + 324| ENDIF. + 325| + 326| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 327| 'GS_UPLOAD' + 328| P_NAME + 329| 1 "S_COL-LOW + 330| 2 "S_ROW-LOW + 331| 256 "S_COL-HIGH + 332| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0050f01-316-l_exists) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L318-L332` · confidence 0.85 · `ZCOC0050#ZCOC0050F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0050top-119-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0050F01` L185-L275 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 204| L_TABNAME = P_STRUCT_NM. + 205| + 206| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 207| USING L_TABNAME. + 208| + 209| SELECT DOMNAME LOWERCASE + 210| INTO TABLE LT_LOWERCASE + 211| FROM DD01L + 212| FOR ALL ENTRIES IN LT_FCAT + 213| WHERE DOMNAME = LT_FCAT-DOMNAME + 214| AND AS4LOCAL = 'A'. + 215| + 216| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0050f01-187-l_tabname), [`LT_FCAT`](#decl-zcoc0050f01-186-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0050f01-195-lt_lowercase) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L204-L216` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 218| LOOP AT LT_FCAT ASSIGNING . + 219| CASE -DATATYPE. + 220| " 숫자 타입 + 221| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 222| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 223| L_TYPE = 'NUMB'. + 224| " 날짜 + 225| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 226| L_TYPE = 'DATS'. + 227| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 228| "CHECK BOX + 229| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 230| L_TYPE = 'CHCK'. + 231| ENDIF. + 232| WHEN OTHERS. + 233| ENDCASE. + 234| + 235| IF -CONVEXIT IS NOT INITIAL. + 236| L_CONV_ALPHA = 'X'. + 237| ENDIF. + 238| + 239| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 240| CONTINUE. + 241| ENDIF. + 242| + 243| LOOP AT GT_UPLOAD ASSIGNING . + 244| CONCATENATE '-' -FIELDNAME + 245| INTO L_FSNAME. + 246| ASSIGN (L_FSNAME) TO . + 247| + 248| IF SY-SUBRC EQ 0. + 249| CASE L_TYPE. + 250| WHEN 'NUMB'. + 251| PERFORM BDC_CURR USING . + 252| WHEN 'DATS'. + 253| PERFORM BDC_DATE USING . + 254| WHEN 'CHCK'. + 255| PERFORM BDC_CHECKBOX USING . + 256| WHEN OTHERS. + 257| ENDCASE. + 258| + 259| IF L_CONV_ALPHA = 'X'. + 260| PERFORM ZERO_I USING . + 261| ENDIF. + 262| + 263| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 264| BINARY SEARCH. + 265| + 266| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 267| TRANSLATE TO UPPER CASE. + 268| ENDIF. + 269| ENDIF. + 270| ENDLOOP. + 271| + 272| CLEAR : L_TYPE. + 273| CLEAR : L_CONV_ALPHA. + 274| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0050f01-186-lt_fcat), [``](#decl-zcoc0050f01-193--fs_fcat-), [`L_TYPE`](#decl-zcoc0050f01-189-l_type), [`L_CONV_ALPHA`](#decl-zcoc0050f01-190-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0050top-44-gt_upload), [``](#decl-zcoc0050f01-191--fs_upload-), [`L_FSNAME`](#decl-zcoc0050f01-188-l_fsname), [``](#decl-zcoc0050f01-192--fs-), [`LT_LOWERCASE`](#decl-zcoc0050f01-195-lt_lowercase) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L218-L274` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0050F01` L284-L307 (24줄) + +*엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 코스트센터 대문자화, 추경금액 1000배 환산(CONVERT_1000_U), 통화 설정을 하고 숫자 변환 오류 시 중단한다.* + +> 이 unit 의 조각 1개가 22/24줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 GT_DATA로 복사하며 KOSTL을 대문자로 바꾸고 천원 단위 입력금액 WKG001을 CONVERT_1000_U로 원 단위로 환산·통화 P_TWAER를 설정하며, 숫자 필드에 문자가 있으면 CX_SY_CONVERSION_NO_NUMBER를 잡아 오류 메시지로 중단한 뒤 KOSTL·KSTAR로 정렬한다. + +```abap + 285| TRY. + 286| LOOP AT GT_UPLOAD. + 287| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 288| TRANSLATE GT_DATA-KOSTL TO UPPER CASE. + 289| GT_DATA-STATUS = GC_STATUS_INIT. + 290| GT_DATA-WKG001_VIEW = GT_DATA-WKG001. + 291| + 292| PERFORM CONVERT_1000_U USING GT_DATA-WKG001 + 293| CHANGING GT_DATA-WKG001. + 294| + 295| GT_DATA-TWAER = P_TWAER. + 296| + 297| APPEND GT_DATA. + 298| CLEAR : GT_DATA. + 299| ENDLOOP. + 300| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 301| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F04) + 302| DISPLAY LIKE 'E'. + 303| LEAVE LIST-PROCESSING. + 304| ENDTRY. + 305| + 306| SORT GT_DATA BY KOSTL KSTAR. +``` + +- **EN**: Copy each uploaded row to GT_DATA, upper-case the cost center, convert the thousand-won amount to won via CONVERT_1000_U, set currency, abort with an error on CX_SY_CONVERSION_NO_NUMBER, then sort by cost center and cost element. +- 호출(파서): CONVERT_1000_U +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 천원 단위 환산, 숫자 변환 오류, 대문자 변환, 추경 금액 +- English: Excel Upload, Amount Conversion, Conversion Error, Cost Center +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0050top-44-gt_upload), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0050top-110-p_twaer) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L285-L306` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0050F01` L155-L176 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 161| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 162| WHERE DATATYPE = 'CURR'. + 163| + 164| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 165| INTO LV_FIELD. + 166| + 167| LOOP AT GT_DATA ASSIGNING . + 168| ASSIGN (LV_FIELD) TO . + 169| + 170| IF SY-SUBRC EQ 0. + 171| PERFORM CONV_DB_WAERS USING GV_WAERS. + 172| ENDIF. + 173| ENDLOOP. + 174| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0050top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0050f01-156-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0050f01-159-lv_field), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [``](#decl-zcoc0050f01-158--fs_data-), [``](#decl-zcoc0050f01-157--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L161-L174` · confidence 0.85 · `ZCOC0050#ZCOC0050F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0050F01` L342-L423 (82줄) + +*업로드된 추경 라인의 코스트센터·원가요소 존재 여부(CSKS/CSKT, CSKB/CSKU)와 금액(0·음수 불가)을 검증해 오류 라인을 표시한다.* + +> 이 unit 의 조각 3개가 75/82줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_DATA의 코스트센터에 대해 CSKS와 CSKT를 조인하여 관리회계영역 P_KOKRS에서 현재 유효한 코스트센터와 명칭을 GT_KOSTL에 조회한다. + +```abap + 345| SELECT A~KOSTL B~KTEXT AS KOSTL_T + 346| FROM CSKS AS A INNER JOIN CSKT AS B + 347| ON A~KOKRS = B~KOKRS + 348| AND A~KOSTL = B~KOSTL + 349| AND A~DATBI = B~DATBI + 350| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 351| FOR ALL ENTRIES IN GT_DATA + 352| WHERE A~KOKRS = P_KOKRS + 353| AND A~KOSTL = GT_DATA-KOSTL + 354| AND A~DATBI >= SY-DATUM + 355| AND A~DATAB <= SY-DATUM + 356| AND B~SPRAS = SY-LANGU. + 357| + 358| SORT GT_KOSTL BY KOSTL. +``` + +- **EN**: Select currently valid cost centers with texts from CSKS joined CSKT for the uploaded cost centers into GT_KOSTL (FOR ALL ENTRIES). +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKS, CSKT +- 업무 키워드: 코스트센터 존재 확인, 코스트센터 명칭, 유효기간 +- English: Cost Center, Cost Center Text, Validity, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KOSTL`](#decl-zcoc0050top-85-gt_kostl), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L345-L358` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] GT_DATA의 원가요소에 대해 CSKB와 CSKU를 조인하여 관리회계영역·계정과목표 GV_KTOPL 기준 현재 유효한 원가요소와 명칭을 GT_KSTAR에 조회한다. + +```abap + 360| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 361| FROM CSKB AS A INNER JOIN CSKU AS B + 362| ON A~KSTAR = B~KSTAR + 363| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 364| FOR ALL ENTRIES IN GT_DATA + 365| WHERE A~KOKRS = P_KOKRS + 366| AND A~KSTAR = GT_DATA-KSTAR + 367| AND B~KTOPL = GV_KTOPL + 368| AND SPRAS = SY-LANGU + 369| AND A~DATBI >= SY-DATUM + 370| AND A~DATAB <= SY-DATUM. + 371| + 372| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Select currently valid cost elements with texts from CSKB joined CSKU for the uploaded cost elements and chart of accounts into GT_KSTAR. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU +- 업무 키워드: 원가요소 존재 확인, 원가요소 명칭, 계정과목표 +- English: Cost Element, Cost Element Text, Chart of Accounts, Validity +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0050top-90-gt_kstar), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L360-L372` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] GT_DATA 라인마다 추경금액 WKG001이 0이거나 음수이면, 코스트센터가 GT_KOSTL에 없거나 원가요소가 GT_KSTAR에 없으면 상태 RED·오류메시지·필드 빨간색 표시(SET_ERROR_FIELD_RED)·메시지 목록 추가 후 GV_UPLOAD_ERROR를 세운다. + +```abap + 374| LOOP AT GT_DATA. + 375| + 376| IF GT_DATA-WKG001 = 0. + 377| GT_DATA-MESSAGE = '금액이 입력되지 않았습니다.'(F10). + 378| GT_DATA-STATUS = GC_STATUS_RED. + 379| GV_UPLOAD_ERROR = 'X'. + 380| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 381| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 382| GT_DATA-MESSAGE. + 383| ENDIF. + 384| + 385| IF GT_DATA-WKG001 < 0. + 386| GT_DATA-MESSAGE = '양수(+) 금액만 입력하여 주십시오'(F11). + 387| GT_DATA-STATUS = GC_STATUS_RED. + 388| GV_UPLOAD_ERROR = 'X'. + 389| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 390| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 391| GT_DATA-MESSAGE. + 392| ENDIF. + 393| + 394| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 395| BINARY SEARCH. + 396| + 397| IF SY-SUBRC NE 0. + 398| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다'(F05). + 399| GT_DATA-STATUS = GC_STATUS_RED. + 400| GV_UPLOAD_ERROR = 'X'. + 401| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 402| PERFORM ADD_DATA_MESSAGE USING 'KOSTL' + 403| GT_DATA-MESSAGE. + 404| ENDIF. + 405| + 406| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR + 407| BINARY SEARCH. + 408| + 409| IF SY-SUBRC NE 0. + 410| GT_DATA-MESSAGE = '존재하지 않는 원가요소입니다'(F06). + 411| GT_DATA-STATUS = GC_STATUS_RED. + 412| GV_UPLOAD_ERROR = 'X'. + 413| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 414| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 415| GT_DATA-MESSAGE. + 416| ENDIF. + 417| + 418| MODIFY GT_DATA. CLEAR : GT_DATA. + 419| CLEAR : GT_KOSTL, GT_KSTAR. + 420| + 421| ENDLOOP. +``` + +- **EN**: Validate each line: amount must be non-zero and positive, cost center must exist in GT_KOSTL and cost element in GT_KSTAR; mark failures RED with message, highlight the field and set GV_UPLOAD_ERROR. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 금액 검증, 양수 금액, 코스트센터 존재 검증, 원가요소 존재 검증, 업로드 오류 표시 +- English: Validation, Amount Check, Cost Center, Cost Element, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0050top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0050top-85-gt_kostl), [`GT_KSTAR`](#decl-zcoc0050top-90-gt_kstar) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L374-L421` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC0050F01` L433-L445 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 438| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 439| WITH KEY FIELDNAME = P_FIELD. + 440| + 441| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 442| INTO LV_MESSAGE. + 443| + 444| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0050top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0050f01-436-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0050f01-435-lv_message), [`GT_DATA`](#decl-zcoc0050top-54-gt_data) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L438-L444` · confidence 0.8 · `ZCOC0050#ZCOC0050F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC0050F01` L471-L499 (29줄) + +*GT_DATA 각 라인에 GT_KOSTL·GT_KSTAR에서 찾은 코스트센터명·원가요소명을 보완한다.* + +> 이 unit 의 조각 1개가 25/29줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] GT_DATA 라인마다 GT_KOSTL(CSKS/CSKT)에서 코스트센터명, GT_KSTAR(CSKB/CSKU)에서 원가요소명을 BINARY SEARCH로 읽어 KOSTL_T·KSTAR_T를 채운다. + +```abap + 473| LOOP AT GT_DATA. + 474| + 475| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 476| BINARY SEARCH. + 477| + 478| IF SY-SUBRC EQ 0. + 479| GT_DATA-KOSTL_T = GT_KOSTL-KOSTL_T. + 480| ENDIF. + 481| + 482| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR + 483| BINARY SEARCH. + 484| + 485| IF SY-SUBRC EQ 0. + 486| GT_DATA-KSTAR_T = GT_KSTAR-KSTAR_T. + 487| ENDIF. + 488| + 489| * " 1000원 단위로 보이기 위해 화면상에만 표시할 금액 + 490| * PERFORM CONVERT_1000_D USING GT_DATA-WKG001_VIEW + 491| * CHANGING GT_DATA-WKG001_VIEW. + 492| + 493| CLEAR : GT_KOSTL, GT_KSTAR. + 494| + 495| MODIFY GT_DATA. CLEAR : GT_DATA. + 496| + 497| ENDLOOP. +``` + +- **EN**: For each GT_DATA line look up the cost center text from GT_KOSTL and cost element text from GT_KSTAR and fill KOSTL_T / KSTAR_T. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: CSKT, CSKU +- 업무 키워드: 코스트센터명 보완, 원가요소명 보완, 텍스트 매핑 +- English: Cost Center Text, Cost Element Text, Data Enrichment +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`GT_KOSTL`](#decl-zcoc0050top-85-gt_kostl), [`GT_KSTAR`](#decl-zcoc0050top-90-gt_kstar) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L473-L497` · confidence 0.85 · `ZCOC0050#ZCOC0050F01#FORM#EDIT_DATA#C1` + +### EVENT END-OF-SELECTION — `ZCOC0050` L59-L70 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 60| IF SY-BATCH NE 'X'. + 61| IF GT_DATA[] IS NOT INITIAL. + 62| CALL SCREEN 100. + 63| ELSE. + 64| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 65| ENDIF. + 66| ELSE. + 67| IF GT_DATA[] IS NOT INITIAL. + 68| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 69| ENDIF. + 70| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0050top-54-gt_data) +- 위치: `abap://ZCOC0050/ZCOC0050#L60-L70` · confidence 0.85 · `ZCOC0050#ZCOC0050#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0050/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0050/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0050/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0050/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0050/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0050#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0050#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0050/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0050#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM EXECUTE_BAPI — `ZCOC0050F01` L508-L535 (28줄) + +*중복 전기를 막고 '예산을 추경하시겠습니까?' 확인 후 BAPI_POST_SENDER로 추경을 전기하고 INSERT_LOG로 ZCOT0020 이력을 남긴다.* + +> 이 unit 의 조각 1개가 18/28줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 처리한 경우 오류로 중단하고, POPUP_TO_CONFIRM_02로 추경 실행을 확인받아 'J'이면 GV_ALREADY_POST를 세운 뒤 BAPI_POST_SENDER(추경 전기)와 INSERT_LOG(ZCOT0020 로그)를 실행한다. + +```abap + 517| IF GV_ALREADY_POST = 'X'. + 518| MESSAGE S000 DISPLAY LIKE 'E' WITH + 519| '이미 처리하였습니다'(F07). + 520| EXIT. + 521| ENDIF. + 522| + 523| + 524| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 525| '예산을 추경하시겠습니까?'(F08) ' ' + 526| CHANGING L_ANSWER. + 527| IF L_ANSWER <> 'J'. + 528| EXIT. + 529| ENDIF. + 530| + 531| GV_ALREADY_POST = 'X'. + 532| + 533| PERFORM BAPI_POST_SENDER. + 534| PERFORM INSERT_LOG. +``` + +- **EN**: Block duplicate posting, ask confirmation via POPUP_TO_CONFIRM_02, then run BAPI_POST_SENDER to post the supplementary budget and INSERT_LOG to write the ZCOT0020 log. +- 호출(파서): POPUP_TO_CONFIRM_02, BAPI_POST_SENDER, INSERT_LOG +- SAP 객체: POPUP_TO_CONFIRM_02, ZCOT0020 +- 업무 키워드: 중복 전기 방지, 확인 팝업, 추경 전기, 이력 저장 +- English: Duplicate Posting Check, Confirmation Popup, Supplementary Budget, Budget Adjustment Log +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0050top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0050f01-510-l_answer) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L517-L534` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#EXECUTE_BAPI#C1` + +### FORM BAPI_POST_SENDER — `ZCOC0050F01` L544-L622 (79줄) + +*GT_DATA 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')를 호출해 추경 금액을 원가 계획으로 전기하고 커밋/롤백 결과를 상태·메시지에 반영한다.* + +> 이 unit 의 조각 1개가 50/79줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_DATA 각 라인마다 FILL_TABLES로 헤더·항목을 만든 뒤 BAPI_COSTACTPLN_POSTPRIMCOST를 DELTA='X'로 호출하고, RETURN이 비면 BAPI_TRANSACTION_COMMIT 후 상태 GREEN·성공메시지(GP 510)·BAPI_RESULT 'S', 오류면 ROLLBACK 후 마지막 RETURN 메시지와 상태 RED·BAPI_RESULT 'E'를 기록한다. + +```abap + 567| LOOP AT GT_DATA. + 568| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 569| + 570| PERFORM FILL_TABLES + 571| TABLES LT_INDEXSTRUCTURE + 572| LT_COOBJECT + 573| LT_TOTVALUE + 574| USING LV_PERIOD + 575| CHANGING LS_HEADERINFO. + 576| + 577| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 578| EXPORTING + 579| HEADERINFO = LS_HEADERINFO + 580| DELTA = 'X' + 581| TABLES + 582| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 583| COOBJECT = LT_COOBJECT + 584| PERVALUE = LT_PERVALUE + 585| TOTVALUE = LT_TOTVALUE + 586| CONTRL = LT_CONTRL + 587| RETURN = LT_RETURN. + 588| + 589| IF LT_RETURN[] IS INITIAL. + 590| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 591| EXPORTING + 592| WAIT = 'X'. + 593| + 594| GT_DATA-STATUS = GC_STATUS_GREEN. + 595| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 596| INTO GT_DATA-MESSAGE + 597| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 598| + 599| GT_DATA-BAPI_RESULT = 'S'. + 600| + 601| * PERFORM INSERT_LOG. + 602| + 603| ELSE. + 604| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 605| + 606| LOOP AT LT_RETURN INTO LS_RETURN. + 607| ENDLOOP. + 608| + 609| GT_DATA-BAPI_RESULT = 'E'. + 610| + 611| GT_DATA-MESSAGE = LS_RETURN-MESSAGE. + 612| GT_DATA-STATUS = GC_STATUS_RED. + 613| ENDIF. + 614| + 615| MODIFY GT_DATA. CLEAR : GT_DATA. + 616| ENDLOOP. +``` + +- **EN**: For each GT_DATA line build BAPI tables and call BAPI_COSTACTPLN_POSTPRIMCOST with DELTA='X'; commit and mark GREEN/'S' with message GP 510 on empty RETURN, otherwise rollback and mark RED/'E' with the last RETURN message. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 추경 전기, 계획값 델타 전기, 라인별 커밋, 롤백, 오류 메시지, 원가요소 계획 +- English: Supplementary Budget, Primary Cost Planning, Delta Posting, BAPI Commit, Rollback +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`LT_INDEXSTRUCTURE`](#decl-zcoc0050f01-546-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0050f01-547-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0050f01-549-lt_totvalue), [`LV_PERIOD`](#decl-zcoc0050f01-554-lv_period), [`LS_HEADERINFO`](#decl-zcoc0050f01-545-ls_headerinfo), [`LT_PERVALUE`](#decl-zcoc0050f01-548-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0050f01-550-lt_contrl), [`LT_RETURN`](#decl-zcoc0050f01-551-lt_return), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LS_RETURN`](#decl-zcoc0050f01-552-ls_return), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L567-L616` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#BAPI_POST_SENDER#C1` + +### FORM FILL_TABLES — `ZCOC0050F01` L634-L701 (68줄) + +*현재 GT_DATA 한 라인에 대해 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(추경 버전 B11, 월 P_PERBL, 헤더텍스트 BLTXT)와 코스트센터/원가요소/금액 테이블을 구성한다.* + +> 이 unit 의 조각 2개가 41/68줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BAPI 헤더(BAPIPLNHDR)에 관리회계영역, 회계연도, 추경 월(P_PERIOD), 추경 계획버전 GC_VERSN, 라인의 헤더텍스트 BLTXT, 계획통화유형을 설정한다. + +```abap + 657| ES_HEADERINFO-CO_AREA = P_KOKRS. + 658| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 659| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 660| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 661| ES_HEADERINFO-VERSION = GC_VERSN. + 662| ES_HEADERINFO-DOC_HDR_TX = GT_DATA-BLTXT. + 663| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill BAPIPLNHDR with controlling area, fiscal year, period, supplementary plan version, line header text BLTXT and plan currency type. +- SAP 객체: BAPIPLNHDR, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: BAPI 헤더, 계획버전, 추경 월, 헤더 텍스트 +- English: Plan Version, Controlling Area, Period, Document Header Text +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs), [`P_GJAHR`](#decl-zcoc0050top-113-p_gjahr), [`GC_VERSN`](#decl-zcoc0050top-32-gc_versn), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`GC_PLAN_CURR`](#decl-zcoc0050top-33-gc_plan_curr) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L657-L663` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#FILL_TABLES#C1` + +#### [interface] GT_DATA-WKG001을 동적으로 참조해 0이 아니면 인덱스·코스트센터(BAPIPCPOBJ)·원가요소/고정값(BAPIPCPTOT)을 채우고 CONV_VIEW_WAERS로 통화 형식 변환한 추경금액과 거래통화 P_TWAER를 설정한다. + +```abap + 667| ASSIGN (LV_FIELD) TO . + 668| + 669| CHECK SY-SUBRC EQ 0. + 670| + 671| CLEAR : LV_INDEX. + 672| + 673| CHECK NE 0. + 674| + 675| ADD 1 TO LV_INDEX. + 676| + 677| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX. + 678| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX. + 679| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 680| + 681| ET_COOBJECT-OBJECT_INDEX = LV_INDEX. + 682| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 683| APPEND ET_COOBJECT TO ET_COOBJECT. + 684| + 685| ET_TOTVALUE-VALUE_INDEX = LV_INDEX. + 686| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR. + 687| + 688| LV_VALUE = . + 689| + 690| * IF P_GUBUN = 'P'. " C와 R일 경우에는 해당 금액 그대로. + 691| * LV_VALUE = LV_VALUE * -1. + 692| * ENDIF. + 693| + 694| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 695| CHANGING LV_C_VALUE. + 696| + 697| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 698| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 699| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 700| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Dynamically read GT_DATA-WKG001 and, if non-zero, append index structure, cost center object and cost element total value with the currency-converted amount and transaction currency for the BAPI. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT +- 업무 키워드: BAPI 테이블 구성, 코스트센터, 원가요소, 추경 금액, 거래통화 +- English: Cost Center, Cost Element, Primary Cost Planning, Transaction Currency +- 정의부(복사 시 함께 필요): [`LV_FIELD`](#decl-zcoc0050f01-641-lv_field), [``](#decl-zcoc0050f01-644--fs_value-), [`LV_INDEX`](#decl-zcoc0050f01-642-lv_index), [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`LV_VALUE`](#decl-zcoc0050f01-646-lv_value), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0050f01-647-lv_c_value), [`P_TWAER`](#decl-zcoc0050top-110-p_twaer) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L667-L700` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#FILL_TABLES#C2` + +### FORM INSERT_LOG — `ZCOC0050F01` L751-L797 (47줄) + +*BAPI 전기에 성공한 추경 라인을 예산조정 이력 테이블 ZCOT0020(BGTYPE '10' 추경)에 로그로 저장한다.* + +> 이 unit 의 조각 2개가 35/47줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_CO_GET_BGSEQ로 오늘 날짜 기준 예산조정 이력 시작 순번(SEQ)을 채번한다. + +```abap + 760| CALL FUNCTION 'Z_CO_GET_BGSEQ' + 761| EXPORTING + 762| I_ADJUST_DATE = SY-DATUM + 763| IMPORTING + 764| E_RESULTMSG = LV_RESULTMSG + 765| E_RESULTCODE = LV_RESULTCODE + 766| E_SEQ = LV_SEQ. +``` + +- **EN**: Call Z_CO_GET_BGSEQ to obtain the next sequence number for today's budget adjustment log. +- 호출(파서): Z_CO_GET_BGSEQ +- SAP 객체: Z_CO_GET_BGSEQ, ZCOT0020 +- 업무 키워드: 순번 채번, 예산조정 이력 +- English: Sequence Number, Budget Adjustment Log +- 정의부(복사 시 함께 필요): [`LV_RESULTMSG`](#decl-zcoc0050f01-753-lv_resultmsg), [`LV_RESULTCODE`](#decl-zcoc0050f01-754-lv_resultcode), [`LV_SEQ`](#decl-zcoc0050f01-752-lv_seq) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L760-L766` · confidence 0.9 · `ZCOC0050#ZCOC0050F01#FORM#INSERT_LOG#C1` + +#### [db_write] BAPI 성공(BAPI_RESULT='S') 라인마다 코스트센터·원가요소·월·추경금액(WKG001)·헤더텍스트를 담아 BGTYPE '10'(추경), BGSRC '01'로 ZCOT0020에 MODIFY 저장한다. + +```abap + 768| LOOP AT GT_DATA WHERE BAPI_RESULT = 'S'. + 769| LT_ZCOT0020-ADJUST_DATE = SY-DATUM. + 770| LT_ZCOT0020-KOKRS = P_KOKRS. + 771| LT_ZCOT0020-BGTYPE = '10'. " 추경 + 772| LT_ZCOT0020-SEQ = LV_SEQ. + 773| LT_ZCOT0020-GJAHR = P_GJAHR. + 774| LT_ZCOT0020-SEND_KOSTL = GT_DATA-KOSTL. + 775| LT_ZCOT0020-SEND_PERBL = P_PERBL. + 776| LT_ZCOT0020-SEND_KSTAR = GT_DATA-KSTAR. + 777| LT_ZCOT0020-RECV_KOSTL = GT_DATA-KOSTL. + 778| LT_ZCOT0020-RECV_PERBL = P_PERBL. + 779| LT_ZCOT0020-RECV_KSTAR = GT_DATA-KSTAR. + 780| LT_ZCOT0020-TRANS_WKG = GT_DATA-WKG001. + 781| LT_ZCOT0020-TWAER = P_TWAER. + 782| LT_ZCOT0020-BLTXT = GT_DATA-BLTXT. + 783| LT_ZCOT0020-ERNAM = SY-UNAME. + 784| LT_ZCOT0020-ERZEIT = SY-UZEIT. + 785| LT_ZCOT0020-BGSRC = '01'. " SAP에서 입력 + 786| * LT_ZCOT0020-ERDAT = SY-DATUM. + 787| APPEND LT_ZCOT0020. + 788| CLEAR : LT_ZCOT0020. + 789| + 790| LV_SEQ = LV_SEQ + 1. + 791| ENDLOOP. + 792| + 793| IF LT_ZCOT0020[] IS NOT INITIAL. + 794| MODIFY ZCOT0020 FROM TABLE LT_ZCOT0020. + 795| ENDIF. +``` + +- **EN**: For each successfully posted line build a ZCOT0020 record (cost center, cost element, period, supplementary amount WKG001, header text, BGTYPE '10' supplementary, BGSRC '01') and MODIFY the budget adjustment log. +- 테이블(파서): read - / write [ZCOT0020](/tables/ZCOT0020.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 추경 로그, 예산조정 이력, 코스트센터, 원가요소, 추경 금액, 로그 저장 +- English: Budget Adjustment Log, Supplementary Budget, Cost Center, Cost Element, Database Update +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0050top-54-gt_data), [`LT_ZCOT0020`](#decl-zcoc0050f01-756-lt_zcot0020), [`P_KOKRS`](#decl-zcoc0050top-104-p_kokrs), [`LV_SEQ`](#decl-zcoc0050f01-752-lv_seq), [`P_GJAHR`](#decl-zcoc0050top-113-p_gjahr), [`P_PERBL`](#decl-zcoc0050top-114-p_perbl), [`P_TWAER`](#decl-zcoc0050top-110-p_twaer) +- 위치: `abap://ZCOC0050/ZCOC0050F01#L768-L795` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#INSERT_LOG#C2` + +### FORM DEQUEUE_ZCOT0020 — `ZCOC0050F01` L735-L742 (8줄) + +*예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 프로그램 종료 시 예산조정 이력 테이블 ZCOT0020의 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제하여 다른 사용자가 처리할 수 있게 한다. + +```abap + 737| CALL FUNCTION 'DEQUEUE_EZ_ZCOT0020' + 738| EXPORTING + 739| MODE_ZCOT0020 = 'X' + 740| MANDT = SY-MANDT. +``` + +- **EN**: Release the lock on budget adjustment log table ZCOT0020 via DEQUEUE_EZ_ZCOT0020 when leaving the program. +- 호출(파서): DEQUEUE_EZ_ZCOT0020 +- SAP 객체: DEQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 해제, 예산조정 이력, 동시성 제어 +- English: Dequeue, Lock Object, Budget Adjustment Log +- 위치: `abap://ZCOC0050/ZCOC0050F01#L737-L740` · confidence 0.95 · `ZCOC0050#ZCOC0050F01#FORM#DEQUEUE_ZCOT0020#C1` + +### FORM CALL_BG_REPORT — `ZCOC0050F01` L806-L810 (5줄) + +*부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 조회 버튼(&DIP)에서 부서 예산 현황 리포트 트랜잭션 ZCOR0030을 호출한다. + +```abap + 808| CALL TRANSACTION 'ZCOR0030'. +``` + +- **EN**: Call transaction ZCOR0030 to display the department budget report. +- 호출(파서): ZCOR0030 +- SAP 객체: ZCOR0030 +- 업무 키워드: 예산 리포트 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Report +- 위치: `abap://ZCOC0050/ZCOC0050F01#L808-L808` · confidence 0.85 · `ZCOC0050#ZCOC0050F01#FORM#CALL_BG_REPORT#C1` + +### FORM CALL_BG_ADJ_LOG — `ZCOC0050F01` L819-L823 (5줄) + +*예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 로그 버튼(&LOG)에서 예산조정 이력(ZCOT0020) 조회 트랜잭션 ZCOR0040을 호출한다. + +```abap + 821| CALL TRANSACTION 'ZCOR0040'. +``` + +- **EN**: Call transaction ZCOR0040 to display the budget adjustment log. +- 호출(파서): ZCOR0040 +- SAP 객체: ZCOR0040 +- 업무 키워드: 예산조정 이력 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Adjustment Log +- 위치: `abap://ZCOC0050/ZCOC0050F01#L821-L821` · confidence 0.85 · `ZCOC0050#ZCOC0050F01#FORM#CALL_BG_ADJ_LOG#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0050I01` L6-L36 (31줄) + +*화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 26/31줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너 해제와 ZCOT0020 잠금 해제 후 화면을 나가고, &POST 시 추경 BAPI 전기(EXECUTE_BAPI), &DIP 시 예산 리포트 ZCOR0030, &LOG 시 예산조정 이력 ZCOR0040 트랜잭션을 호출한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| PERFORM DEQUEUE_ZCOT0020 . + 18| + 19| IF GV_T_OK_CODE = 'EXIT'. + 20| LEAVE PROGRAM. + 21| ELSE. + 22| LEAVE TO SCREEN 0. + 23| ENDIF. + 24| "Function Code 맵핑 + 25| WHEN '&POST'. + 26| PERFORM EXECUTE_BAPI. + 27| WHEN '&DIP'. + 28| PERFORM CALL_BG_REPORT. + 29| WHEN '&LOG'. + 30| PERFORM CALL_BG_ADJ_LOG. + 31| + 32| WHEN OTHERS. + 33| * LEAVE PROGRAM. + 34| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: leave with container cleanup and dequeue on BACK/CANC/EXIT, run supplementary budget BAPI posting on &POST, call budget report ZCOR0030 on &DIP and adjustment log ZCOR0040 on &LOG. +- 호출(파서): CLEAR_CONTAINER_PROC, DEQUEUE_ZCOT0020, EXECUTE_BAPI, CALL_BG_REPORT, CALL_BG_ADJ_LOG +- SAP 객체: ZCOR0030, ZCOR0040, ZCOT0020 +- 업무 키워드: 기능코드 분기, 추경 전기, 예산 리포트 호출, 예산조정 로그, 잠금 해제 +- English: User Command, Supplementary Budget, Posting, Call Transaction, Dequeue +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0050top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0050c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0050/ZCOC0050I01#L9-L34` · confidence 0.9 · `ZCOC0050#ZCOC0050I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (325건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0050C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0050c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0050TOP` (33건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0050top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0050top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0050top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0050top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0050top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0050top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0050top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0050top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0050top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0050top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0050top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0050top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0050top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0050top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcoc0050top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L31-L31 {#decl-zcoc0050top-31-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0050'. +``` + +#### GC_VERSN — constants · L32-L32 {#decl-zcoc0050top-32-gc_versn} + +```abap +CONSTANTS : GC_VERSN LIKE COSP-VERSN VALUE 'B11'. " 추경 +``` + +#### GC_PLAN_CURR — constants · L33-L33 {#decl-zcoc0050top-33-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcoc0050top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L44-L49 {#decl-zcoc0050top-44-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL(10) TYPE C, + KSTAR(10) TYPE C, + WKG001(20) TYPE C, + BLTXT(50) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L52-L52 {#decl-zcoc0050top-52-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L54-L72 {#decl-zcoc0050top-54-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, + KSTAR LIKE CSKA-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, + WKG001 LIKE COSP-WKG001, + BLTXT LIKE COVJ-BLTXT, + WKG001_VIEW LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + + BAPI_RESULT TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L74-L74 {#decl-zcoc0050top-74-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L76-L80 {#decl-zcoc0050top-76-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L83-L83 {#decl-zcoc0050top-83-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL — data · L85-L88 {#decl-zcoc0050top-85-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_KSTAR — data · L90-L93 {#decl-zcoc0050top-90-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GV_ERROR_MSG — data · L95-L95 {#decl-zcoc0050top-95-gv_error_msg} + +```abap +DATA : GV_ERROR_MSG LIKE BAPIRET2-MESSAGE. +``` + +#### P_KOKRS — parameter · L104-L105 {#decl-zcoc0050top-104-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L110-L111 {#decl-zcoc0050top-110-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L113-L113 {#decl-zcoc0050top-113-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERBL — parameter · L114-L114 {#decl-zcoc0050top-114-p_perbl} + +```abap +PARAMETER : P_PERBL LIKE COSP-PERBL OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +#### P_FNAME — parameter · L119-L120 {#decl-zcoc0050top-119-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0050_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0050F01` (36건) + +#### L_UCOMM — data · unit 로컬 · L112-L112 {#decl-zcoc0050f01-112-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L156-L156 {#decl-zcoc0050f01-156-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L157-L157 {#decl-zcoc0050f01-157--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L158-L158 {#decl-zcoc0050f01-158--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L159-L159 {#decl-zcoc0050f01-159-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LT_FCAT — data · unit 로컬 · L186-L186 {#decl-zcoc0050f01-186-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L187-L187 {#decl-zcoc0050f01-187-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L188-L188 {#decl-zcoc0050f01-188-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L189-L189 {#decl-zcoc0050f01-189-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L190-L190 {#decl-zcoc0050f01-190-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L191-L191 {#decl-zcoc0050f01-191--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L192-L192 {#decl-zcoc0050f01-192--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L193-L193 {#decl-zcoc0050f01-193--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L195-L198 {#decl-zcoc0050f01-195-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_EXISTS — data · unit 로컬 · L316-L316 {#decl-zcoc0050f01-316-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LV_MESSAGE — data · unit 로컬 · L435-L435 {#decl-zcoc0050f01-435-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L436-L436 {#decl-zcoc0050f01-436-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### L_ANSWER — data · unit 로컬 · L510-L510 {#decl-zcoc0050f01-510-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L545-L545 {#decl-zcoc0050f01-545-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L546-L546 {#decl-zcoc0050f01-546-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L547-L547 {#decl-zcoc0050f01-547-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L548-L548 {#decl-zcoc0050f01-548-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L549-L549 {#decl-zcoc0050f01-549-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L550-L550 {#decl-zcoc0050f01-550-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L551-L551 {#decl-zcoc0050f01-551-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L552-L552 {#decl-zcoc0050f01-552-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_PERIOD — data · unit 로컬 · L554-L554 {#decl-zcoc0050f01-554-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_FIELD — data · unit 로컬 · L641-L641 {#decl-zcoc0050f01-641-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_INDEX — data · unit 로컬 · L642-L642 {#decl-zcoc0050f01-642-lv_index} + +```abap + DATA : LV_INDEX TYPE BAPIACPSTRU-OBJECT_INDEX. +``` + +#### — field-symbol · unit 로컬 · L644-L644 {#decl-zcoc0050f01-644--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L646-L646 {#decl-zcoc0050f01-646-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L647-L647 {#decl-zcoc0050f01-647-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_SEQ — data · unit 로컬 · L752-L752 {#decl-zcoc0050f01-752-lv_seq} + +```abap + DATA : LV_SEQ TYPE ZCOT0020-SEQ. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L753-L753 {#decl-zcoc0050f01-753-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L754-L754 {#decl-zcoc0050f01-754-lv_resultcode} + +```abap + DATA : LV_RESULTCODE(1) TYPE C. +``` + +#### LT_ZCOT0020 — data · unit 로컬 · L756-L756 {#decl-zcoc0050f01-756-lt_zcot0020} + +```abap + DATA : LT_ZCOT0020 LIKE ZCOT0020 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0050 L26-32 | 0 | INITIALIZATION 이벤트에서 SET_DYNP(관리회계영역 기본값)와 FC01_ACTIVE(양식 다운로드 버튼)를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0050 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능코드를 처리하는 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0050 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 PBO 이벤트이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0050 L42-46 | 0 | 업로드 파일 P_FNAME의 F4 파일 선택 도움(F4_FNAME)을 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC0050 L47-58 | 1 | 입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0050 L59-70 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0050C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0050C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0050C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0050C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0050C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0050C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0050C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0050C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0050C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0050C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0050C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0050C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0050C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0050C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0050C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0050C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0050C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0050C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0050C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0050C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0050C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0050C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0050C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0050C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0050C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0050F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 설정하는 LOOP AT SCREEN 화면 제어이다. | +| SET_DYNP | FORM | ZCOC0050F01 L22-29 | 0 | 초기화 시 SET_KOKRS_BASE로 관리회계영역 기본정보를 읽어 텍스트 P_BEZEI를 설정한다. | +| CHECK_INPUT | FORM | ZCOC0050F01 L38-45 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0050F01 L51-73 | 0 | 관리회계영역 기본정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 설정하고 업로드·전기 상태 플래그를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC0050F01 L87-90 | 0 | 진행률 메시지를 표시하고 READ_DATA를 호출하는 디스패치 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0050F01 L99-102 | 0 | 선택화면에 '엑셀 양식 다운로드' 버튼(FC01)을 아이콘과 함께 활성화한다. | +| CONTROL_FCXX | FORM | ZCOC0050F01 L111-123 | 1 | 선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0으로 SMW0 문서(추경 업로드 엑셀 양식)를 연다. | +| READ_DATA | FORM | ZCOC0050F01 L132-148 | 1 | 엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 검증 → 명칭 보완 순으로 추경 데이터를 읽는 흐름을 제어한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0050F01 L155-176 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0050F01 L185-275 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0050F01 L284-307 | 1 | 엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 코스트센터 대문자화, 추경금액 1000배 환산(CONVERT_1000_U), 통화 설정을 하고 숫자 변환 오류 시 중단한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0050F01 L315-333 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0050F01 L342-423 | 3 | 업로드된 추경 라인의 코스트센터·원가요소 존재 여부(CSKS/CSKT, CSKB/CSKU)와 금액(0·음수 불가)을 검증해 오류 라인을 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0050F01 L433-445 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0050F01 L454-462 | 0 | 오류 필드를 ALV 셀 색상(빨강, COL=6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EDIT_DATA | FORM | ZCOC0050F01 L471-499 | 1 | GT_DATA 각 라인에 GT_KOSTL·GT_KSTAR에서 찾은 코스트센터명·원가요소명을 보완한다. | +| EXECUTE_BAPI | FORM | ZCOC0050F01 L508-535 | 1 | 중복 전기를 막고 '예산을 추경하시겠습니까?' 확인 후 BAPI_POST_SENDER로 추경을 전기하고 INSERT_LOG로 ZCOT0020 이력을 남긴다. | +| BAPI_POST_SENDER | FORM | ZCOC0050F01 L544-622 | 1 | GT_DATA 라인별로 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')를 호출해 추경 금액을 원가 계획으로 전기하고 커밋/롤백 결과를 상태·메시지에 반영한다. | +| FILL_TABLES | FORM | ZCOC0050F01 L634-701 | 2 | 현재 GT_DATA 한 라인에 대해 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(추경 버전 B11, 월 P_PERBL, 헤더텍스트 BLTXT)와 코스트센터/원가요소/금액 테이블을 구성한다. | +| ENQUEUE_ZCOT0020 | FORM | ZCOC0050F01 L710-729 | 1 | 예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다. | +| DEQUEUE_ZCOT0020 | FORM | ZCOC0050F01 L735-742 | 1 | 예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다. | +| INSERT_LOG | FORM | ZCOC0050F01 L751-797 | 2 | BAPI 전기에 성공한 추경 라인을 예산조정 이력 테이블 ZCOT0020(BGTYPE '10' 추경)에 로그로 저장한다. | +| CALL_BG_REPORT | FORM | ZCOC0050F01 L806-810 | 1 | 부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다. | +| CALL_BG_ADJ_LOG | FORM | ZCOC0050F01 L819-823 | 1 | 예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0050I01 L6-36 | 1 | 화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0050O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0050O01 L26-71 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0050O01 L81-125 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0050O01 L133-153 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0050O01 L161-170 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0050O01 L178-200 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0050O01 L209-237 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0050O01 L310-339 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0050O01 L349-421 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0050O01 L429-456 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0060.md b/wiki/programs/ZCOC0060.md new file mode 100644 index 0000000..bf39216 --- /dev/null +++ b/wiki/programs/ZCOC0060.md @@ -0,0 +1,5368 @@ +--- +type: abap-program +title: "ZCOC0060 — 예산 조정(전용)" +description: "동일 코스트센터(부서) 내에서 Sender 원가요소의 예산을 Receiver 원가요소로 옮기는 예산 전용 프로그램이다. 엑셀(코스트센터, Sender 원가요소, Receiver 원가요소, 전용 금액, 헤더 텍스트)을 업로드해 CSKS/CSKT·CSKB/CSKU 마스터를 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender 원가요소의 가용예산(ZCOS0030)을 조회해 전용 금액이 가용예산을 초과하면 오류 처리한다. 전기 시 전용 버전 B12에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender 원가요소는 음수(-), Receiver 원가요소는 양수(+)를 한 문서로 전기하고 결과를 ZCOT0020(BGTYPE '20' 전용)에 기록한다." +resource: "abap://ZCOC0060" +tags: ["예산관리", "예산 조정", "전용", "가용예산", "코스트센터 계획", "예산조정 이력", "CO-OM-CCA", "순번 채번", "예산 조정 로그", "조정일자", "예산 전용 로그", "Sender 원가요소", "Receiver 원가요소", "전용금액", "로그 저장", "BAPI 헤더", "계획 버전", "관리회계영역", "회계연도", "기간"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:11+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKS", "CSKT", "CSKU", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0020"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DEQUEUE_EZ_ZCOT0020", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "ENQUEUE_EZ_ZCOT0020", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE"] +x-code-hash: "17e2bb8740a403d855b64c68a6d7ff729110367bef579f4cc7b48bdaa2e6e27f" +x-unit-count: 151 +x-chunk-count: 80 +x-declaration-count: 207 +--- + +## 업무 목적 + +동일 코스트센터(부서) 내에서 Sender 원가요소의 예산을 Receiver 원가요소로 옮기는 예산 전용 프로그램이다. 엑셀(코스트센터, Sender 원가요소, Receiver 원가요소, 전용 금액, 헤더 텍스트)을 업로드해 CSKS/CSKT·CSKB/CSKU 마스터를 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender 원가요소의 가용예산(ZCOS0030)을 조회해 전용 금액이 가용예산을 초과하면 오류 처리한다. 전기 시 전용 버전 B12에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender 원가요소는 음수(-), Receiver 원가요소는 양수(+)를 한 문서로 전기하고 결과를 ZCOT0020(BGTYPE '20' 전용)에 기록한다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 조회하고 엑셀 양식 다운로드 버튼(FC01)을 설정한다 (SET_DYNP, FC01_ACTIVE) +2. 양식 다운로드 버튼 클릭 시 SMW0 문서 ZCOC0060을 열어 업로드 양식을 제공한다 (CONTROL_FCXX) +3. 업로드 파일 입력 여부를 확인하고 상태 변수를 초기화한 뒤 ZCOT0020 잠금을 설정한다 (CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020) +4. 엑셀 파일을 읽어 GT_UPLOAD에 적재하고 형식 정리 후 GT_DATA로 이전하며 금액을 1000배·내부형식으로 변환한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +5. 코스트센터(CSKS/CSKT)와 Sender·Receiver 원가요소(CSKB/CSKU) 존재 여부, 금액 0/음수 여부를 검증한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +6. Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender 원가요소의 해당 월 가용예산을 조회하여 전용 금액 초과 라인을 오류 처리하고 명칭을 보완해 ALV로 표시한다 (SET_AVAIABLE_BUGDET, EDIT_DATA, DISPLAY_ALV_LIST) +7. 전용(&POST) 확인 후 라인별로 전기 직전 가용예산을 재조회하여 초과 시 오류 처리하고, Sender(-)/Receiver(+) 두 항목을 BAPI_COSTACTPLN_POSTPRIMCOST로 버전 B12에 전기한다 (EXECUTE_BAPI, BAPI_POST, GET_CURRENT_AVAILABLE_BG, FILL_TABLES) +8. 성공 라인을 ZCOT0020 예산조정 이력에 저장하고, 툴바에서 예산 현황(ZCOR0030)·조정 이력(ZCOR0040)을 호출할 수 있다 (INSERT_LOG, CALL_BG_REPORT, CALL_BG_ADJ_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (KOSTL, KSTAR_S Sender 원가요소, KSTAR_R Receiver 원가요소, WKG001 전용금액, BLTXT) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 전용 대상 메인 ALV 테이블 (KOSTL, KSTAR_S/ST, KSTAR_R/RT, WKG001, BG_AVAILABLE 가용예산, BAPI_RESULT, STATUS, MESSAGE) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, SET_AVAIABLE_BUGDET, EDIT_DATA, BAPI_POST / 소비: DISPLAY_ALV_LIST, FILL_TABLES, INSERT_LOG, SHOW_LOG_POP) +- `GT_ZCOS0030` — Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과: 코스트센터/원가요소별 가용예산 (채움: SET_AVAIABLE_BUGDET / 소비: SET_AVAIABLE_BUGDET) +- `GT_KOSTL` — 유효 코스트센터·명칭 (CSKS JOIN CSKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_KSTAR` — 유효 원가요소·명칭 (CSKB JOIN CSKU) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKS, CSKT, CSKU, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0020 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DEQUEUE_EZ_ZCOT0020, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, ENQUEUE_EZ_ZCOT0020, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM + +## 로직 조각 (80건 / unit 67개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0060F01` L111-L123 (13줄) + +*선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 예산 전용 업로드 엑셀 양식(GC_SMW0)을 연다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 사용자 명령이 FC01(엑셀 양식 다운로드)이면 Z_CO_OPEN_SMW0를 호출해 SMW0 웹 리포지토리 문서 GC_SMW0를 '예산 조정 - 전용 Upload 양식' 제목으로 열어 사용자에게 업로드 양식을 제공한다. + +```abap + 115| CASE L_UCOMM. + 116| WHEN 'FC01'. + 117| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 118| EXPORTING + 119| P_DOCNAM = GC_SMW0 + 120| P_TITLE = '예산 조정 - 전용 Upload 양식'(F03). + 121| ENDCASE. +``` + +- **EN**: On function code FC01, calls Z_CO_OPEN_SMW0 to open the SMW0 web repository document holding the budget transfer upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 양식, SMW0 문서 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0060f01-112-l_ucomm), [`GC_SMW0`](#decl-zcoc0060top-31-gc_smw0) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L115-L121` · confidence 0.88 · `ZCOC0060#ZCOC0060F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0060` L47-L58 (12줄) + +*입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다.* + +> 이 unit 의 조각 1개가 6/12줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHECK_INPUT으로 파일 입력을 검증하고 INITIALIZE_DATA 후 ENQUEUE_ZCOT0020으로 잠금을 건 뒤 PROCESS_DATA로 엑셀 추경 데이터를 읽어 검증한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| + 52| PERFORM ENQUEUE_ZCOT0020 USING GV_LOCK. + 53| + 54| PERFORM PROCESS_DATA. +``` + +- **EN**: Main flow: validate input, initialize, lock ZCOT0020, then read and validate the uploaded supplementary budget data. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020, PROCESS_DATA +- SAP 객체: ZCOT0020 +- 업무 키워드: 메인 흐름, 입력 검증, 잠금, 엑셀 업로드 +- English: Main Processing, Enqueue, Excel Upload +- 정의부(복사 시 함께 필요): [`GV_LOCK`](#decl-zcoc0060top-21-gv_lock) +- 위치: `abap://ZCOC0060/ZCOC0060#L49-L54` · confidence 0.85 · `ZCOC0060#ZCOC0060#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0060F01` L38-L45 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 40| IF P_FNAME IS INITIAL. + 41| MESSAGE S000 DISPLAY LIKE 'E' WITH + 42| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 43| LEAVE LIST-PROCESSING. + 44| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0060top-125-p_fname) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L40-L44` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM ENQUEUE_ZCOT0020 — `ZCOC0060F01` L759-L778 (20줄) + +*예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다.* + +> 이 unit 의 조각 1개가 18/20줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] ENQUEUE_EZ_ZCOT0020으로 ZCOT0020 테이블 전체 잠금을 요청하고, 타 사용자 잠금(FOREIGN_LOCK) 등 실패 시 시스템 메시지를 I 타입으로 보여주고 P_ERR='X'를 반환한다. + +```abap + 760| CALL FUNCTION 'ENQUEUE_EZ_ZCOT0020' + 761| EXPORTING + 762| MODE_ZCOT0020 = 'X' + 763| MANDT = SY-MANDT + 764| EXCEPTIONS + 765| FOREIGN_LOCK = 1 + 766| SYSTEM_FAILURE = 2 + 767| OTHERS = 3. + 768| + 769| IF SY-SUBRC <> 0. + 770| * Retrieve message displayed within Function Module + 771| MESSAGE ID SY-MSGID + 772| TYPE 'I' + 773| NUMBER SY-MSGNO + 774| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 775| P_ERR = 'X'. + 776| EXIT. + 777| ENDIF. +``` + +- **EN**: Request an exclusive lock on ZCOT0020 via ENQUEUE_EZ_ZCOT0020; on FOREIGN_LOCK or failure show the system message and return error flag P_ERR. +- 호출(파서): ENQUEUE_EZ_ZCOT0020 +- SAP 객체: ENQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 설정, 예산조정 이력, 동시 실행 방지, 잠금 오류 +- English: Enqueue, Lock Object, Foreign Lock, Budget Adjustment Log +- 위치: `abap://ZCOC0060/ZCOC0060F01#L760-L777` · confidence 0.95 · `ZCOC0060#ZCOC0060F01#FORM#ENQUEUE_ZCOT0020#C1` + +### FORM READ_DATA — `ZCOC0060F01` L132-L148 (17줄) + +*엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 마스터 검증·텍스트 보완·가용예산 조회의 전체 데이터 읽기 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 15/17줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] P_FNAME 엑셀을 업로드하고 GT_UPLOAD가 비어 있지 않으면 SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, EDIT_DATA, SET_AVAIABLE_BUGDET을 차례로 수행해 전용 대상 데이터를 준비한다. + +```abap + 133| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 134| + 135| CHECK GT_UPLOAD[] IS NOT INITIAL. + 136| + 137| "2. 업로드가 제대로 되었다면. + 138| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 139| + 140| "3. 엑셀 데이터를 인터널 테이블로 이전 + 141| PERFORM TRANSFER_GT_DATA. + 142| PERFORM CONVERT_KRW_DATA. + 143| + 144| "4. Validation + 145| PERFORM VALIDATION_CHECK. + 146| PERFORM EDIT_DATA. + 147| PERFORM SET_AVAIABLE_BUGDET. +``` + +- **EN**: Orchestrates upload of the Excel file, format cleanup, transfer to GT_DATA with currency conversion, master validation, text enrichment and available budget lookup. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, EDIT_DATA, SET_AVAIABLE_BUGDET +- 업무 키워드: 업로드 처리 흐름, 검증, 가용예산, 데이터 준비 +- English: Upload Processing, Validation, Available Budget +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0060top-125-p_fname), [`GT_UPLOAD`](#decl-zcoc0060top-44-gt_upload) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L133-L147` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0060F01` L315-L333 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 318| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 319| + 320| IF L_EXISTS = ABAP_FALSE. + 321| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 322| LEAVE LIST-PROCESSING. + 323| EXIT. + 324| ENDIF. + 325| + 326| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 327| 'GS_UPLOAD' + 328| P_NAME + 329| 1 "S_COL-LOW + 330| 2 "S_ROW-LOW + 331| 256 "S_COL-HIGH + 332| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0060f01-316-l_exists) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L318-L332` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0060top-125-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0060F01` L185-L275 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 204| L_TABNAME = P_STRUCT_NM. + 205| + 206| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 207| USING L_TABNAME. + 208| + 209| SELECT DOMNAME LOWERCASE + 210| INTO TABLE LT_LOWERCASE + 211| FROM DD01L + 212| FOR ALL ENTRIES IN LT_FCAT + 213| WHERE DOMNAME = LT_FCAT-DOMNAME + 214| AND AS4LOCAL = 'A'. + 215| + 216| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0060f01-187-l_tabname), [`LT_FCAT`](#decl-zcoc0060f01-186-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0060f01-195-lt_lowercase) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L204-L216` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 218| LOOP AT LT_FCAT ASSIGNING . + 219| CASE -DATATYPE. + 220| " 숫자 타입 + 221| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 222| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 223| L_TYPE = 'NUMB'. + 224| " 날짜 + 225| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 226| L_TYPE = 'DATS'. + 227| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 228| "CHECK BOX + 229| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 230| L_TYPE = 'CHCK'. + 231| ENDIF. + 232| WHEN OTHERS. + 233| ENDCASE. + 234| + 235| IF -CONVEXIT IS NOT INITIAL. + 236| L_CONV_ALPHA = 'X'. + 237| ENDIF. + 238| + 239| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 240| CONTINUE. + 241| ENDIF. + 242| + 243| LOOP AT GT_UPLOAD ASSIGNING . + 244| CONCATENATE '-' -FIELDNAME + 245| INTO L_FSNAME. + 246| ASSIGN (L_FSNAME) TO . + 247| + 248| IF SY-SUBRC EQ 0. + 249| CASE L_TYPE. + 250| WHEN 'NUMB'. + 251| PERFORM BDC_CURR USING . + 252| WHEN 'DATS'. + 253| PERFORM BDC_DATE USING . + 254| WHEN 'CHCK'. + 255| PERFORM BDC_CHECKBOX USING . + 256| WHEN OTHERS. + 257| ENDCASE. + 258| + 259| IF L_CONV_ALPHA = 'X'. + 260| PERFORM ZERO_I USING . + 261| ENDIF. + 262| + 263| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 264| BINARY SEARCH. + 265| + 266| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 267| TRANSLATE TO UPPER CASE. + 268| ENDIF. + 269| ENDIF. + 270| ENDLOOP. + 271| + 272| CLEAR : L_TYPE. + 273| CLEAR : L_CONV_ALPHA. + 274| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0060f01-186-lt_fcat), [``](#decl-zcoc0060f01-193--fs_fcat-), [`L_TYPE`](#decl-zcoc0060f01-189-l_type), [`L_CONV_ALPHA`](#decl-zcoc0060f01-190-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0060top-44-gt_upload), [``](#decl-zcoc0060f01-191--fs_upload-), [`L_FSNAME`](#decl-zcoc0060f01-188-l_fsname), [``](#decl-zcoc0060f01-192--fs-), [`LT_LOWERCASE`](#decl-zcoc0060f01-195-lt_lowercase) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L218-L274` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0060F01` L284-L307 (24줄) + +*엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 옮기며 코스트센터 대문자화, 초기 상태 설정, 전용 금액 1000배(CONVERT_1000_U) 변환, 통화 세팅을 수행하고 숫자 변환 오류를 처리한다.* + +> 이 unit 의 조각 1개가 22/24줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 GT_DATA로 MOVE-CORRESPONDING하고 코스트센터를 대문자로, 상태를 INIT으로, 천 단위 입력 금액(WKG001)을 CONVERT_1000_U로 실제 금액으로 변환하며 통화 P_TWAER를 세팅한다; 숫자 변환 예외(CX_SY_CONVERSION_NO_NUMBER) 시 오류 메시지 후 중단하고 마지막에 KOSTL/KSTAR_S/KSTAR_R로 정렬한다. + +```abap + 285| TRY. + 286| LOOP AT GT_UPLOAD. + 287| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 288| TRANSLATE GT_DATA-KOSTL TO UPPER CASE. + 289| GT_DATA-STATUS = GC_STATUS_INIT. + 290| GT_DATA-WKG001_VIEW = GT_DATA-WKG001. + 291| + 292| PERFORM CONVERT_1000_U USING GT_DATA-WKG001 + 293| CHANGING GT_DATA-WKG001. + 294| + 295| GT_DATA-TWAER = P_TWAER. + 296| + 297| APPEND GT_DATA. + 298| CLEAR : GT_DATA. + 299| ENDLOOP. + 300| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 301| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F04) + 302| DISPLAY LIKE 'E'. + 303| LEAVE LIST-PROCESSING. + 304| ENDTRY. + 305| + 306| SORT GT_DATA BY KOSTL KSTAR_S KSTAR_R. +``` + +- **EN**: Transfers uploaded Excel rows into GT_DATA, upper-cases cost center, sets initial status, scales the transfer amount by 1000 via CONVERT_1000_U, assigns currency, and aborts with a message on CX_SY_CONVERSION_NO_NUMBER. +- 호출(파서): CONVERT_1000_U +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 천 단위 금액, 전용금액, 숫자 변환 오류, 정렬 +- English: Excel Upload, Amount Scaling, Data Transfer, Conversion Error +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0060top-44-gt_upload), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0060top-116-p_twaer) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L285-L306` · confidence 0.88 · `ZCOC0060#ZCOC0060F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0060F01` L155-L176 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 161| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 162| WHERE DATATYPE = 'CURR'. + 163| + 164| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 165| INTO LV_FIELD. + 166| + 167| LOOP AT GT_DATA ASSIGNING . + 168| ASSIGN (LV_FIELD) TO . + 169| + 170| IF SY-SUBRC EQ 0. + 171| PERFORM CONV_DB_WAERS USING GV_WAERS. + 172| ENDIF. + 173| ENDLOOP. + 174| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0060top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0060f01-156-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0060f01-159-lv_field), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [``](#decl-zcoc0060f01-158--fs_data-), [``](#decl-zcoc0060f01-157--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L161-L174` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0060F01` L342-L436 (95줄) + +*업로드 행의 코스트센터(CSKS/CSKT)와 Sender·Receiver 원가요소(CSKB/CSKU) 존재 여부, 전용 금액의 0/음수 여부를 검증해 오류 행을 표시한다.* + +> 이 unit 의 조각 3개가 88/95줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드된 코스트센터에 대해 관리회계영역·유효기간(DATAB~DATBI가 오늘 포함)·로그온 언어 조건으로 CSKS JOIN CSKT에서 유효 코스트센터와 명칭을 GT_KOSTL에 조회한다. + +```abap + 345| SELECT A~KOSTL B~KTEXT AS KOSTL_T + 346| FROM CSKS AS A INNER JOIN CSKT AS B + 347| ON A~KOKRS = B~KOKRS + 348| AND A~KOSTL = B~KOSTL + 349| AND A~DATBI = B~DATBI + 350| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 351| FOR ALL ENTRIES IN GT_DATA + 352| WHERE A~KOKRS = P_KOKRS + 353| AND A~KOSTL = GT_DATA-KOSTL + 354| AND A~DATBI >= SY-DATUM + 355| AND A~DATAB <= SY-DATUM + 356| AND B~SPRAS = SY-LANGU. + 357| + 358| SORT GT_KOSTL BY KOSTL. +``` + +- **EN**: Selects valid cost centers and their texts from CSKS joined with CSKT (FOR ALL ENTRIES on uploaded rows, valid on today) into GT_KOSTL. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKS, CSKT +- 업무 키워드: 코스트센터 마스터, 유효기간, 코스트센터명, 존재 검증 +- English: Cost Center Master, Validity Period, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KOSTL`](#decl-zcoc0060top-91-gt_kostl), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L345-L358` · confidence 0.93 · `ZCOC0060#ZCOC0060F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] 업로드된 Sender·Receiver 원가요소에 대해 관리회계영역·유효기간·언어 조건으로 CSKB JOIN CSKU에서 유효 원가요소와 명칭을 GT_KSTAR에 조회한다. + +```abap + 360| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 361| FROM CSKB AS A INNER JOIN CSKU AS B + 362| ON A~KSTAR = B~KSTAR + 363| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 364| FOR ALL ENTRIES IN GT_DATA + 365| WHERE A~KOKRS = P_KOKRS + 366| AND ( A~KSTAR = GT_DATA-KSTAR_S + 367| OR A~KSTAR = GT_DATA-KSTAR_R ) + 368| AND SPRAS = SY-LANGU + 369| AND A~DATBI >= SY-DATUM + 370| AND A~DATAB <= SY-DATUM. + 371| + 372| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Selects valid cost elements (sender and receiver) with texts from CSKB joined with CSKU into GT_KSTAR. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU +- 업무 키워드: 원가요소 마스터, Sender 원가요소, Receiver 원가요소, 원가요소명 +- English: Cost Element Master, Cost Element Text, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0060top-96-gt_kstar), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L360-L372` · confidence 0.93 · `ZCOC0060#ZCOC0060F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행별로 전용 금액이 0이거나 음수인지, 코스트센터가 GT_KOSTL에 없는지, Sender/Receiver 원가요소가 GT_KSTAR에 없는지 검사해 오류 메시지·RED 상태·필드 강조(SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE)를 설정하고 GV_UPLOAD_ERROR를 세운다. + +```abap + 374| LOOP AT GT_DATA. + 375| + 376| IF GT_DATA-WKG001 = 0. + 377| GT_DATA-MESSAGE = '금액이 입력되지 않았습니다.'(F10). + 378| GT_DATA-STATUS = GC_STATUS_RED. + 379| GV_UPLOAD_ERROR = 'X'. + 380| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 381| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 382| GT_DATA-MESSAGE. + 383| ENDIF. + 384| + 385| IF GT_DATA-WKG001 < 0. + 386| GT_DATA-MESSAGE = '양수(+) 금액만 입력하여 주십시오'(F11). + 387| GT_DATA-STATUS = GC_STATUS_RED. + 388| GV_UPLOAD_ERROR = 'X'. + 389| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 390| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 391| GT_DATA-MESSAGE. + 392| ENDIF. + 393| + 394| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 395| BINARY SEARCH. + 396| + 397| IF SY-SUBRC NE 0. + 398| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다'(F05). + 399| GT_DATA-STATUS = GC_STATUS_RED. + 400| GV_UPLOAD_ERROR = 'X'. + 401| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 402| PERFORM ADD_DATA_MESSAGE USING 'KOSTL' + 403| GT_DATA-MESSAGE. + 404| CONTINUE. + 405| ENDIF. + 406| + 407| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_S + 408| BINARY SEARCH. + 409| + 410| IF SY-SUBRC NE 0. + 411| GT_DATA-MESSAGE = '존재하지 않는 Sender 원가요소입니다'(F06). + 412| GT_DATA-STATUS = GC_STATUS_RED. + 413| GV_UPLOAD_ERROR = 'X'. + 414| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 415| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 416| GT_DATA-MESSAGE. + 417| ENDIF. + 418| + 419| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_R + 420| BINARY SEARCH. + 421| + 422| IF SY-SUBRC NE 0. + 423| GT_DATA-MESSAGE = '존재하지 않는 Receiver 원가요소입니다'(F07). + 424| GT_DATA-STATUS = GC_STATUS_RED. + 425| GV_UPLOAD_ERROR = 'X'. + 426| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_R'. + 427| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_R' + 428| GT_DATA-MESSAGE. + 429| ENDIF. + 430| + 431| MODIFY GT_DATA. CLEAR : GT_DATA. + 432| CLEAR : GT_KOSTL, GT_KSTAR. + 433| + 434| ENDLOOP. +``` + +- **EN**: Validates each row: transfer amount must be positive, cost center must exist in CSKS, sender and receiver cost elements must exist in CSKB; errors are marked red with messages and set GV_UPLOAD_ERROR. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, CSKB +- 업무 키워드: 업로드 검증, 금액 검증, 코스트센터 존재, 원가요소 존재, 오류 표시 +- English: Validation, Cost Center, Cost Element, Amount Check, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0060top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0060top-91-gt_kostl), [`GT_KSTAR`](#decl-zcoc0060top-96-gt_kstar) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L374-L434` · confidence 0.92 · `ZCOC0060#ZCOC0060F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC0060F01` L446-L458 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 451| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 452| WITH KEY FIELDNAME = P_FIELD. + 453| + 454| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 455| INTO LV_MESSAGE. + 456| + 457| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0060top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0060f01-449-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0060f01-448-lv_message), [`GT_DATA`](#decl-zcoc0060top-55-gt_data) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L451-L457` · confidence 0.8 · `ZCOC0060#ZCOC0060F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC0060F01` L484-L515 (32줄) + +*GT_DATA 각 행에 GT_KOSTL·GT_KSTAR에서 조회한 코스트센터명과 Sender/Receiver 원가요소명을 채운다.* + +> 이 unit 의 조각 1개가 28/32줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] ALV 표시를 위해 GT_DATA 각 행에 코스트센터 텍스트(CSKT KTEXT)와 Sender/Receiver 원가요소 텍스트(CSKU KTEXT)를 마스터 내부테이블에서 BINARY SEARCH로 매핑한다. + +```abap + 486| LOOP AT GT_DATA. + 487| + 488| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 489| BINARY SEARCH. + 490| + 491| IF SY-SUBRC EQ 0. + 492| GT_DATA-KOSTL_T = GT_KOSTL-KOSTL_T. + 493| ENDIF. + 494| + 495| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_S + 496| BINARY SEARCH. + 497| + 498| IF SY-SUBRC EQ 0. + 499| GT_DATA-KSTAR_ST = GT_KSTAR-KSTAR_T. + 500| ENDIF. + 501| + 502| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_R + 503| BINARY SEARCH. + 504| + 505| IF SY-SUBRC EQ 0. + 506| GT_DATA-KSTAR_RT = GT_KSTAR-KSTAR_T. + 507| ENDIF. + 508| + 509| CLEAR : GT_KOSTL, GT_KSTAR. + 510| + 511| MODIFY GT_DATA. CLEAR : GT_DATA. + 512| + 513| ENDLOOP. +``` + +- **EN**: Enriches each GT_DATA row with cost center name (CSKT) and sender/receiver cost element names (CSKU) from the buffered master tables for ALV display. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: CSKT, CSKU +- 업무 키워드: 코스트센터명, 원가요소명, 텍스트 매핑, 마스터 조회 +- English: Cost Center Text, Cost Element Text, Master Data Lookup +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GT_KOSTL`](#decl-zcoc0060top-91-gt_kostl), [`GT_KSTAR`](#decl-zcoc0060top-96-gt_kstar) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L486-L513` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#EDIT_DATA#C1` + +### FORM SET_AVAIABLE_BUGDET — `ZCOC0060F01` L855-L915 (61줄) + +*업로드된 모든 행의 코스트센터·Sender 원가요소에 대해 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 가용예산을 일괄 조회해 GT_DATA에 세팅하고 전용 금액이 가용예산을 초과하는 행을 오류 처리한다.* + +> 이 unit 의 조각 2개가 48/61줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_DATA의 코스트센터(ZCOS0010)·Sender 원가요소(ZCOS0020) 목록을 만들어 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 호출, 해당 기간의 코스트센터/원가요소별 가용예산 GT_ZCOS0030을 조회하고 정렬한다. + +```abap + 865| LOOP AT GT_DATA. + 866| LT_ZCOS0010-KOSTL = GT_DATA-KOSTL. + 867| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 868| + 869| LT_ZCOS0020-KSTAR = GT_DATA-KSTAR_S. + 870| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 871| ENDLOOP. + 872| + 873| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 874| EXPORTING + 875| I_KOKRS = P_KOKRS + 876| I_GJAHR = P_GJAHR + 877| I_S_PERBL = P_PERBL + 878| I_E_PERBL = P_PERBL + 879| IMPORTING + 880| E_RESULTCODE = LV_RESULTCODE + 881| E_RESULTMSG = LV_RESULTMSG + 882| TABLES + 883| IT_KOSTL = LT_ZCOS0010 + 884| IT_KSTAR = LT_ZCOS0020 + 885| ET_ZCOS0030 = GT_ZCOS0030. + 886| + 887| SORT GT_ZCOS0030 BY KOSTL KSTAR. +``` + +- **EN**: Collects cost centers and sender cost elements from GT_DATA and calls Z_CO_SEL_KOSTL_BUDGET_ACTUAL to fetch available budget per cost center / cost element for the period into GT_ZCOS0030. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산 조회, 코스트센터, Sender 원가요소, 기간별 예산 +- English: Available Budget, Cost Center, Cost Element, Budget vs Actual +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`LT_ZCOS0010`](#decl-zcoc0060f01-856-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0060f01-857-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0060top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0060top-120-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0060f01-858-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0060f01-859-lv_resultmsg), [`GT_ZCOS0030`](#decl-zcoc0060top-101-gt_zcos0030) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L865-L887` · confidence 0.92 · `ZCOC0060#ZCOC0060F01#FORM#SET_AVAIABLE_BUGDET#C1` + +#### [validation] 행별로 GT_ZCOS0030에서 Sender 원가요소 가용예산(BG_AVAILABLE)을 읽어 GT_DATA에 세팅(1000 단위 표시값 변환)하고, 전용 금액 WKG001이 가용예산보다 크면 오류 메시지·RED 상태·필드 강조로 표시한다. + +```abap + 889| LOOP AT GT_DATA. + 890| + 891| " SENDER 계정의 가용예산을 체크. + 892| READ TABLE GT_ZCOS0030 WITH KEY + 893| KOSTL = GT_DATA-KOSTL + 894| KSTAR = GT_DATA-KSTAR_S BINARY SEARCH. + 895| + 896| IF SY-SUBRC EQ 0. + 897| GT_DATA-BG_AVAILABLE = GT_ZCOS0030-BG_AVAILABLE. + 898| PERFORM CONVERT_1000_D USING GT_DATA-BG_AVAILABLE + 899| CHANGING GT_DATA-BG_AVABLE_VIEW. + 900| ENDIF. + 901| + 902| IF GT_DATA-WKG001 > + 903| GT_DATA-BG_AVAILABLE. + 904| GT_DATA-MESSAGE = '해당 Sender 원가요소의 가용예산보다 많은 금액이 입력되었습니다.'(F11). + 905| GT_DATA-STATUS = GC_STATUS_RED. + 906| GV_UPLOAD_ERROR = 'X'. + 907| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 908| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 909| GT_DATA-MESSAGE. + 910| ENDIF. + 911| + 912| MODIFY GT_DATA. CLEAR : GT_DATA. + 913| ENDLOOP. +``` + +- **EN**: Assigns the sender cost element's available budget to each row and flags rows whose transfer amount exceeds the available budget as errors with a message and red highlight. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOS0030 +- 업무 키워드: 예산 초과 검증, 가용예산, 전용금액, 오류 표시, 천 단위 변환 +- English: Budget Check, Available Budget, Validation, Transfer Amount +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GT_ZCOS0030`](#decl-zcoc0060top-101-gt_zcos0030), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0060top-22-gv_upload_error) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L889-L913` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#SET_AVAIABLE_BUGDET#C2` + +### EVENT END-OF-SELECTION — `ZCOC0060` L59-L70 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 60| IF SY-BATCH NE 'X'. + 61| IF GT_DATA[] IS NOT INITIAL. + 62| CALL SCREEN 100. + 63| ELSE. + 64| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 65| ENDIF. + 66| ELSE. + 67| IF GT_DATA[] IS NOT INITIAL. + 68| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 69| ENDIF. + 70| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data) +- 위치: `abap://ZCOC0060/ZCOC0060#L60-L70` · confidence 0.85 · `ZCOC0060#ZCOC0060#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0060/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0060/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0060/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0060/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0060/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0060#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0060#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0060/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0060#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM EXECUTE_BAPI — `ZCOC0060F01` L524-L550 (27줄) + +*중복 전기 여부를 확인하고 사용자 확인 팝업 후 BAPI_POST(예산 전용 전기)와 INSERT_LOG(ZCOT0020 로그 기록)를 순서대로 수행한다.* + +> 이 unit 의 조각 1개가 17/27줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 전기된 경우(GV_ALREADY_POST) 오류 메시지로 중단하고, POPUP_TO_CONFIRM_02로 예산 전용 여부 확인(J) 후 전기 플래그를 세우고 BAPI_POST와 INSERT_LOG를 실행한다. + +```abap + 533| IF GV_ALREADY_POST = 'X'. + 534| MESSAGE S000 DISPLAY LIKE 'E' WITH + 535| '이미 처리하였습니다'(F08). + 536| EXIT. + 537| ENDIF. + 538| + 539| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 540| '예산을 전용하시겠습니까?'(F09) ' ' + 541| CHANGING L_ANSWER. + 542| IF L_ANSWER <> 'J'. + 543| EXIT. + 544| ENDIF. + 545| + 546| GV_ALREADY_POST = 'X'. + 547| + 548| PERFORM BAPI_POST. + 549| PERFORM INSERT_LOG. +``` + +- **EN**: Prevents duplicate posting, asks user confirmation via POPUP_TO_CONFIRM_02, then runs BAPI_POST (budget transfer posting) and INSERT_LOG (ZCOT0020 log). +- 호출(파서): POPUP_TO_CONFIRM_02, BAPI_POST, INSERT_LOG +- SAP 객체: POPUP_TO_CONFIRM_02, ZCOT0020 +- 업무 키워드: 중복 전기 방지, 확인 팝업, 예산 전용, 로그 기록 +- English: Duplicate Posting Check, Confirmation Popup, Budget Transfer +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0060top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0060f01-526-l_answer) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L533-L549` · confidence 0.88 · `ZCOC0060#ZCOC0060F01#FORM#EXECUTE_BAPI#C1` + +### FORM BAPI_POST — `ZCOC0060F01` L559-L651 (93줄) + +*GT_DATA 각 행에 대해 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender(-)/Receiver(+) 예산 전용을 전기하고 COMMIT/ROLLBACK 결과를 행 상태에 기록한다.* + +> 이 unit 의 조각 2개가 54/93줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 이후 실적 비용이 발생했을 수 있으므로 GET_CURRENT_AVAILABLE_BG(Z_CO_SEL_KOSTL_BUDGET_ACTUAL)로 Sender 원가요소 가용예산을 재조회해 전용 금액이 초과하면 행을 오류(RED) 처리한다. + +```abap + 586| CLEAR : LV_BG_OVER. + 587| " 업로드 ~ 전기 사이에 비용이 들어왔을 경우 다시 가용예산을 계산함. + 588| PERFORM GET_CURRENT_AVAILABLE_BG USING GT_DATA-KOSTL + 589| GT_DATA-KSTAR_S GT_DATA-WKG001 LV_BG_OVER. + 590| + 591| IF LV_BG_OVER = 'X'. " 그 사이에 비용이 들어왔다면 에러로. + 592| GT_DATA-MESSAGE = '업로드 이후 가용예산이 변경되어 더 많은 금액이 입력되었습니다. '(F12). + 593| GT_DATA-STATUS = GC_STATUS_RED. + 594| GV_UPLOAD_ERROR = 'X'. + 595| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 596| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 597| GT_DATA-MESSAGE. +``` + +- **EN**: Re-checks the sender cost element's available budget right before posting via GET_CURRENT_AVAILABLE_BG and marks the row as error if the transfer amount now exceeds it. +- 호출(파서): GET_CURRENT_AVAILABLE_BG, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0030 +- 업무 키워드: 가용예산 재검증, 예산 초과, Sender 원가요소, 전기 전 검증 +- English: Available Budget, Budget Check, Pre-posting Validation +- 정의부(복사 시 함께 필요): [`LV_BG_OVER`](#decl-zcoc0060f01-570-lv_bg_over), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0060top-22-gv_upload_error) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L586-L597` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#BAPI_POST#C1` + +#### [fm_call] FILL_TABLES로 헤더·CO오브젝트·값 테이블을 채운 뒤 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 전용 버전에 1차 원가 계획을 전기하고, RETURN이 비면 BAPI_TRANSACTION_COMMIT 후 성공(GP 510 메시지, BAPI_RESULT 'S'), 오류면 BAPI_TRANSACTION_ROLLBACK 후 마지막 RETURN 메시지를 행에 기록한다. + +```abap + 600| PERFORM FILL_TABLES + 601| TABLES LT_INDEXSTRUCTURE + 602| LT_COOBJECT + 603| LT_TOTVALUE + 604| USING LV_PERIOD + 605| CHANGING LS_HEADERINFO. + 606| + 607| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 608| EXPORTING + 609| HEADERINFO = LS_HEADERINFO + 610| DELTA = 'X' + 611| TABLES + 612| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 613| COOBJECT = LT_COOBJECT + 614| PERVALUE = LT_PERVALUE + 615| TOTVALUE = LT_TOTVALUE + 616| CONTRL = LT_CONTRL + 617| RETURN = LT_RETURN. + 618| + 619| IF LT_RETURN[] IS INITIAL. + 620| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 621| EXPORTING + 622| WAIT = 'X'. + 623| + 624| GT_DATA-STATUS = GC_STATUS_GREEN. + 625| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 626| INTO GT_DATA-MESSAGE + 627| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 628| + 629| GT_DATA-BAPI_RESULT = 'S'. + 630| + 631| ELSE. + 632| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 633| + 634| LOOP AT LT_RETURN INTO LS_RETURN. + 635| ENDLOOP. + 636| + 637| GT_DATA-BAPI_RESULT = 'E'. + 638| + 639| GT_DATA-MESSAGE = LS_RETURN-MESSAGE. + 640| GT_DATA-STATUS = GC_STATUS_RED. + 641| ENDIF. +``` + +- **EN**: Posts the budget transfer as delta primary cost planning via BAPI_COSTACTPLN_POSTPRIMCOST, commits with BAPI_TRANSACTION_COMMIT on success or rolls back with BAPI_TRANSACTION_ROLLBACK and stores the return message on the row. +- 호출(파서): FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 예산 전용 전기, 1차 원가 계획, 커밋, 롤백, 전기 결과 +- English: Primary Cost Planning, Delta Posting, BAPI Commit, Rollback, Return Message +- 정의부(복사 시 함께 필요): [`LT_INDEXSTRUCTURE`](#decl-zcoc0060f01-561-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0060f01-562-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0060f01-564-lt_totvalue), [`LV_PERIOD`](#decl-zcoc0060f01-569-lv_period), [`LS_HEADERINFO`](#decl-zcoc0060f01-560-ls_headerinfo), [`LT_PERVALUE`](#decl-zcoc0060f01-563-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0060f01-565-lt_contrl), [`LT_RETURN`](#decl-zcoc0060f01-566-lt_return), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LS_RETURN`](#decl-zcoc0060f01-567-ls_return), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L600-L641` · confidence 0.93 · `ZCOC0060#ZCOC0060F01#FORM#BAPI_POST#C2` + +### FORM GET_CURRENT_AVAILABLE_BG — `ZCOC0060F01` L924-L967 (44줄) + +*코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다.* + +> 이 unit 의 조각 1개가 26/44줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 코스트센터(ZCOS0010)·원가요소(ZCOS0020)를 조건으로 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 호출해 해당 기간 가용예산(ZCOS0030-BG_AVAILABLE)을 얻고, 전용 금액이 가용예산보다 크면 P_WKG_OVER='X'로 예산 초과를 표시한다. + +```abap + 940| LT_ZCOS0010-KOSTL = P_KOSTL. + 941| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 942| + 943| LT_ZCOS0020-KSTAR = P_KSTAR. + 944| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 945| + 946| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 947| EXPORTING + 948| I_KOKRS = P_KOKRS + 949| I_GJAHR = P_GJAHR + 950| I_S_PERBL = P_PERBL + 951| I_E_PERBL = P_PERBL + 952| IMPORTING + 953| E_RESULTCODE = LV_RESULTCODE + 954| E_RESULTMSG = LV_RESULTMSG + 955| TABLES + 956| IT_KOSTL = LT_ZCOS0010 + 957| IT_KSTAR = LT_ZCOS0020 + 958| ET_ZCOS0030 = LT_ZCOS0030. + 959| + 960| READ TABLE LT_ZCOS0030 INDEX 1. + 961| + 962| IF P_TRANS_WKG > + 963| LT_ZCOS0030-BG_AVAILABLE. + 964| P_WKG_OVER = 'X'. + 965| ENDIF. +``` + +- **EN**: Calls Z_CO_SEL_KOSTL_BUDGET_ACTUAL for the cost center / cost element and period, reads the available budget (ZCOS0030-BG_AVAILABLE) and flags budget overrun when the transfer amount exceeds it. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산, 예산 초과 검증, 코스트센터, 원가요소, 전용금액 +- English: Available Budget, Budget Check, Cost Center, Cost Element +- 정의부(복사 시 함께 필요): [`LT_ZCOS0010`](#decl-zcoc0060f01-928-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0060f01-929-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0060top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0060top-120-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0060f01-932-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0060f01-933-lv_resultmsg), [`LT_ZCOS0030`](#decl-zcoc0060f01-930-lt_zcos0030) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L940-L965` · confidence 0.92 · `ZCOC0060#ZCOC0060F01#FORM#GET_CURRENT_AVAILABLE_BG#C1` + +### FORM FILL_TABLES — `ZCOC0060F01` L663-L750 (88줄) + +*GT_DATA 한 행의 전용 금액을 Sender 원가요소 음수(-)·Receiver 원가요소 양수(+) 두 라인으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(BAPIPLNHDR)·인덱스·CO 오브젝트·값 테이블에 채운다.* + +> 이 unit 의 조각 3개가 50/88줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BAPI 헤더(BAPIPLNHDR)에 관리회계영역, 회계연도, 기간(from=to), 전용 버전 GC_VERSN(B12), 문서 헤더 텍스트, 계획 통화유형을 설정한다. + +```abap + 685| " 1. 헤더 작성 + 686| ES_HEADERINFO-CO_AREA = P_KOKRS. + 687| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 688| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 689| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 690| ES_HEADERINFO-VERSION = GC_VERSN. + 691| ES_HEADERINFO-DOC_HDR_TX = GT_DATA-BLTXT. + 692| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fills the BAPIPLNHDR header with controlling area, fiscal year, period, transfer plan version, document header text and plan currency type. +- SAP 객체: BAPIPLNHDR, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: BAPI 헤더, 계획 버전, 관리회계영역, 회계연도, 기간 +- English: Plan Header, Controlling Area, Plan Version, Fiscal Period +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0060top-119-p_gjahr), [`GC_VERSN`](#decl-zcoc0060top-32-gc_versn), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`GC_PLAN_CURR`](#decl-zcoc0060top-33-gc_plan_curr) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L685-L692` · confidence 0.88 · `ZCOC0060#ZCOC0060F01#FORM#FILL_TABLES#C1` + +#### [interface] Sender 라인: 인덱스 1로 코스트센터(BAPIPCPOBJ)와 Sender 원가요소(BAPIPCPTOT)를 세팅하고 전용 금액을 -1 곱해 CONV_VIEW_WAERS로 통화 형식 변환 후 FIX_VALUE로 추가해 Sender 예산을 차감한다. + +```abap + 706| " 1. SENDER + 707| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX. + 708| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX. + 709| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 710| + 711| ET_COOBJECT-OBJECT_INDEX = LV_INDEX. + 712| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 713| APPEND ET_COOBJECT TO ET_COOBJECT. + 714| + 715| ET_TOTVALUE-VALUE_INDEX = LV_INDEX. + 716| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR_S. + 717| + 718| LV_VALUE = * -1. + 719| + 720| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 721| CHANGING LV_C_VALUE. + 722| + 723| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 724| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 725| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 726| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Builds the sender line: cost center object and sender cost element with the negated transfer amount (converted via CONV_VIEW_WAERS) as FIX_VALUE, reducing the sender budget. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIPCPOBJ, BAPIPCPTOT, BAPIACPSTRU, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: Sender 원가요소, 예산 차감, 음수 금액, 통화 변환, 코스트센터 +- English: Sender, Cost Element, Cost Center, Fixed Value, Primary Cost Planning +- 정의부(복사 시 함께 필요): [`LV_INDEX`](#decl-zcoc0060f01-671-lv_index), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`LV_VALUE`](#decl-zcoc0060f01-675-lv_value), [``](#decl-zcoc0060f01-673--fs_value-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0060f01-676-lv_c_value), [`P_TWAER`](#decl-zcoc0060top-116-p_twaer) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L706-L726` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#FILL_TABLES#C2` + +#### [interface] Receiver 라인: 인덱스 2로 동일 코스트센터와 Receiver 원가요소를 세팅하고 전용 금액을 양수 그대로 FIX_VALUE로 추가해 Receiver 예산을 증액한다. + +```abap + 728| " 2. RECEIVER + 729| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX + 1. + 730| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX + 1. + 731| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 732| + 733| ET_COOBJECT-OBJECT_INDEX = LV_INDEX + 1. + 734| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 735| APPEND ET_COOBJECT TO ET_COOBJECT. + 736| + 737| ET_TOTVALUE-VALUE_INDEX = LV_INDEX + 1. + 738| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR_R. + 739| + 740| LV_VALUE = . + 741| + 742| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 743| CHANGING LV_C_VALUE. + 744| + 745| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 746| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 747| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 748| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Builds the receiver line: same cost center with the receiver cost element and the positive transfer amount as FIX_VALUE, increasing the receiver budget. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIPCPOBJ, BAPIPCPTOT, BAPIACPSTRU, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: Receiver 원가요소, 예산 증액, 양수 금액, 전용 +- English: Receiver, Cost Element, Budget Transfer, Fixed Value +- 정의부(복사 시 함께 필요): [`LV_INDEX`](#decl-zcoc0060f01-671-lv_index), [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`LV_VALUE`](#decl-zcoc0060f01-675-lv_value), [``](#decl-zcoc0060f01-673--fs_value-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0060f01-676-lv_c_value), [`P_TWAER`](#decl-zcoc0060top-116-p_twaer) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L728-L748` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#FILL_TABLES#C3` + +### FORM INSERT_LOG — `ZCOC0060F01` L800-L846 (47줄) + +*BAPI 전기에 성공한 전용 건을 Z_CO_GET_BGSEQ로 채번한 순번과 함께 예산 조정 로그 테이블 ZCOT0020(BGTYPE '20' 전용)에 기록한다.* + +> 이 unit 의 조각 2개가 35/47줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 당일(SY-DATUM) 기준 예산 조정 로그 순번(SEQ)을 Z_CO_GET_BGSEQ로 채번한다. + +```abap + 809| CALL FUNCTION 'Z_CO_GET_BGSEQ' + 810| EXPORTING + 811| I_ADJUST_DATE = SY-DATUM + 812| IMPORTING + 813| E_RESULTMSG = LV_RESULTMSG + 814| E_RESULTCODE = LV_RESULTCODE + 815| E_SEQ = LV_SEQ. +``` + +- **EN**: Gets the next budget adjustment sequence number for today via Z_CO_GET_BGSEQ. +- 호출(파서): Z_CO_GET_BGSEQ +- SAP 객체: Z_CO_GET_BGSEQ, ZCOT0020 +- 업무 키워드: 순번 채번, 예산 조정 로그, 조정일자 +- English: Sequence Number, Budget Adjustment +- 정의부(복사 시 함께 필요): [`LV_RESULTMSG`](#decl-zcoc0060f01-802-lv_resultmsg), [`LV_RESULTCODE`](#decl-zcoc0060f01-803-lv_resultcode), [`LV_SEQ`](#decl-zcoc0060f01-801-lv_seq) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L809-L815` · confidence 0.9 · `ZCOC0060#ZCOC0060F01#FORM#INSERT_LOG#C1` + +#### [db_write] BAPI 결과가 성공('S')인 GT_DATA 행마다 조정일자·관리회계영역·BGTYPE '20'(전용)·순번·Sender/Receiver 코스트센터·원가요소·전용금액·통화·헤더텍스트·입력자·BGSRC '01'을 채워 ZCOT0020에 MODIFY로 저장한다. + +```abap + 817| LOOP AT GT_DATA WHERE BAPI_RESULT = 'S'. + 818| LT_ZCOT0020-ADJUST_DATE = SY-DATUM. + 819| LT_ZCOT0020-KOKRS = P_KOKRS. + 820| LT_ZCOT0020-BGTYPE = '20'. " 전용 + 821| LT_ZCOT0020-SEQ = LV_SEQ. + 822| LT_ZCOT0020-GJAHR = P_GJAHR. + 823| LT_ZCOT0020-SEND_KOSTL = GT_DATA-KOSTL. + 824| LT_ZCOT0020-SEND_PERBL = P_PERBL. + 825| LT_ZCOT0020-SEND_KSTAR = GT_DATA-KSTAR_S. + 826| LT_ZCOT0020-RECV_KOSTL = GT_DATA-KOSTL. + 827| LT_ZCOT0020-RECV_PERBL = P_PERBL. + 828| LT_ZCOT0020-RECV_KSTAR = GT_DATA-KSTAR_R. + 829| LT_ZCOT0020-TRANS_WKG = GT_DATA-WKG001. + 830| LT_ZCOT0020-TWAER = P_TWAER. + 831| LT_ZCOT0020-BLTXT = GT_DATA-BLTXT. + 832| LT_ZCOT0020-ERNAM = SY-UNAME. + 833| LT_ZCOT0020-ERZEIT = SY-UZEIT. + 834| LT_ZCOT0020-BGSRC = '01'. " SAP에서 입력 + 835| * LT_ZCOT0020-ERDAT = SY-DATUM. + 836| APPEND LT_ZCOT0020. + 837| CLEAR : LT_ZCOT0020. + 838| + 839| LV_SEQ = LV_SEQ + 1. + 840| ENDLOOP. + 841| + 842| IF LT_ZCOT0020[] IS NOT INITIAL. + 843| MODIFY ZCOT0020 FROM TABLE LT_ZCOT0020. + 844| ENDIF. +``` + +- **EN**: For each successfully posted row, builds the budget transfer log record (BGTYPE '20', sender/receiver cost center and cost element, transfer amount, currency, user) and writes it to ZCOT0020 with MODIFY. +- 테이블(파서): read - / write [ZCOT0020](/tables/ZCOT0020.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 예산 전용 로그, Sender 원가요소, Receiver 원가요소, 전용금액, 로그 저장 +- English: Budget Transfer Log, Cost Center, Cost Element, Database Update +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0060top-55-gt_data), [`LT_ZCOT0020`](#decl-zcoc0060f01-805-lt_zcot0020), [`P_KOKRS`](#decl-zcoc0060top-110-p_kokrs), [`LV_SEQ`](#decl-zcoc0060f01-801-lv_seq), [`P_GJAHR`](#decl-zcoc0060top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0060top-120-p_perbl), [`P_TWAER`](#decl-zcoc0060top-116-p_twaer) +- 위치: `abap://ZCOC0060/ZCOC0060F01#L817-L844` · confidence 0.92 · `ZCOC0060#ZCOC0060F01#FORM#INSERT_LOG#C2` + +### FORM DEQUEUE_ZCOT0020 — `ZCOC0060F01` L784-L791 (8줄) + +*예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 프로그램 종료 시 예산조정 이력 테이블 ZCOT0020의 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제하여 다른 사용자가 처리할 수 있게 한다. + +```abap + 786| CALL FUNCTION 'DEQUEUE_EZ_ZCOT0020' + 787| EXPORTING + 788| MODE_ZCOT0020 = 'X' + 789| MANDT = SY-MANDT. +``` + +- **EN**: Release the lock on budget adjustment log table ZCOT0020 via DEQUEUE_EZ_ZCOT0020 when leaving the program. +- 호출(파서): DEQUEUE_EZ_ZCOT0020 +- SAP 객체: DEQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 해제, 예산조정 이력, 동시성 제어 +- English: Dequeue, Lock Object, Budget Adjustment Log +- 위치: `abap://ZCOC0060/ZCOC0060F01#L786-L789` · confidence 0.95 · `ZCOC0060#ZCOC0060F01#FORM#DEQUEUE_ZCOT0020#C1` + +### FORM CALL_BG_REPORT — `ZCOC0060F01` L976-L980 (5줄) + +*부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 조회 버튼(&DIP)에서 부서 예산 현황 리포트 트랜잭션 ZCOR0030을 호출한다. + +```abap + 978| CALL TRANSACTION 'ZCOR0030'. +``` + +- **EN**: Call transaction ZCOR0030 to display the department budget report. +- 호출(파서): ZCOR0030 +- SAP 객체: ZCOR0030 +- 업무 키워드: 예산 리포트 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Report +- 위치: `abap://ZCOC0060/ZCOC0060F01#L978-L978` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#CALL_BG_REPORT#C1` + +### FORM CALL_BG_ADJ_LOG — `ZCOC0060F01` L989-L993 (5줄) + +*예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 로그 버튼(&LOG)에서 예산조정 이력(ZCOT0020) 조회 트랜잭션 ZCOR0040을 호출한다. + +```abap + 991| CALL TRANSACTION 'ZCOR0040'. +``` + +- **EN**: Call transaction ZCOR0040 to display the budget adjustment log. +- 호출(파서): ZCOR0040 +- SAP 객체: ZCOR0040 +- 업무 키워드: 예산조정 이력 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Adjustment Log +- 위치: `abap://ZCOC0060/ZCOC0060F01#L991-L991` · confidence 0.85 · `ZCOC0060#ZCOC0060F01#FORM#CALL_BG_ADJ_LOG#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0060I01` L6-L36 (31줄) + +*화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 26/31줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너 해제와 ZCOT0020 잠금 해제 후 화면을 나가고, &POST 시 추경 BAPI 전기(EXECUTE_BAPI), &DIP 시 예산 리포트 ZCOR0030, &LOG 시 예산조정 이력 ZCOR0040 트랜잭션을 호출한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| PERFORM DEQUEUE_ZCOT0020 . + 18| + 19| IF GV_T_OK_CODE = 'EXIT'. + 20| LEAVE PROGRAM. + 21| ELSE. + 22| LEAVE TO SCREEN 0. + 23| ENDIF. + 24| "Function Code 맵핑 + 25| WHEN '&POST'. + 26| PERFORM EXECUTE_BAPI. + 27| WHEN '&DIP'. + 28| PERFORM CALL_BG_REPORT. + 29| WHEN '&LOG'. + 30| PERFORM CALL_BG_ADJ_LOG. + 31| + 32| WHEN OTHERS. + 33| * LEAVE PROGRAM. + 34| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: leave with container cleanup and dequeue on BACK/CANC/EXIT, run supplementary budget BAPI posting on &POST, call budget report ZCOR0030 on &DIP and adjustment log ZCOR0040 on &LOG. +- 호출(파서): CLEAR_CONTAINER_PROC, DEQUEUE_ZCOT0020, EXECUTE_BAPI, CALL_BG_REPORT, CALL_BG_ADJ_LOG +- SAP 객체: ZCOR0030, ZCOR0040, ZCOT0020 +- 업무 키워드: 기능코드 분기, 추경 전기, 예산 리포트 호출, 예산조정 로그, 잠금 해제 +- English: User Command, Supplementary Budget, Posting, Call Transaction, Dequeue +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0060top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0060c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0060/ZCOC0060I01#L9-L34` · confidence 0.9 · `ZCOC0060#ZCOC0060I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (334건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0060C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0060c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0060TOP` (33건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0060top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0060top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0060top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0060top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0060top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0060top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0060top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0060top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0060top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0060top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0060top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0060top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0060top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0060top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcoc0060top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L31-L31 {#decl-zcoc0060top-31-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0060'. +``` + +#### GC_VERSN — constants · L32-L32 {#decl-zcoc0060top-32-gc_versn} + +```abap +CONSTANTS : GC_VERSN LIKE COSP-VERSN VALUE 'B12'. " 전용 +``` + +#### GC_PLAN_CURR — constants · L33-L33 {#decl-zcoc0060top-33-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcoc0060top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L44-L50 {#decl-zcoc0060top-44-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL(10) TYPE C, + KSTAR_S(10) TYPE C, + KSTAR_R(10) TYPE C, + WKG001(20) TYPE C, + BLTXT(50) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L53-L53 {#decl-zcoc0060top-53-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L55-L77 {#decl-zcoc0060top-55-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, + KSTAR_S LIKE CSKA-KSTAR, + KSTAR_ST LIKE CSKU-KTEXT, + KSTAR_R LIKE CSKA-KSTAR, + KSTAR_RT LIKE CSKU-KTEXT, + WKG001 LIKE COSP-WKG001, + BLTXT LIKE COVJ-BLTXT, + WKG001_VIEW LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + BG_AVAILABLE LIKE COSP-WKG001, + BG_AVABLE_VIEW LIKE COSP-WKG001, + + BAPI_RESULT TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L79-L79 {#decl-zcoc0060top-79-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L81-L86 {#decl-zcoc0060top-81-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L89-L89 {#decl-zcoc0060top-89-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL — data · L91-L94 {#decl-zcoc0060top-91-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_KSTAR — data · L96-L99 {#decl-zcoc0060top-96-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GT_ZCOS0030 — data · L101-L101 {#decl-zcoc0060top-101-gt_zcos0030} + +```abap +DATA : GT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L110-L111 {#decl-zcoc0060top-110-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L116-L117 {#decl-zcoc0060top-116-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L119-L119 {#decl-zcoc0060top-119-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERBL — parameter · L120-L120 {#decl-zcoc0060top-120-p_perbl} + +```abap +PARAMETER : P_PERBL LIKE COSP-PERBL OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +#### P_FNAME — parameter · L125-L126 {#decl-zcoc0060top-125-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0060_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0060F01` (45건) + +#### L_UCOMM — data · unit 로컬 · L112-L112 {#decl-zcoc0060f01-112-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L156-L156 {#decl-zcoc0060f01-156-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L157-L157 {#decl-zcoc0060f01-157--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L158-L158 {#decl-zcoc0060f01-158--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L159-L159 {#decl-zcoc0060f01-159-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LT_FCAT — data · unit 로컬 · L186-L186 {#decl-zcoc0060f01-186-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L187-L187 {#decl-zcoc0060f01-187-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L188-L188 {#decl-zcoc0060f01-188-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L189-L189 {#decl-zcoc0060f01-189-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L190-L190 {#decl-zcoc0060f01-190-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L191-L191 {#decl-zcoc0060f01-191--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L192-L192 {#decl-zcoc0060f01-192--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L193-L193 {#decl-zcoc0060f01-193--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L195-L198 {#decl-zcoc0060f01-195-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_EXISTS — data · unit 로컬 · L316-L316 {#decl-zcoc0060f01-316-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LV_MESSAGE — data · unit 로컬 · L448-L448 {#decl-zcoc0060f01-448-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L449-L449 {#decl-zcoc0060f01-449-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### L_ANSWER — data · unit 로컬 · L526-L526 {#decl-zcoc0060f01-526-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L560-L560 {#decl-zcoc0060f01-560-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L561-L561 {#decl-zcoc0060f01-561-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L562-L562 {#decl-zcoc0060f01-562-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L563-L563 {#decl-zcoc0060f01-563-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L564-L564 {#decl-zcoc0060f01-564-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L565-L565 {#decl-zcoc0060f01-565-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L566-L566 {#decl-zcoc0060f01-566-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L567-L567 {#decl-zcoc0060f01-567-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_PERIOD — data · unit 로컬 · L569-L569 {#decl-zcoc0060f01-569-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_BG_OVER — data · unit 로컬 · L570-L570 {#decl-zcoc0060f01-570-lv_bg_over} + +```abap + DATA : LV_BG_OVER. +``` + +#### LV_INDEX — data · unit 로컬 · L671-L671 {#decl-zcoc0060f01-671-lv_index} + +```abap + DATA : LV_INDEX TYPE BAPIACPSTRU-OBJECT_INDEX. +``` + +#### — field-symbol · unit 로컬 · L673-L673 {#decl-zcoc0060f01-673--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L675-L675 {#decl-zcoc0060f01-675-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L676-L676 {#decl-zcoc0060f01-676-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_SEQ — data · unit 로컬 · L801-L801 {#decl-zcoc0060f01-801-lv_seq} + +```abap + DATA : LV_SEQ TYPE ZCOT0020-SEQ. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L802-L802 {#decl-zcoc0060f01-802-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L803-L803 {#decl-zcoc0060f01-803-lv_resultcode} + +```abap + DATA : LV_RESULTCODE(1) TYPE C. +``` + +#### LT_ZCOT0020 — data · unit 로컬 · L805-L805 {#decl-zcoc0060f01-805-lt_zcot0020} + +```abap + DATA : LT_ZCOT0020 LIKE ZCOT0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L856-L856 {#decl-zcoc0060f01-856-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L857-L857 {#decl-zcoc0060f01-857-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L858-L858 {#decl-zcoc0060f01-858-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L859-L859 {#decl-zcoc0060f01-859-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L928-L928 {#decl-zcoc0060f01-928-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L929-L929 {#decl-zcoc0060f01-929-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0030 — data · unit 로컬 · L930-L930 {#decl-zcoc0060f01-930-lt_zcos0030} + +```abap + DATA : LT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L932-L932 {#decl-zcoc0060f01-932-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L933-L933 {#decl-zcoc0060f01-933-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0060 L26-32 | 0 | 프로그램 초기화 시 관리회계영역 텍스트 설정(SET_DYNP)과 엑셀 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0060 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능 버튼(엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0060 L36-41 | 0 | 선택화면 PBO에서 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0060 L42-46 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC0060 L47-58 | 1 | 입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0060 L59-70 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0060C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0060C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0060C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0060C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0060C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0060C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0060C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0060C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0060C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0060C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0060C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0060C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0060C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0060C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0060C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0060C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0060C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0060C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0060C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0060C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0060C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0060C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0060C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0060C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0060C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0060F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC0060F01 L22-29 | 0 | 선택화면 초기 표시 시 SET_KOKRS_BASE로 관리회계영역 기본 정보를 세팅하고 그 명칭을 P_BEZEI에 표시한다. | +| CHECK_INPUT | FORM | ZCOC0060F01 L38-45 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0060F01 L51-73 | 0 | 관리회계영역 기본 정보(SET_KOKRS_BASE)를 세팅하고 메인 ALV 필드카탈로그를 취득하며 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC0060F01 L87-90 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA를 호출하는 데이터 처리 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0060F01 L99-102 | 0 | 선택화면에 '엑셀 양식 다운로드' 버튼(FC01)을 SET_BTN_1000으로 활성화한다. | +| CONTROL_FCXX | FORM | ZCOC0060F01 L111-123 | 1 | 선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 예산 전용 업로드 엑셀 양식(GC_SMW0)을 연다. | +| READ_DATA | FORM | ZCOC0060F01 L132-148 | 1 | 엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 마스터 검증·텍스트 보완·가용예산 조회의 전체 데이터 읽기 흐름을 순서대로 호출한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0060F01 L155-176 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0060F01 L185-275 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0060F01 L284-307 | 1 | 엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 옮기며 코스트센터 대문자화, 초기 상태 설정, 전용 금액 1000배(CONVERT_1000_U) 변환, 통화 세팅을 수행하고 숫자 변환 오류를 처리한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0060F01 L315-333 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0060F01 L342-436 | 3 | 업로드 행의 코스트센터(CSKS/CSKT)와 Sender·Receiver 원가요소(CSKB/CSKU) 존재 여부, 전용 금액의 0/음수 여부를 검증해 오류 행을 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0060F01 L446-458 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0060F01 L467-475 | 0 | 오류 필드를 ALV 셀 색상(COL 6, 빨강)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 유틸리티 FORM이다. | +| EDIT_DATA | FORM | ZCOC0060F01 L484-515 | 1 | GT_DATA 각 행에 GT_KOSTL·GT_KSTAR에서 조회한 코스트센터명과 Sender/Receiver 원가요소명을 채운다. | +| EXECUTE_BAPI | FORM | ZCOC0060F01 L524-550 | 1 | 중복 전기 여부를 확인하고 사용자 확인 팝업 후 BAPI_POST(예산 전용 전기)와 INSERT_LOG(ZCOT0020 로그 기록)를 순서대로 수행한다. | +| BAPI_POST | FORM | ZCOC0060F01 L559-651 | 2 | GT_DATA 각 행에 대해 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender(-)/Receiver(+) 예산 전용을 전기하고 COMMIT/ROLLBACK 결과를 행 상태에 기록한다. | +| FILL_TABLES | FORM | ZCOC0060F01 L663-750 | 3 | GT_DATA 한 행의 전용 금액을 Sender 원가요소 음수(-)·Receiver 원가요소 양수(+) 두 라인으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더(BAPIPLNHDR)·인덱스·CO 오브젝트·값 테이블에 채운다. | +| ENQUEUE_ZCOT0020 | FORM | ZCOC0060F01 L759-778 | 1 | 예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다. | +| DEQUEUE_ZCOT0020 | FORM | ZCOC0060F01 L784-791 | 1 | 예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다. | +| INSERT_LOG | FORM | ZCOC0060F01 L800-846 | 2 | BAPI 전기에 성공한 전용 건을 Z_CO_GET_BGSEQ로 채번한 순번과 함께 예산 조정 로그 테이블 ZCOT0020(BGTYPE '20' 전용)에 기록한다. | +| SET_AVAIABLE_BUGDET | FORM | ZCOC0060F01 L855-915 | 2 | 업로드된 모든 행의 코스트센터·Sender 원가요소에 대해 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 가용예산을 일괄 조회해 GT_DATA에 세팅하고 전용 금액이 가용예산을 초과하는 행을 오류 처리한다. | +| GET_CURRENT_AVAILABLE_BG | FORM | ZCOC0060F01 L924-967 | 1 | 코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다. | +| CALL_BG_REPORT | FORM | ZCOC0060F01 L976-980 | 1 | 부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다. | +| CALL_BG_ADJ_LOG | FORM | ZCOC0060F01 L989-993 | 1 | 예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0060I01 L6-36 | 1 | 화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0060O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0060O01 L26-71 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0060O01 L81-125 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0060O01 L133-153 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0060O01 L161-170 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0060O01 L178-200 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0060O01 L209-237 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0060O01 L246-274 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0060O01 L284-372 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0060O01 L380-407 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0070.md b/wiki/programs/ZCOC0070.md new file mode 100644 index 0000000..3b89e45 --- /dev/null +++ b/wiki/programs/ZCOC0070.md @@ -0,0 +1,5426 @@ +--- +type: abap-program +title: "ZCOC0070 — 예산 조정(이체)" +description: "Sender 코스트센터·원가요소의 예산을 다른 Receiver 코스트센터·원가요소로 옮기는 부서 간 예산 이체 프로그램이다. 엑셀(Sender 코스트센터, Sender 원가요소, Receiver 코스트센터, Receiver 원가요소, 이체 금액, 헤더 텍스트)을 업로드해 CSKS/CSKT·CSKB/CSKU 마스터를 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender의 가용예산(ZCOS0030)을 조회해 이체 금액이 가용예산을 초과하면 오류 처리한다. 전기 시 이체 버전 B13에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender는 음수(-), Receiver는 양수(+)를 한 문서로 전기하고 결과를 ZCOT0020(BGTYPE '30' 이체)에 기록한다." +resource: "abap://ZCOC0070" +tags: ["예산관리", "예산 조정", "이체", "부서 간 예산 이체", "가용예산", "예산조정 이력", "CO-OM-CCA", "순번 채번", "예산 조정 순번", "예산 이체 이력", "로그 저장", "Sender 코스트센터", "Receiver 코스트센터", "이체 금액", "계획 헤더", "이체 버전", "회계연도", "기간", "예산 차감", "음수 금액"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:11+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKS", "CSKT", "CSKU", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0020"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DEQUEUE_EZ_ZCOT0020", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "ENQUEUE_EZ_ZCOT0020", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE"] +x-code-hash: "1ad0fb0053ab17c0cdd4e4b6aaf9b10422a41e1cb93d01177f76b66018049d37" +x-unit-count: 151 +x-chunk-count: 81 +x-declaration-count: 207 +--- + +## 업무 목적 + +Sender 코스트센터·원가요소의 예산을 다른 Receiver 코스트센터·원가요소로 옮기는 부서 간 예산 이체 프로그램이다. 엑셀(Sender 코스트센터, Sender 원가요소, Receiver 코스트센터, Receiver 원가요소, 이체 금액, 헤더 텍스트)을 업로드해 CSKS/CSKT·CSKB/CSKU 마스터를 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender의 가용예산(ZCOS0030)을 조회해 이체 금액이 가용예산을 초과하면 오류 처리한다. 전기 시 이체 버전 B13에 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender는 음수(-), Receiver는 양수(+)를 한 문서로 전기하고 결과를 ZCOT0020(BGTYPE '30' 이체)에 기록한다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 조회하고 엑셀 양식 다운로드 버튼(FC01)을 설정한다 (SET_DYNP, FC01_ACTIVE) +2. 양식 다운로드 버튼 클릭 시 SMW0 문서 ZCOC0070을 열어 업로드 양식을 제공한다 (CONTROL_FCXX) +3. 업로드 파일 입력 여부를 확인하고 상태 변수를 초기화한 뒤 ZCOT0020 잠금을 설정한다 (CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020) +4. 엑셀 파일을 읽어 GT_UPLOAD에 적재하고 형식 정리·대문자 변환 후 GT_DATA로 이전하며 금액을 1000배·내부형식으로 변환한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +5. Sender·Receiver 코스트센터(CSKS/CSKT)와 Sender·Receiver 원가요소(CSKB/CSKU) 존재 여부, 금액 0/음수 여부를 검증한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +6. Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 Sender 코스트센터·원가요소의 해당 월 가용예산을 조회하여 이체 금액 초과 라인을 오류 처리하고 명칭을 보완해 ALV로 표시한다 (SET_AVAIABLE_BUGDET, EDIT_DATA, DISPLAY_ALV_LIST) +7. 이체(&POST) 확인 후 라인별로 전기 직전 가용예산을 재조회하여 초과 시 오류 처리하고, Sender(-)/Receiver(+) 두 항목을 BAPI_COSTACTPLN_POSTPRIMCOST로 버전 B13에 전기한다 (EXECUTE_BAPI, BAPI_POST, GET_CURRENT_AVAILABLE_BG, FILL_TABLES) +8. 성공 라인을 ZCOT0020 예산조정 이력에 저장하고, 툴바에서 예산 현황(ZCOR0030)·조정 이력(ZCOR0040)을 호출할 수 있다 (INSERT_LOG, CALL_BG_REPORT, CALL_BG_ADJ_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (KOSTL_S, KSTAR_S, KOSTL_R, KSTAR_R, WKG001 이체금액, BLTXT) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 이체 대상 메인 ALV 테이블 (KOSTL_S/ST, KOSTL_R/RT, KSTAR_S/ST, KSTAR_R/RT, WKG001, BG_AVAILABLE, BAPI_RESULT, STATUS, MESSAGE) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, SET_AVAIABLE_BUGDET, EDIT_DATA, BAPI_POST / 소비: DISPLAY_ALV_LIST, FILL_TABLES, INSERT_LOG, SHOW_LOG_POP) +- `GT_ZCOS0030` — Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과: Sender 코스트센터/원가요소별 가용예산 (채움: SET_AVAIABLE_BUGDET / 소비: SET_AVAIABLE_BUGDET) +- `GT_KOSTL` — 유효 코스트센터·명칭 (CSKS JOIN CSKT), Sender/Receiver 모두 포함 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_KSTAR` — 유효 원가요소·명칭 (CSKB JOIN CSKU) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKS, CSKT, CSKU, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0020 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DEQUEUE_EZ_ZCOT0020, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, ENQUEUE_EZ_ZCOT0020, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM + +## 로직 조각 (81건 / unit 68개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0070F01` L111-L123 (13줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서 ZCOC0070을 열어 예산 이체 업로드 양식을 제공한다.* + +> 이 unit 의 조각 1개가 8/13줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 웹 리포지토리 문서(GC_SMW0)를 열어 예산 조정-이체 업로드 엑셀 양식을 다운로드하게 한다. + +```abap + 114| L_UCOMM = SSCRFIELDS-UCOMM. + 115| CASE L_UCOMM. + 116| WHEN 'FC01'. + 117| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 118| EXPORTING + 119| P_DOCNAM = GC_SMW0 + 120| P_TITLE = '예산 조정 - 이체 Upload 양식'(F03). + 121| ENDCASE. +``` + +- **EN**: On function key FC01 call Z_CO_OPEN_SMW0 to open the SMW0 document holding the budget transfer upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키 처리, 업로드 템플릿 +- English: SMW0, Upload Template, Function Key +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0070f01-112-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0070top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0070top-31-gc_smw0) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L114-L121` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0070` L46-L57 (12줄) + +*입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다.* + +> 이 unit 의 조각 1개가 6/12줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHECK_INPUT으로 파일 입력을 검증하고 INITIALIZE_DATA 후 ENQUEUE_ZCOT0020으로 잠금을 건 뒤 PROCESS_DATA로 엑셀 추경 데이터를 읽어 검증한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| + 51| PERFORM ENQUEUE_ZCOT0020 USING GV_LOCK. + 52| + 53| PERFORM PROCESS_DATA. +``` + +- **EN**: Main flow: validate input, initialize, lock ZCOT0020, then read and validate the uploaded supplementary budget data. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020, PROCESS_DATA +- SAP 객체: ZCOT0020 +- 업무 키워드: 메인 흐름, 입력 검증, 잠금, 엑셀 업로드 +- English: Main Processing, Enqueue, Excel Upload +- 정의부(복사 시 함께 필요): [`GV_LOCK`](#decl-zcoc0070top-21-gv_lock) +- 위치: `abap://ZCOC0070/ZCOC0070#L48-L53` · confidence 0.85 · `ZCOC0070#ZCOC0070#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0070F01` L38-L45 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 40| IF P_FNAME IS INITIAL. + 41| MESSAGE S000 DISPLAY LIKE 'E' WITH + 42| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 43| LEAVE LIST-PROCESSING. + 44| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0070top-128-p_fname) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L40-L44` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0070F01` L51-L73 (23줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/전기 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/23줄(35%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 56| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 57| P_BEZEI = GV_KOKRS_BEZEI. + 58| + 59| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 60| " MAIN ALV용 딕셔너리 구조 취득. + 61| PERFORM GET_FCAT_LIKE_ITAB + 62| TABLES GT_MAIN_FIELDCAT + 63| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc0070top-39-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc0070top-29-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L56-L63` · confidence 0.75 · `ZCOC0070#ZCOC0070F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM ENQUEUE_ZCOT0020 — `ZCOC0070F01` L784-L803 (20줄) + +*예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다.* + +> 이 unit 의 조각 1개가 18/20줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] ENQUEUE_EZ_ZCOT0020으로 ZCOT0020 테이블 전체 잠금을 요청하고, 타 사용자 잠금(FOREIGN_LOCK) 등 실패 시 시스템 메시지를 I 타입으로 보여주고 P_ERR='X'를 반환한다. + +```abap + 785| CALL FUNCTION 'ENQUEUE_EZ_ZCOT0020' + 786| EXPORTING + 787| MODE_ZCOT0020 = 'X' + 788| MANDT = SY-MANDT + 789| EXCEPTIONS + 790| FOREIGN_LOCK = 1 + 791| SYSTEM_FAILURE = 2 + 792| OTHERS = 3. + 793| + 794| IF SY-SUBRC <> 0. + 795| * Retrieve message displayed within Function Module + 796| MESSAGE ID SY-MSGID + 797| TYPE 'I' + 798| NUMBER SY-MSGNO + 799| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 800| P_ERR = 'X'. + 801| EXIT. + 802| ENDIF. +``` + +- **EN**: Request an exclusive lock on ZCOT0020 via ENQUEUE_EZ_ZCOT0020; on FOREIGN_LOCK or failure show the system message and return error flag P_ERR. +- 호출(파서): ENQUEUE_EZ_ZCOT0020 +- SAP 객체: ENQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 설정, 예산조정 이력, 동시 실행 방지, 잠금 오류 +- English: Enqueue, Lock Object, Foreign Lock, Budget Adjustment Log +- 위치: `abap://ZCOC0070/ZCOC0070F01#L785-L802` · confidence 0.95 · `ZCOC0070#ZCOC0070F01#FORM#ENQUEUE_ZCOT0020#C1` + +### FORM READ_DATA — `ZCOC0070F01` L132-L148 (17줄) + +*엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 마스터 검증·텍스트 보완·가용예산 조회의 전체 데이터 읽기 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 15/17줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] P_FNAME 엑셀을 업로드하고 GT_UPLOAD가 비어 있지 않으면 SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, EDIT_DATA, SET_AVAIABLE_BUGDET을 차례로 수행해 전용 대상 데이터를 준비한다. + +```abap + 133| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 134| + 135| CHECK GT_UPLOAD[] IS NOT INITIAL. + 136| + 137| "2. 업로드가 제대로 되었다면. + 138| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 139| + 140| "3. 엑셀 데이터를 인터널 테이블로 이전 + 141| PERFORM TRANSFER_GT_DATA. + 142| PERFORM CONVERT_KRW_DATA. + 143| + 144| "4. Validation + 145| PERFORM VALIDATION_CHECK. + 146| PERFORM EDIT_DATA. + 147| PERFORM SET_AVAIABLE_BUGDET. +``` + +- **EN**: Orchestrates upload of the Excel file, format cleanup, transfer to GT_DATA with currency conversion, master validation, text enrichment and available budget lookup. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, EDIT_DATA, SET_AVAIABLE_BUGDET +- 업무 키워드: 업로드 처리 흐름, 검증, 가용예산, 데이터 준비 +- English: Upload Processing, Validation, Available Budget +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0070top-128-p_fname), [`GT_UPLOAD`](#decl-zcoc0070top-44-gt_upload) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L133-L147` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0070F01` L316-L334 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 319| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 320| + 321| IF L_EXISTS = ABAP_FALSE. + 322| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 323| LEAVE LIST-PROCESSING. + 324| EXIT. + 325| ENDIF. + 326| + 327| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 328| 'GS_UPLOAD' + 329| P_NAME + 330| 1 "S_COL-LOW + 331| 2 "S_ROW-LOW + 332| 256 "S_COL-HIGH + 333| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0070f01-317-l_exists) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L319-L333` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0070top-128-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0070F01` L185-L275 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 204| L_TABNAME = P_STRUCT_NM. + 205| + 206| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 207| USING L_TABNAME. + 208| + 209| SELECT DOMNAME LOWERCASE + 210| INTO TABLE LT_LOWERCASE + 211| FROM DD01L + 212| FOR ALL ENTRIES IN LT_FCAT + 213| WHERE DOMNAME = LT_FCAT-DOMNAME + 214| AND AS4LOCAL = 'A'. + 215| + 216| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0070f01-187-l_tabname), [`LT_FCAT`](#decl-zcoc0070f01-186-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0070f01-195-lt_lowercase) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L204-L216` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 218| LOOP AT LT_FCAT ASSIGNING . + 219| CASE -DATATYPE. + 220| " 숫자 타입 + 221| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 222| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 223| L_TYPE = 'NUMB'. + 224| " 날짜 + 225| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 226| L_TYPE = 'DATS'. + 227| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 228| "CHECK BOX + 229| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 230| L_TYPE = 'CHCK'. + 231| ENDIF. + 232| WHEN OTHERS. + 233| ENDCASE. + 234| + 235| IF -CONVEXIT IS NOT INITIAL. + 236| L_CONV_ALPHA = 'X'. + 237| ENDIF. + 238| + 239| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 240| CONTINUE. + 241| ENDIF. + 242| + 243| LOOP AT GT_UPLOAD ASSIGNING . + 244| CONCATENATE '-' -FIELDNAME + 245| INTO L_FSNAME. + 246| ASSIGN (L_FSNAME) TO . + 247| + 248| IF SY-SUBRC EQ 0. + 249| CASE L_TYPE. + 250| WHEN 'NUMB'. + 251| PERFORM BDC_CURR USING . + 252| WHEN 'DATS'. + 253| PERFORM BDC_DATE USING . + 254| WHEN 'CHCK'. + 255| PERFORM BDC_CHECKBOX USING . + 256| WHEN OTHERS. + 257| ENDCASE. + 258| + 259| IF L_CONV_ALPHA = 'X'. + 260| PERFORM ZERO_I USING . + 261| ENDIF. + 262| + 263| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 264| BINARY SEARCH. + 265| + 266| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 267| TRANSLATE TO UPPER CASE. + 268| ENDIF. + 269| ENDIF. + 270| ENDLOOP. + 271| + 272| CLEAR : L_TYPE. + 273| CLEAR : L_CONV_ALPHA. + 274| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0070f01-186-lt_fcat), [``](#decl-zcoc0070f01-193--fs_fcat-), [`L_TYPE`](#decl-zcoc0070f01-189-l_type), [`L_CONV_ALPHA`](#decl-zcoc0070f01-190-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0070top-44-gt_upload), [``](#decl-zcoc0070f01-191--fs_upload-), [`L_FSNAME`](#decl-zcoc0070f01-188-l_fsname), [``](#decl-zcoc0070f01-192--fs-), [`LT_LOWERCASE`](#decl-zcoc0070f01-195-lt_lowercase) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L218-L274` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0070F01` L284-L308 (25줄) + +*엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 이전하면서 코스트센터 대문자 변환, 이체 금액 1000배 변환, 통화 세팅을 수행하고 숫자 변환 오류를 처리한다.* + +> 이 unit 의 조각 1개가 23/25줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 행을 GT_DATA로 MOVE-CORRESPONDING하며 Sender/Receiver 코스트센터를 대문자화하고 CONVERT_1000_U로 이체 금액(WKG001)을 1000배 변환·통화(P_TWAER) 세팅하며, 숫자 변환 예외(CX_SY_CONVERSION_NO_NUMBER) 시 오류 메시지 후 종료하고 마지막에 KOSTL_S/KSTAR_S/KSTAR_R로 정렬한다. + +```abap + 285| TRY. + 286| LOOP AT GT_UPLOAD. + 287| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 288| TRANSLATE GT_DATA-KOSTL_S TO UPPER CASE. + 289| TRANSLATE GT_DATA-KOSTL_R TO UPPER CASE. + 290| GT_DATA-STATUS = GC_STATUS_INIT. + 291| GT_DATA-WKG001_VIEW = GT_DATA-WKG001. + 292| + 293| PERFORM CONVERT_1000_U USING GT_DATA-WKG001 + 294| CHANGING GT_DATA-WKG001. + 295| + 296| GT_DATA-TWAER = P_TWAER. + 297| + 298| APPEND GT_DATA. + 299| CLEAR : GT_DATA. + 300| ENDLOOP. + 301| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 302| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F04) + 303| DISPLAY LIKE 'E'. + 304| LEAVE LIST-PROCESSING. + 305| ENDTRY. + 306| + 307| SORT GT_DATA BY KOSTL_S KSTAR_S KSTAR_R. +``` + +- **EN**: Transfer uploaded Excel rows into GT_DATA with upper-case cost centers, amount scaled by 1000 via CONVERT_1000_U and currency set; abort with a message on CX_SY_CONVERSION_NO_NUMBER, then sort. +- 호출(파서): CONVERT_1000_U +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 금액 1000배 변환, 대문자 변환, 숫자 변환 오류 +- English: Excel Upload, Amount Conversion, Exception Handling +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0070top-44-gt_upload), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0070top-119-p_twaer) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L285-L307` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0070F01` L155-L176 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 161| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 162| WHERE DATATYPE = 'CURR'. + 163| + 164| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 165| INTO LV_FIELD. + 166| + 167| LOOP AT GT_DATA ASSIGNING . + 168| ASSIGN (LV_FIELD) TO . + 169| + 170| IF SY-SUBRC EQ 0. + 171| PERFORM CONV_DB_WAERS USING GV_WAERS. + 172| ENDIF. + 173| ENDLOOP. + 174| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0070top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0070f01-156-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0070f01-159-lv_field), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [``](#decl-zcoc0070f01-158--fs_data-), [``](#decl-zcoc0070f01-157--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L161-L174` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0070F01` L343-L451 (109줄) + +*업로드된 이체 데이터의 Sender/Receiver 코스트센터·원가요소 존재 여부(CSKS/CSKT, CSKB/CSKU)와 금액 0·음수 여부를 검증해 오류 행을 표시한다.* + +> 이 unit 의 조각 3개가 102/109줄(94%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKS JOIN CSKT에서 관리회계영역·현재일자 유효한 Sender/Receiver 코스트센터와 명칭을 GT_DATA 기준 FOR ALL ENTRIES로 조회해 GT_KOSTL에 정렬 저장한다. + +```abap + 346| SELECT A~KOSTL B~KTEXT AS KOSTL_T + 347| FROM CSKS AS A INNER JOIN CSKT AS B + 348| ON A~KOKRS = B~KOKRS + 349| AND A~KOSTL = B~KOSTL + 350| AND A~DATBI = B~DATBI + 351| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 352| FOR ALL ENTRIES IN GT_DATA + 353| WHERE A~KOKRS = P_KOKRS + 354| AND ( A~KOSTL = GT_DATA-KOSTL_S + 355| OR A~KOSTL = GT_DATA-KOSTL_R ) + 356| AND A~DATBI >= SY-DATUM + 357| AND A~DATAB <= SY-DATUM + 358| AND B~SPRAS = SY-LANGU. + 359| + 360| SORT GT_KOSTL BY KOSTL. +``` + +- **EN**: Select valid cost centers and texts from CSKS joined with CSKT for all sender/receiver cost centers in GT_DATA into GT_KOSTL. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKS, CSKT +- 업무 키워드: 코스트센터 마스터 조회, 유효기간 검증, Sender, Receiver +- English: Cost Center Master, CSKS, CSKT, For All Entries +- 정의부(복사 시 함께 필요): [`GT_KOSTL`](#decl-zcoc0070top-94-gt_kostl), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L346-L360` · confidence 0.92 · `ZCOC0070#ZCOC0070F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] CSKB JOIN CSKU에서 관리회계영역·현재일자 유효한 Sender/Receiver 원가요소와 명칭을 조회해 GT_KSTAR에 정렬 저장한다. + +```abap + 362| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 363| FROM CSKB AS A INNER JOIN CSKU AS B + 364| ON A~KSTAR = B~KSTAR + 365| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 366| FOR ALL ENTRIES IN GT_DATA + 367| WHERE A~KOKRS = P_KOKRS + 368| AND ( A~KSTAR = GT_DATA-KSTAR_S + 369| OR A~KSTAR = GT_DATA-KSTAR_R ) + 370| AND SPRAS = SY-LANGU + 371| AND A~DATBI >= SY-DATUM + 372| AND A~DATAB <= SY-DATUM. + 373| + 374| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Select valid cost elements and texts from CSKB joined with CSKU for all sender/receiver cost elements in GT_DATA into GT_KSTAR. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU +- 업무 키워드: 원가요소 마스터 조회, 유효기간 검증, Sender, Receiver +- English: Cost Element Master, CSKB, CSKU, For All Entries +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0070top-99-gt_kstar), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L362-L374` · confidence 0.92 · `ZCOC0070#ZCOC0070F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행별로 이체 금액이 0 또는 음수인지, Sender/Receiver 코스트센터가 GT_KOSTL에, Sender/Receiver 원가요소가 GT_KSTAR에 존재하는지 검사해 오류 시 메시지·RED 상태·필드 강조·GV_UPLOAD_ERROR를 세팅한다. + +```abap + 376| LOOP AT GT_DATA. + 377| + 378| IF GT_DATA-WKG001 = 0. + 379| GT_DATA-MESSAGE = '금액이 입력되지 않았습니다.'(F10). + 380| GT_DATA-STATUS = GC_STATUS_RED. + 381| GV_UPLOAD_ERROR = 'X'. + 382| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 383| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 384| GT_DATA-MESSAGE. + 385| ENDIF. + 386| + 387| IF GT_DATA-WKG001 < 0. + 388| GT_DATA-MESSAGE = '양수(+) 금액만 입력하여 주십시오'(F11). + 389| GT_DATA-STATUS = GC_STATUS_RED. + 390| GV_UPLOAD_ERROR = 'X'. + 391| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 392| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 393| GT_DATA-MESSAGE. + 394| ENDIF. + 395| + 396| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL_S + 397| BINARY SEARCH. + 398| + 399| IF SY-SUBRC NE 0. + 400| GT_DATA-MESSAGE = '존재하지 않는 Sender 코스트센터입니다'(F05). + 401| GT_DATA-STATUS = GC_STATUS_RED. + 402| GV_UPLOAD_ERROR = 'X'. + 403| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL_S'. + 404| PERFORM ADD_DATA_MESSAGE USING 'KOSTL_S' + 405| GT_DATA-MESSAGE. + 406| CONTINUE. + 407| ENDIF. + 408| + 409| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL_R + 410| BINARY SEARCH. + 411| + 412| IF SY-SUBRC NE 0. + 413| GT_DATA-MESSAGE = '존재하지 않는 Receiver 코스트센터입니다'(F13). + 414| GT_DATA-STATUS = GC_STATUS_RED. + 415| GV_UPLOAD_ERROR = 'X'. + 416| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL_R'. + 417| PERFORM ADD_DATA_MESSAGE USING 'KOSTL_R' + 418| GT_DATA-MESSAGE. + 419| CONTINUE. + 420| ENDIF. + 421| + 422| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_S + 423| BINARY SEARCH. + 424| + 425| IF SY-SUBRC NE 0. + 426| GT_DATA-MESSAGE = '존재하지 않는 Sender 원가요소입니다'(F06). + 427| GT_DATA-STATUS = GC_STATUS_RED. + 428| GV_UPLOAD_ERROR = 'X'. + 429| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 430| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 431| GT_DATA-MESSAGE. + 432| ENDIF. + 433| + 434| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_R + 435| BINARY SEARCH. + 436| + 437| IF SY-SUBRC NE 0. + 438| GT_DATA-MESSAGE = '존재하지 않는 Receiver 원가요소입니다'(F07). + 439| GT_DATA-STATUS = GC_STATUS_RED. + 440| GV_UPLOAD_ERROR = 'X'. + 441| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_R'. + 442| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_R' + 443| GT_DATA-MESSAGE. + 444| ENDIF. + 445| + 446| MODIFY GT_DATA. CLEAR : GT_DATA. + 447| CLEAR : GT_KOSTL, GT_KSTAR. + 448| + 449| ENDLOOP. +``` + +- **EN**: Validate each row: amount must be positive and non-zero, sender/receiver cost centers and cost elements must exist; flag errors with message, red status and field highlight. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, CSKB +- 업무 키워드: 업로드 데이터 검증, 금액 검증, 코스트센터 존재 확인, 원가요소 존재 확인, 오류 표시 +- English: Validation, Cost Center Check, Cost Element Check, Amount Check +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0070top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0070top-94-gt_kostl), [`GT_KSTAR`](#decl-zcoc0070top-99-gt_kstar) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L376-L449` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC0070F01` L461-L473 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 466| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 467| WITH KEY FIELDNAME = P_FIELD. + 468| + 469| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 470| INTO LV_MESSAGE. + 471| + 472| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0070top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0070f01-464-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0070f01-463-lv_message), [`GT_DATA`](#decl-zcoc0070top-56-gt_data) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L466-L472` · confidence 0.8 · `ZCOC0070#ZCOC0070F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC0070F01` L499-L537 (39줄) + +*검증된 코스트센터(GT_KOSTL)·원가요소(GT_KSTAR) 마스터에서 Sender/Receiver의 명칭을 읽어 GT_DATA 표시 텍스트 필드를 채운다.* + +> 이 unit 의 조각 1개가 35/39줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] GT_DATA 행마다 GT_KOSTL(CSKS/CSKT)·GT_KSTAR(CSKB/CSKU)를 BINARY SEARCH로 읽어 Sender/Receiver 코스트센터명(KOSTL_ST/RT)과 원가요소명(KSTAR_ST/RT)을 세팅한다. + +```abap + 501| LOOP AT GT_DATA. + 502| + 503| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL_S + 504| BINARY SEARCH. + 505| + 506| IF SY-SUBRC EQ 0. + 507| GT_DATA-KOSTL_ST = GT_KOSTL-KOSTL_T. + 508| ENDIF. + 509| + 510| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL_R + 511| BINARY SEARCH. + 512| + 513| IF SY-SUBRC EQ 0. + 514| GT_DATA-KOSTL_RT = GT_KOSTL-KOSTL_T. + 515| ENDIF. + 516| + 517| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_S + 518| BINARY SEARCH. + 519| + 520| IF SY-SUBRC EQ 0. + 521| GT_DATA-KSTAR_ST = GT_KSTAR-KSTAR_T. + 522| ENDIF. + 523| + 524| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR_R + 525| BINARY SEARCH. + 526| + 527| IF SY-SUBRC EQ 0. + 528| GT_DATA-KSTAR_RT = GT_KSTAR-KSTAR_T. + 529| ENDIF. + 530| + 531| CLEAR : GT_KOSTL, GT_KSTAR. + 532| + 533| MODIFY GT_DATA. CLEAR : GT_DATA. + 534| + 535| ENDLOOP. +``` + +- **EN**: Enrich each GT_DATA row with sender/receiver cost center and cost element descriptions from GT_KOSTL and GT_KSTAR. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: CSKT, CSKU +- 업무 키워드: 코스트센터명, 원가요소명, 텍스트 보강, Sender, Receiver +- English: Cost Center Text, Cost Element Text, Enrichment +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GT_KOSTL`](#decl-zcoc0070top-94-gt_kostl), [`GT_KSTAR`](#decl-zcoc0070top-99-gt_kstar) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L501-L535` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#EDIT_DATA#C1` + +### FORM SET_AVAIABLE_BUGDET — `ZCOC0070F01` L879-L942 (64줄) + +*업로드된 모든 Sender 코스트센터·원가요소의 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 일괄 조회해 GT_DATA에 세팅하고 이체 금액이 가용예산을 초과하는 행을 오류 처리한다.* + +> 이 unit 의 조각 2개가 51/64줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_DATA의 Sender 코스트센터(ZCOS0010)·원가요소(ZCOS0020) 목록을 만들어 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 호출하고 가용예산 결과 GT_ZCOS0030을 KOSTL/KSTAR로 정렬한다. + +```abap + 889| LOOP AT GT_DATA. + 890| LT_ZCOS0010-KOSTL = GT_DATA-KOSTL_S. + 891| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 892| + 893| LT_ZCOS0020-KSTAR = GT_DATA-KSTAR_S. + 894| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 895| ENDLOOP. + 896| + 897| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 898| EXPORTING + 899| I_KOKRS = P_KOKRS + 900| I_GJAHR = P_GJAHR + 901| I_S_PERBL = P_PERBL + 902| I_E_PERBL = P_PERBL + 903| IMPORTING + 904| E_RESULTCODE = LV_RESULTCODE + 905| E_RESULTMSG = LV_RESULTMSG + 906| TABLES + 907| IT_KOSTL = LT_ZCOS0010 + 908| IT_KSTAR = LT_ZCOS0020 + 909| ET_ZCOS0030 = GT_ZCOS0030. + 910| + 911| SORT GT_ZCOS0030 BY KOSTL KSTAR. +``` + +- **EN**: Collect sender cost centers and cost elements from GT_DATA and call Z_CO_SEL_KOSTL_BUDGET_ACTUAL to get available budget into GT_ZCOS0030 for the selected period. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산 조회, Sender 코스트센터, Sender 원가요소, 기간별 예산 +- English: Available Budget, Cost Center, Cost Element, Budget vs Actual +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`LT_ZCOS0010`](#decl-zcoc0070f01-880-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0070f01-881-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs), [`P_GJAHR`](#decl-zcoc0070top-122-p_gjahr), [`P_PERBL`](#decl-zcoc0070top-123-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0070f01-882-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0070f01-883-lv_resultmsg), [`GT_ZCOS0030`](#decl-zcoc0070top-104-gt_zcos0030) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L889-L911` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#SET_AVAIABLE_BUGDET#C1` + +#### [validation] 행별로 GT_ZCOS0030에서 Sender 가용예산(BG_AVAILABLE)을 읽어 GT_DATA에 세팅(표시용 1000배 변환 포함)하고, 이체 금액 WKG001이 가용예산보다 크면 오류 메시지·RED 상태·필드 강조로 표시한다. + +```abap + 913| LOOP AT GT_DATA. + 914| + 915| " SENDER 계정의 가용예산을 체크. + 916| READ TABLE GT_ZCOS0030 WITH KEY + 917| KOSTL = GT_DATA-KOSTL_S + 918| KSTAR = GT_DATA-KSTAR_S BINARY SEARCH. + 919| + 920| IF SY-SUBRC EQ 0. + 921| GT_DATA-BG_AVAILABLE = GT_ZCOS0030-BG_AVAILABLE. + 922| PERFORM CONVERT_1000_D USING GT_DATA-BG_AVAILABLE + 923| CHANGING GT_DATA-BG_AVABLE_VIEW. + 924| ENDIF. + 925| + 926| IF GT_DATA-WKG001 > + 927| GT_DATA-BG_AVAILABLE. + 928| GT_DATA-MESSAGE = '해당 Sender 원가요소의 가용예산보다 많은 금액이 입력되었습니다.'(F11). + 929| GT_DATA-STATUS = GC_STATUS_RED. + 930| GV_UPLOAD_ERROR = 'X'. + 931| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 932| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 933| GT_DATA-MESSAGE. + 934| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL_S'. + 935| PERFORM ADD_DATA_MESSAGE USING 'KOSTL_S' + 936| GT_DATA-MESSAGE. + 937| ENDIF. + 938| + 939| MODIFY GT_DATA. CLEAR : GT_DATA. + 940| ENDLOOP. +``` + +- **EN**: Assign the sender's available budget to each row and mark the row as error when the transfer amount WKG001 exceeds BG_AVAILABLE. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOS0030 +- 업무 키워드: 예산 초과 검증, 가용예산 세팅, 오류 표시, 이체 금액 +- English: Budget Check, Available Budget, Validation, Error Highlight +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GT_ZCOS0030`](#decl-zcoc0070top-104-gt_zcos0030), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0070top-22-gv_upload_error) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L913-L940` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#SET_AVAIABLE_BUGDET#C2` + +### EVENT END-OF-SELECTION — `ZCOC0070` L58-L69 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 59| IF SY-BATCH NE 'X'. + 60| IF GT_DATA[] IS NOT INITIAL. + 61| CALL SCREEN 100. + 62| ELSE. + 63| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 64| ENDIF. + 65| ELSE. + 66| IF GT_DATA[] IS NOT INITIAL. + 67| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 68| ENDIF. + 69| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data) +- 위치: `abap://ZCOC0070/ZCOC0070#L59-L69` · confidence 0.85 · `ZCOC0070#ZCOC0070#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0070/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0070/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0070/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0070/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0070/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0070#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0070#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0070/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0070#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM EXECUTE_BAPI — `ZCOC0070F01` L546-L572 (27줄) + +*중복 전기 여부를 확인하고 사용자 확인 팝업 후 BAPI_POST(예산 이체 전기)와 INSERT_LOG(ZCOT0020 기록)를 실행한다.* + +> 이 unit 의 조각 1개가 17/27줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 전기한 경우(GV_ALREADY_POST) 오류 메시지 후 종료하고, POPUP_TO_CONFIRM_02로 예산 이체 확인(J) 시 재전기 방지 플래그를 세운 뒤 BAPI_POST와 INSERT_LOG를 순차 수행한다. + +```abap + 555| IF GV_ALREADY_POST = 'X'. + 556| MESSAGE S000 DISPLAY LIKE 'E' WITH + 557| '이미 처리하였습니다'(F08). + 558| EXIT. + 559| ENDIF. + 560| + 561| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 562| '예산을 이체하시겠습니까?'(F09) ' ' + 563| CHANGING L_ANSWER. + 564| IF L_ANSWER <> 'J'. + 565| EXIT. + 566| ENDIF. + 567| + 568| GV_ALREADY_POST = 'X'. + 569| + 570| PERFORM BAPI_POST. + 571| PERFORM INSERT_LOG. +``` + +- **EN**: Prevent duplicate posting, ask the user to confirm the budget transfer via POPUP_TO_CONFIRM_02, then run BAPI_POST and INSERT_LOG. +- 호출(파서): POPUP_TO_CONFIRM_02, BAPI_POST, INSERT_LOG +- SAP 객체: POPUP_TO_CONFIRM_02, ZCOT0020 +- 업무 키워드: 중복 전기 방지, 확인 팝업, 예산 이체 실행, 로그 기록 +- English: Confirmation Popup, Duplicate Posting Check, Budget Transfer +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0070top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0070f01-548-l_answer) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L555-L571` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#EXECUTE_BAPI#C1` + +### FORM BAPI_POST — `ZCOC0070F01` L581-L676 (96줄) + +*GT_DATA 각 이체 행에 대해 전기 직전 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender(-)/Receiver(+)를 한 문서로 전기하고 결과를 행 상태에 반영한다.* + +> 이 unit 의 조각 2개가 57/96줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 이후 실적이 발생했을 수 있으므로 GET_CURRENT_AVAILABLE_BG로 Sender 가용예산을 재조회하고 이체 금액이 초과하면 행을 오류(RED)로 표시하고 전기를 건너뛴다. + +```abap + 608| CLEAR : LV_BG_OVER. + 609| " 업로드 ~ 전기 사이에 비용이 들어왔을 경우 다시 가용예산을 계산함. + 610| PERFORM GET_CURRENT_AVAILABLE_BG USING GT_DATA-KOSTL_S + 611| GT_DATA-KSTAR_S GT_DATA-WKG001 LV_BG_OVER. + 612| + 613| IF LV_BG_OVER = 'X'. " 그 사이에 비용이 들어왔다면 에러로. + 614| GT_DATA-MESSAGE = '업로드 이후 가용예산이 변경되어 더 많은 금액이 입력되었습니다. '(F12). + 615| GT_DATA-STATUS = GC_STATUS_RED. + 616| GV_UPLOAD_ERROR = 'X'. + 617| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR_S'. + 618| PERFORM ADD_DATA_MESSAGE USING 'KSTAR_S' + 619| GT_DATA-MESSAGE. + 620| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL_S'. + 621| PERFORM ADD_DATA_MESSAGE USING 'KOSTL_S' + 622| GT_DATA-MESSAGE. +``` + +- **EN**: Re-check the sender's available budget via GET_CURRENT_AVAILABLE_BG right before posting and mark the row as error if the transfer amount now exceeds it. +- 호출(파서): GET_CURRENT_AVAILABLE_BG, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- 업무 키워드: 가용예산 재검증, 예산 초과, 오류 표시, Sender 코스트센터 +- English: Available Budget, Budget Check, Validation +- 정의부(복사 시 함께 필요): [`LV_BG_OVER`](#decl-zcoc0070f01-592-lv_bg_over), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0070top-22-gv_upload_error) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L608-L622` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#BAPI_POST#C1` + +#### [fm_call] FILL_TABLES로 헤더·CO오브젝트·금액 테이블을 구성해 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 원가요소 계획(예산 이체) 전기 후, RETURN이 없으면 BAPI_TRANSACTION_COMMIT하고 성공(S)·메시지 GP510을, 오류면 ROLLBACK 후 마지막 RETURN 메시지를 행에 기록한다. + +```abap + 625| PERFORM FILL_TABLES + 626| TABLES LT_INDEXSTRUCTURE + 627| LT_COOBJECT + 628| LT_TOTVALUE + 629| USING LV_PERIOD + 630| CHANGING LS_HEADERINFO. + 631| + 632| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 633| EXPORTING + 634| HEADERINFO = LS_HEADERINFO + 635| DELTA = 'X' + 636| TABLES + 637| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 638| COOBJECT = LT_COOBJECT + 639| PERVALUE = LT_PERVALUE + 640| TOTVALUE = LT_TOTVALUE + 641| CONTRL = LT_CONTRL + 642| RETURN = LT_RETURN. + 643| + 644| IF LT_RETURN[] IS INITIAL. + 645| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 646| EXPORTING + 647| WAIT = 'X'. + 648| + 649| GT_DATA-STATUS = GC_STATUS_GREEN. + 650| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 651| INTO GT_DATA-MESSAGE + 652| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 653| + 654| GT_DATA-BAPI_RESULT = 'S'. + 655| + 656| ELSE. + 657| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 658| + 659| LOOP AT LT_RETURN INTO LS_RETURN. + 660| ENDLOOP. + 661| + 662| GT_DATA-BAPI_RESULT = 'E'. + 663| + 664| GT_DATA-MESSAGE = LS_RETURN-MESSAGE. + 665| GT_DATA-STATUS = GC_STATUS_RED. + 666| ENDIF. +``` + +- **EN**: Post the budget transfer as primary cost planning via BAPI_COSTACTPLN_POSTPRIMCOST (DELTA='X'), commit with BAPI_TRANSACTION_COMMIT on success or rollback and store the return message on failure. +- 호출(파서): FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIPLNHDR, BAPIRET2 +- 업무 키워드: 예산 이체 전기, 원가요소 계획 전기, 커밋, 롤백, 전기 결과 메시지 +- English: Primary Cost Planning, BAPI Posting, Commit, Rollback, Delta Posting +- 정의부(복사 시 함께 필요): [`LT_INDEXSTRUCTURE`](#decl-zcoc0070f01-583-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0070f01-584-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0070f01-586-lt_totvalue), [`LV_PERIOD`](#decl-zcoc0070f01-591-lv_period), [`LS_HEADERINFO`](#decl-zcoc0070f01-582-ls_headerinfo), [`LT_PERVALUE`](#decl-zcoc0070f01-585-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0070f01-587-lt_contrl), [`LT_RETURN`](#decl-zcoc0070f01-588-lt_return), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LS_RETURN`](#decl-zcoc0070f01-589-ls_return), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L625-L666` · confidence 0.92 · `ZCOC0070#ZCOC0070F01#FORM#BAPI_POST#C2` + +### FORM GET_CURRENT_AVAILABLE_BG — `ZCOC0070F01` L951-L994 (44줄) + +*코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다.* + +> 이 unit 의 조각 1개가 26/44줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 코스트센터(ZCOS0010)·원가요소(ZCOS0020)를 조건으로 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 호출해 해당 기간 가용예산(ZCOS0030-BG_AVAILABLE)을 얻고, 전용 금액이 가용예산보다 크면 P_WKG_OVER='X'로 예산 초과를 표시한다. + +```abap + 967| LT_ZCOS0010-KOSTL = P_KOSTL. + 968| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 969| + 970| LT_ZCOS0020-KSTAR = P_KSTAR. + 971| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 972| + 973| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 974| EXPORTING + 975| I_KOKRS = P_KOKRS + 976| I_GJAHR = P_GJAHR + 977| I_S_PERBL = P_PERBL + 978| I_E_PERBL = P_PERBL + 979| IMPORTING + 980| E_RESULTCODE = LV_RESULTCODE + 981| E_RESULTMSG = LV_RESULTMSG + 982| TABLES + 983| IT_KOSTL = LT_ZCOS0010 + 984| IT_KSTAR = LT_ZCOS0020 + 985| ET_ZCOS0030 = LT_ZCOS0030. + 986| + 987| READ TABLE LT_ZCOS0030 INDEX 1. + 988| + 989| IF P_TRANS_WKG > + 990| LT_ZCOS0030-BG_AVAILABLE. + 991| P_WKG_OVER = 'X'. + 992| ENDIF. +``` + +- **EN**: Calls Z_CO_SEL_KOSTL_BUDGET_ACTUAL for the cost center / cost element and period, reads the available budget (ZCOS0030-BG_AVAILABLE) and flags budget overrun when the transfer amount exceeds it. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산, 예산 초과 검증, 코스트센터, 원가요소, 전용금액 +- English: Available Budget, Budget Check, Cost Center, Cost Element +- 정의부(복사 시 함께 필요): [`LT_ZCOS0010`](#decl-zcoc0070f01-955-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0070f01-956-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs), [`P_GJAHR`](#decl-zcoc0070top-122-p_gjahr), [`P_PERBL`](#decl-zcoc0070top-123-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0070f01-959-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0070f01-960-lv_resultmsg), [`LT_ZCOS0030`](#decl-zcoc0070f01-957-lt_zcos0030) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L967-L992` · confidence 0.92 · `ZCOC0070#ZCOC0070F01#FORM#GET_CURRENT_AVAILABLE_BG#C1` + +### FORM FILL_TABLES — `ZCOC0070F01` L688-L775 (88줄) + +*현재 GT_DATA 행의 이체 금액으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더·인덱스·CO오브젝트·금액 테이블을 Sender(-)/Receiver(+) 두 줄로 구성한다.* + +> 이 unit 의 조각 3개가 50/88줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 관리회계영역·회계연도·기간·이체 버전(GC_VERSN)·헤더 텍스트·계획통화유형으로 BAPIPLNHDR 헤더를 채운다. + +```abap + 710| " 1. 헤더 작성 + 711| ES_HEADERINFO-CO_AREA = P_KOKRS. + 712| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 713| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 714| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 715| ES_HEADERINFO-VERSION = GC_VERSN. + 716| ES_HEADERINFO-DOC_HDR_TX = GT_DATA-BLTXT. + 717| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill the BAPIPLNHDR header with controlling area, fiscal year, period, transfer version and plan currency type. +- SAP 객체: BAPIPLNHDR +- 업무 키워드: 계획 헤더, 이체 버전, 회계연도, 기간 +- English: Plan Header, Version, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs), [`P_GJAHR`](#decl-zcoc0070top-122-p_gjahr), [`GC_VERSN`](#decl-zcoc0070top-32-gc_versn), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`GC_PLAN_CURR`](#decl-zcoc0070top-33-gc_plan_curr) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L710-L717` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#FILL_TABLES#C1` + +#### [calculation] Sender 코스트센터·원가요소에 이체 금액을 음수(-1 곱)로 변환하고 CONV_VIEW_WAERS로 통화 표시형식 변환 후 BAPIPCPOBJ/BAPIPCPTOT 라인을 추가한다. + +```abap + 731| " 1. SENDER + 732| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX. + 733| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX. + 734| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 735| + 736| ET_COOBJECT-OBJECT_INDEX = LV_INDEX. + 737| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL_S. + 738| APPEND ET_COOBJECT TO ET_COOBJECT. + 739| + 740| ET_TOTVALUE-VALUE_INDEX = LV_INDEX. + 741| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR_S. + 742| + 743| LV_VALUE = * -1. + 744| + 745| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 746| CHANGING LV_C_VALUE. + 747| + 748| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 749| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 750| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 751| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Append sender cost center/cost element line with negative transfer amount (converted by CONV_VIEW_WAERS) to BAPIPCPOBJ/BAPIPCPTOT. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT +- 업무 키워드: Sender 코스트센터, 예산 차감, 음수 금액, 통화 변환 +- English: Sender, Cost Center, Cost Element, Fixed Value +- 정의부(복사 시 함께 필요): [`LV_INDEX`](#decl-zcoc0070f01-696-lv_index), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`LV_VALUE`](#decl-zcoc0070f01-700-lv_value), [``](#decl-zcoc0070f01-698--fs_value-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0070f01-701-lv_c_value), [`P_TWAER`](#decl-zcoc0070top-119-p_twaer) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L731-L751` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#FILL_TABLES#C2` + +#### [calculation] Receiver 코스트센터·원가요소에 이체 금액을 양수(+)로 통화 변환 후 BAPIPCPOBJ/BAPIPCPTOT 라인을 추가해 Sender와 한 문서로 전기되도록 한다. + +```abap + 753| " 2. RECEIVER + 754| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX + 1. + 755| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX + 1. + 756| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 757| + 758| ET_COOBJECT-OBJECT_INDEX = LV_INDEX + 1. + 759| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL_R. + 760| APPEND ET_COOBJECT TO ET_COOBJECT. + 761| + 762| ET_TOTVALUE-VALUE_INDEX = LV_INDEX + 1. + 763| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR_R. + 764| + 765| LV_VALUE = . + 766| + 767| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 768| CHANGING LV_C_VALUE. + 769| + 770| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 771| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 772| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 773| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Append receiver cost center/cost element line with positive transfer amount to BAPIPCPOBJ/BAPIPCPTOT so sender and receiver post in one document. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT +- 업무 키워드: Receiver 코스트센터, 예산 증액, 양수 금액, 통화 변환 +- English: Receiver, Cost Center, Cost Element, Fixed Value +- 정의부(복사 시 함께 필요): [`LV_INDEX`](#decl-zcoc0070f01-696-lv_index), [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`LV_VALUE`](#decl-zcoc0070f01-700-lv_value), [``](#decl-zcoc0070f01-698--fs_value-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0070f01-701-lv_c_value), [`P_TWAER`](#decl-zcoc0070top-119-p_twaer) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L753-L773` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#FILL_TABLES#C3` + +### FORM INSERT_LOG — `ZCOC0070F01` L825-L870 (46줄) + +*BAPI 전기에 성공한 이체 건을 예산 조정 이력 테이블 ZCOT0020(BGTYPE '30' 이체)에 기록한다.* + +> 이 unit 의 조각 2개가 34/46줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 조정일자(SY-DATUM) 기준의 다음 예산 조정 순번(SEQ)을 Z_CO_GET_BGSEQ로 채번한다. + +```abap + 834| CALL FUNCTION 'Z_CO_GET_BGSEQ' + 835| EXPORTING + 836| I_ADJUST_DATE = SY-DATUM + 837| IMPORTING + 838| E_RESULTMSG = LV_RESULTMSG + 839| E_RESULTCODE = LV_RESULTCODE + 840| E_SEQ = LV_SEQ. +``` + +- **EN**: Get the next budget adjustment sequence number for today via Z_CO_GET_BGSEQ. +- 호출(파서): Z_CO_GET_BGSEQ +- SAP 객체: Z_CO_GET_BGSEQ, ZCOT0020 +- 업무 키워드: 순번 채번, 예산 조정 순번 +- English: Sequence Number, Budget Adjustment +- 정의부(복사 시 함께 필요): [`LV_RESULTMSG`](#decl-zcoc0070f01-827-lv_resultmsg), [`LV_RESULTCODE`](#decl-zcoc0070f01-828-lv_resultcode), [`LV_SEQ`](#decl-zcoc0070f01-826-lv_seq) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L834-L840` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#INSERT_LOG#C1` + +#### [db_write] 전기 성공(BAPI_RESULT='S') 건마다 Sender/Receiver 코스트센터·원가요소·이체금액·헤더텍스트를 BGTYPE '30'(이체), BGSRC '01'(SAP 입력)으로 구성해 ZCOT0020에 MODIFY로 저장한다. + +```abap + 842| LOOP AT GT_DATA WHERE BAPI_RESULT = 'S'. + 843| LT_ZCOT0020-ADJUST_DATE = SY-DATUM. + 844| LT_ZCOT0020-KOKRS = P_KOKRS. + 845| LT_ZCOT0020-BGTYPE = '30'. " 이체 + 846| LT_ZCOT0020-SEQ = LV_SEQ. + 847| LT_ZCOT0020-GJAHR = P_GJAHR. + 848| LT_ZCOT0020-SEND_KOSTL = GT_DATA-KOSTL_S. + 849| LT_ZCOT0020-SEND_PERBL = P_PERBL. + 850| LT_ZCOT0020-SEND_KSTAR = GT_DATA-KSTAR_S. + 851| LT_ZCOT0020-RECV_KOSTL = GT_DATA-KOSTL_R. + 852| LT_ZCOT0020-RECV_PERBL = P_PERBL. + 853| LT_ZCOT0020-RECV_KSTAR = GT_DATA-KSTAR_R. + 854| LT_ZCOT0020-TRANS_WKG = GT_DATA-WKG001. + 855| LT_ZCOT0020-TWAER = P_TWAER. + 856| LT_ZCOT0020-BLTXT = GT_DATA-BLTXT. + 857| LT_ZCOT0020-ERNAM = SY-UNAME. + 858| LT_ZCOT0020-ERZEIT = SY-UZEIT. + 859| LT_ZCOT0020-BGSRC = '01'. " SAP에서 입력 + 860| APPEND LT_ZCOT0020. + 861| CLEAR : LT_ZCOT0020. + 862| + 863| LV_SEQ = LV_SEQ + 1. + 864| ENDLOOP. + 865| + 866| IF LT_ZCOT0020[] IS NOT INITIAL. + 867| MODIFY ZCOT0020 FROM TABLE LT_ZCOT0020. + 868| ENDIF. +``` + +- **EN**: Build ZCOT0020 log records (BGTYPE '30' transfer, BGSRC '01') for each successfully posted line with sender/receiver cost center, cost element and amount, then MODIFY ZCOT0020. +- 테이블(파서): read - / write [ZCOT0020](/tables/ZCOT0020.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 예산 이체 이력, 로그 저장, Sender 코스트센터, Receiver 코스트센터, 이체 금액 +- English: Budget Transfer Log, Cost Center, Cost Element, MODIFY +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0070top-56-gt_data), [`LT_ZCOT0020`](#decl-zcoc0070f01-830-lt_zcot0020), [`P_KOKRS`](#decl-zcoc0070top-113-p_kokrs), [`LV_SEQ`](#decl-zcoc0070f01-826-lv_seq), [`P_GJAHR`](#decl-zcoc0070top-122-p_gjahr), [`P_PERBL`](#decl-zcoc0070top-123-p_perbl), [`P_TWAER`](#decl-zcoc0070top-119-p_twaer) +- 위치: `abap://ZCOC0070/ZCOC0070F01#L842-L868` · confidence 0.9 · `ZCOC0070#ZCOC0070F01#FORM#INSERT_LOG#C2` + +### FORM DEQUEUE_ZCOT0020 — `ZCOC0070F01` L809-L816 (8줄) + +*예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 프로그램 종료 시 예산조정 이력 테이블 ZCOT0020의 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제하여 다른 사용자가 처리할 수 있게 한다. + +```abap + 811| CALL FUNCTION 'DEQUEUE_EZ_ZCOT0020' + 812| EXPORTING + 813| MODE_ZCOT0020 = 'X' + 814| MANDT = SY-MANDT. +``` + +- **EN**: Release the lock on budget adjustment log table ZCOT0020 via DEQUEUE_EZ_ZCOT0020 when leaving the program. +- 호출(파서): DEQUEUE_EZ_ZCOT0020 +- SAP 객체: DEQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 해제, 예산조정 이력, 동시성 제어 +- English: Dequeue, Lock Object, Budget Adjustment Log +- 위치: `abap://ZCOC0070/ZCOC0070F01#L811-L814` · confidence 0.95 · `ZCOC0070#ZCOC0070F01#FORM#DEQUEUE_ZCOT0020#C1` + +### FORM CALL_BG_REPORT — `ZCOC0070F01` L1003-L1007 (5줄) + +*부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 조회 버튼(&DIP)에서 부서 예산 현황 리포트 트랜잭션 ZCOR0030을 호출한다. + +```abap + 1005| CALL TRANSACTION 'ZCOR0030'. +``` + +- **EN**: Call transaction ZCOR0030 to display the department budget report. +- 호출(파서): ZCOR0030 +- SAP 객체: ZCOR0030 +- 업무 키워드: 예산 리포트 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Report +- 위치: `abap://ZCOC0070/ZCOC0070F01#L1005-L1005` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#CALL_BG_REPORT#C1` + +### FORM CALL_BG_ADJ_LOG — `ZCOC0070F01` L1016-L1020 (5줄) + +*예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 로그 버튼(&LOG)에서 예산조정 이력(ZCOT0020) 조회 트랜잭션 ZCOR0040을 호출한다. + +```abap + 1018| CALL TRANSACTION 'ZCOR0040'. +``` + +- **EN**: Call transaction ZCOR0040 to display the budget adjustment log. +- 호출(파서): ZCOR0040 +- SAP 객체: ZCOR0040 +- 업무 키워드: 예산조정 이력 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Adjustment Log +- 위치: `abap://ZCOC0070/ZCOC0070F01#L1018-L1018` · confidence 0.85 · `ZCOC0070#ZCOC0070F01#FORM#CALL_BG_ADJ_LOG#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0070I01` L6-L36 (31줄) + +*화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 26/31줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너 해제와 ZCOT0020 잠금 해제 후 화면을 나가고, &POST 시 추경 BAPI 전기(EXECUTE_BAPI), &DIP 시 예산 리포트 ZCOR0030, &LOG 시 예산조정 이력 ZCOR0040 트랜잭션을 호출한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| PERFORM DEQUEUE_ZCOT0020 . + 18| + 19| IF GV_T_OK_CODE = 'EXIT'. + 20| LEAVE PROGRAM. + 21| ELSE. + 22| LEAVE TO SCREEN 0. + 23| ENDIF. + 24| "Function Code 맵핑 + 25| WHEN '&POST'. + 26| PERFORM EXECUTE_BAPI. + 27| WHEN '&DIP'. + 28| PERFORM CALL_BG_REPORT. + 29| WHEN '&LOG'. + 30| PERFORM CALL_BG_ADJ_LOG. + 31| + 32| WHEN OTHERS. + 33| * LEAVE PROGRAM. + 34| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: leave with container cleanup and dequeue on BACK/CANC/EXIT, run supplementary budget BAPI posting on &POST, call budget report ZCOR0030 on &DIP and adjustment log ZCOR0040 on &LOG. +- 호출(파서): CLEAR_CONTAINER_PROC, DEQUEUE_ZCOT0020, EXECUTE_BAPI, CALL_BG_REPORT, CALL_BG_ADJ_LOG +- SAP 객체: ZCOR0030, ZCOR0040, ZCOT0020 +- 업무 키워드: 기능코드 분기, 추경 전기, 예산 리포트 호출, 예산조정 로그, 잠금 해제 +- English: User Command, Supplementary Budget, Posting, Call Transaction, Dequeue +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0070top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0070c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0070/ZCOC0070I01#L9-L34` · confidence 0.9 · `ZCOC0070#ZCOC0070I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (334건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0070C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0070c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0070TOP` (33건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0070top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0070top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0070top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0070top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0070top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0070top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0070top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0070top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0070top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0070top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0070top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0070top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0070top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0070top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcoc0070top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L31-L31 {#decl-zcoc0070top-31-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0070'. +``` + +#### GC_VERSN — constants · L32-L32 {#decl-zcoc0070top-32-gc_versn} + +```abap +CONSTANTS : GC_VERSN LIKE COSP-VERSN VALUE 'B13'. " 이체 +``` + +#### GC_PLAN_CURR — constants · L33-L33 {#decl-zcoc0070top-33-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcoc0070top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L44-L51 {#decl-zcoc0070top-44-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL_S(10) TYPE C, + KSTAR_S(10) TYPE C, + KOSTL_R(10) TYPE C, + KSTAR_R(10) TYPE C, + WKG001(20) TYPE C, + BLTXT(50) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L54-L54 {#decl-zcoc0070top-54-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L56-L80 {#decl-zcoc0070top-56-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL_S LIKE CSKS-KOSTL, + KOSTL_ST LIKE CSKT-KTEXT, + KOSTL_R LIKE CSKS-KOSTL, + KOSTL_RT LIKE CSKT-KTEXT, + KSTAR_S LIKE CSKA-KSTAR, + KSTAR_ST LIKE CSKU-KTEXT, + KSTAR_R LIKE CSKA-KSTAR, + KSTAR_RT LIKE CSKU-KTEXT, + WKG001 LIKE COSP-WKG001, + BLTXT LIKE COVJ-BLTXT, + WKG001_VIEW LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + BG_AVAILABLE LIKE COSP-WKG001, + BG_AVABLE_VIEW LIKE COSP-WKG001, + + BAPI_RESULT TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L82-L82 {#decl-zcoc0070top-82-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L84-L89 {#decl-zcoc0070top-84-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L92-L92 {#decl-zcoc0070top-92-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL — data · L94-L97 {#decl-zcoc0070top-94-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_KSTAR — data · L99-L102 {#decl-zcoc0070top-99-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GT_ZCOS0030 — data · L104-L104 {#decl-zcoc0070top-104-gt_zcos0030} + +```abap +DATA : GT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L113-L114 {#decl-zcoc0070top-113-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L119-L120 {#decl-zcoc0070top-119-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L122-L122 {#decl-zcoc0070top-122-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERBL — parameter · L123-L123 {#decl-zcoc0070top-123-p_perbl} + +```abap +PARAMETER : P_PERBL LIKE COSP-PERBL OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +#### P_FNAME — parameter · L128-L129 {#decl-zcoc0070top-128-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0070_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0070F01` (45건) + +#### L_UCOMM — data · unit 로컬 · L112-L112 {#decl-zcoc0070f01-112-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L156-L156 {#decl-zcoc0070f01-156-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L157-L157 {#decl-zcoc0070f01-157--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L158-L158 {#decl-zcoc0070f01-158--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L159-L159 {#decl-zcoc0070f01-159-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LT_FCAT — data · unit 로컬 · L186-L186 {#decl-zcoc0070f01-186-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L187-L187 {#decl-zcoc0070f01-187-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L188-L188 {#decl-zcoc0070f01-188-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L189-L189 {#decl-zcoc0070f01-189-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L190-L190 {#decl-zcoc0070f01-190-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L191-L191 {#decl-zcoc0070f01-191--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L192-L192 {#decl-zcoc0070f01-192--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L193-L193 {#decl-zcoc0070f01-193--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L195-L198 {#decl-zcoc0070f01-195-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_EXISTS — data · unit 로컬 · L317-L317 {#decl-zcoc0070f01-317-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LV_MESSAGE — data · unit 로컬 · L463-L463 {#decl-zcoc0070f01-463-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L464-L464 {#decl-zcoc0070f01-464-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### L_ANSWER — data · unit 로컬 · L548-L548 {#decl-zcoc0070f01-548-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L582-L582 {#decl-zcoc0070f01-582-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L583-L583 {#decl-zcoc0070f01-583-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L584-L584 {#decl-zcoc0070f01-584-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L585-L585 {#decl-zcoc0070f01-585-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L586-L586 {#decl-zcoc0070f01-586-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L587-L587 {#decl-zcoc0070f01-587-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L588-L588 {#decl-zcoc0070f01-588-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L589-L589 {#decl-zcoc0070f01-589-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_PERIOD — data · unit 로컬 · L591-L591 {#decl-zcoc0070f01-591-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_BG_OVER — data · unit 로컬 · L592-L592 {#decl-zcoc0070f01-592-lv_bg_over} + +```abap + DATA : LV_BG_OVER. +``` + +#### LV_INDEX — data · unit 로컬 · L696-L696 {#decl-zcoc0070f01-696-lv_index} + +```abap + DATA : LV_INDEX TYPE BAPIACPSTRU-OBJECT_INDEX. +``` + +#### — field-symbol · unit 로컬 · L698-L698 {#decl-zcoc0070f01-698--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L700-L700 {#decl-zcoc0070f01-700-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L701-L701 {#decl-zcoc0070f01-701-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_SEQ — data · unit 로컬 · L826-L826 {#decl-zcoc0070f01-826-lv_seq} + +```abap + DATA : LV_SEQ TYPE ZCOT0020-SEQ. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L827-L827 {#decl-zcoc0070f01-827-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L828-L828 {#decl-zcoc0070f01-828-lv_resultcode} + +```abap + DATA : LV_RESULTCODE(1) TYPE C. +``` + +#### LT_ZCOT0020 — data · unit 로컬 · L830-L830 {#decl-zcoc0070f01-830-lt_zcot0020} + +```abap + DATA : LT_ZCOT0020 LIKE ZCOT0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L880-L880 {#decl-zcoc0070f01-880-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L881-L881 {#decl-zcoc0070f01-881-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L882-L882 {#decl-zcoc0070f01-882-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L883-L883 {#decl-zcoc0070f01-883-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L955-L955 {#decl-zcoc0070f01-955-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L956-L956 {#decl-zcoc0070f01-956-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0030 — data · unit 로컬 · L957-L957 {#decl-zcoc0070f01-957-lt_zcos0030} + +```abap + DATA : LT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L959-L959 {#decl-zcoc0070f01-959-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L960-L960 {#decl-zcoc0070f01-960-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0070 L25-31 | 0 | INITIALIZATION 이벤트에서 관리회계영역 텍스트 설정(SET_DYNP)과 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0070 L32-34 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능키(양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0070 L35-40 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0070 L41-45 | 0 | 업로드 파일 파라미터 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC0070 L46-57 | 1 | 입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0070 L58-69 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0070C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0070C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0070C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0070C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0070C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0070C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0070C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0070C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0070C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0070C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0070C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0070C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0070C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0070C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0070C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0070C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0070C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0070C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0070C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0070C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0070C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0070C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0070C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0070C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0070C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0070F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC0070F01 L22-29 | 0 | 초기화 시 관리회계영역 P_KOKRS의 기준 정보를 SET_KOKRS_BASE로 조회해 명칭(P_BEZEI)을 선택화면에 표시한다. | +| CHECK_INPUT | FORM | ZCOC0070F01 L38-45 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0070F01 L51-73 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/전기 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC0070F01 L87-90 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA를 호출해 엑셀 업로드·검증 처리를 시작하는 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0070F01 L99-102 | 0 | 선택화면 기능키 01에 엑셀 양식 다운로드 버튼(아이콘·텍스트)을 설정한다. | +| CONTROL_FCXX | FORM | ZCOC0070F01 L111-123 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서 ZCOC0070을 열어 예산 이체 업로드 양식을 제공한다. | +| READ_DATA | FORM | ZCOC0070F01 L132-148 | 1 | 엑셀 업로드 → 형식 정리(SET_BDC_FORM) → GT_DATA 이전·통화 변환 → 마스터 검증·텍스트 보완·가용예산 조회의 전체 데이터 읽기 흐름을 순서대로 호출한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0070F01 L155-176 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0070F01 L185-275 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0070F01 L284-308 | 1 | 엑셀 원본 GT_UPLOAD를 메인 테이블 GT_DATA로 이전하면서 코스트센터 대문자 변환, 이체 금액 1000배 변환, 통화 세팅을 수행하고 숫자 변환 오류를 처리한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0070F01 L316-334 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0070F01 L343-451 | 3 | 업로드된 이체 데이터의 Sender/Receiver 코스트센터·원가요소 존재 여부(CSKS/CSKT, CSKB/CSKU)와 금액 0·음수 여부를 검증해 오류 행을 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0070F01 L461-473 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0070F01 L482-490 | 0 | 오류가 발생한 필드를 ALV 셀 색상(COL=6, 빨강)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 보조 FORM이다. | +| EDIT_DATA | FORM | ZCOC0070F01 L499-537 | 1 | 검증된 코스트센터(GT_KOSTL)·원가요소(GT_KSTAR) 마스터에서 Sender/Receiver의 명칭을 읽어 GT_DATA 표시 텍스트 필드를 채운다. | +| EXECUTE_BAPI | FORM | ZCOC0070F01 L546-572 | 1 | 중복 전기 여부를 확인하고 사용자 확인 팝업 후 BAPI_POST(예산 이체 전기)와 INSERT_LOG(ZCOT0020 기록)를 실행한다. | +| BAPI_POST | FORM | ZCOC0070F01 L581-676 | 2 | GT_DATA 각 이체 행에 대해 전기 직전 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST(DELTA='X')로 Sender(-)/Receiver(+)를 한 문서로 전기하고 결과를 행 상태에 반영한다. | +| FILL_TABLES | FORM | ZCOC0070F01 L688-775 | 3 | 현재 GT_DATA 행의 이체 금액으로 BAPI_COSTACTPLN_POSTPRIMCOST용 헤더·인덱스·CO오브젝트·금액 테이블을 Sender(-)/Receiver(+) 두 줄로 구성한다. | +| ENQUEUE_ZCOT0020 | FORM | ZCOC0070F01 L784-803 | 1 | 예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다. | +| DEQUEUE_ZCOT0020 | FORM | ZCOC0070F01 L809-816 | 1 | 예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다. | +| INSERT_LOG | FORM | ZCOC0070F01 L825-870 | 2 | BAPI 전기에 성공한 이체 건을 예산 조정 이력 테이블 ZCOT0020(BGTYPE '30' 이체)에 기록한다. | +| SET_AVAIABLE_BUGDET | FORM | ZCOC0070F01 L879-942 | 2 | 업로드된 모든 Sender 코스트센터·원가요소의 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 일괄 조회해 GT_DATA에 세팅하고 이체 금액이 가용예산을 초과하는 행을 오류 처리한다. | +| GET_CURRENT_AVAILABLE_BG | FORM | ZCOC0070F01 L951-994 | 1 | 코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다. | +| CALL_BG_REPORT | FORM | ZCOC0070F01 L1003-1007 | 1 | 부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다. | +| CALL_BG_ADJ_LOG | FORM | ZCOC0070F01 L1016-1020 | 1 | 예산조정 이력 조회 트랜잭션 ZCOR0040을 호출한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0070I01 L6-36 | 1 | 화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0070O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0070O01 L26-70 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0070O01 L80-124 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0070O01 L132-152 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0070O01 L160-169 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0070O01 L177-199 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0070O01 L208-236 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0070O01 L245-273 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0070O01 L283-385 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0070O01 L393-420 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0080.md b/wiki/programs/ZCOC0080.md new file mode 100644 index 0000000..4115d59 --- /dev/null +++ b/wiki/programs/ZCOC0080.md @@ -0,0 +1,5354 @@ +--- +type: abap-program +title: "ZCOC0080 — 예산 조정(환수)" +description: "코스트센터별 원가요소(Cost Element)에 배정된 예산 중 미사용 금액을 환수(Budget Return)하기 위해, 엑셀 양식(코스트센터·원가요소·금액·텍스트)을 업로드하여 CSKS/CSKT·CSKB/CSKU 로 마스터 유효성을 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL 로 가용예산을 조회한 뒤, 사용자가 '전기' 버튼을 누르면 BAPI_COSTACTPLN_POSTPRIMCOST 로 예산 버전 B14(환수)에 금액을 음수(-1)로 델타 전기(Primary Cost Planning)한다. 전기 결과는 예산조정 이력 테이블 ZCOT0020 (BGTYPE '40' 환수, BGSRC '01') 에 로그로 기록되며, 예산 리포트(ZCOR0030) 및 조정 이력(ZCOR0040) 화면을 호출할 수 있다." +resource: "abap://ZCOC0080" +tags: ["예산관리", "예산환수", "코스트센터", "원가요소", "엑셀업로드", "계획전기", "CO-CCA", "순번 채번", "예산조정 이력", "예산 환수", "조정 이력", "로그 기록", "전기 결과", "예산 버전", "계획 헤더", "관리회계영역", "환수 금액", "음수 전환", "통화 변환", "가용예산 재확인"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:12+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKS", "CSKT", "CSKU", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0020"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTACTPLN_POSTPRIMCOST", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DEQUEUE_EZ_ZCOT0020", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "ENQUEUE_EZ_ZCOT0020", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE"] +x-code-hash: "8cf53aaf4deec897f1e70cdb0a901c89bbf0d3eed15c3159cdfe1dfaadf85397" +x-unit-count: 151 +x-chunk-count: 80 +x-declaration-count: 208 +--- + +## 업무 목적 + +코스트센터별 원가요소(Cost Element)에 배정된 예산 중 미사용 금액을 환수(Budget Return)하기 위해, 엑셀 양식(코스트센터·원가요소·금액·텍스트)을 업로드하여 CSKS/CSKT·CSKB/CSKU 로 마스터 유효성을 검증하고 Z_CO_SEL_KOSTL_BUDGET_ACTUAL 로 가용예산을 조회한 뒤, 사용자가 '전기' 버튼을 누르면 BAPI_COSTACTPLN_POSTPRIMCOST 로 예산 버전 B14(환수)에 금액을 음수(-1)로 델타 전기(Primary Cost Planning)한다. 전기 결과는 예산조정 이력 테이블 ZCOT0020 (BGTYPE '40' 환수, BGSRC '01') 에 로그로 기록되며, 예산 리포트(ZCOR0030) 및 조정 이력(ZCOR0040) 화면을 호출할 수 있다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 템플릿 ZCOC0080)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 경로가 입력되었는지 확인하고 ALV 필드카탈로그·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 예산조정 이력 테이블 ZCOT0020 에 잠금(ENQUEUE_EZ_ZCOT0020)을 설정한다 (ENQUEUE_ZCOT0020) +4. 엑셀 파일(2행부터)을 읽어 GT_UPLOAD 에 적재한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA) +5. 숫자·날짜·체크박스 형식 변환과 ALPHA 변환을 수행한 뒤 GT_DATA 로 이관하고 금액을 1000원 단위 및 내부 통화형식으로 변환한다 (SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +6. 금액이 0 또는 음수인지, 코스트센터(CSKS/CSKT)·원가요소(CSKB/CSKU)가 존재하는지 검증하여 오류 행을 붉게 표시한다 (VALIDATION_CHECK) +7. Z_CO_SEL_KOSTL_BUDGET_ACTUAL 로 Sender 코스트센터/원가요소의 가용예산을 조회하여 환수 금액이 가용예산을 초과하면 오류 처리한다 (SET_AVAIABLE_BUGDET) +8. 코스트센터·원가요소 텍스트를 보강하고 화면 100 의 ALV 그리드에 표시한다 (EDIT_DATA, CALL SCREEN 100) +9. '전기'(&POST) 버튼 시 확인 팝업 후 가용예산을 재확인하고 BAPI_COSTACTPLN_POSTPRIMCOST 로 버전 B14 에 음수 금액을 델타 전기, 성공 시 COMMIT 후 ZCOT0020 에 이력을 저장한다 (EXECUTE_BAPI, BAPI_POST_SENDER, GET_CURRENT_AVAILABLE_BG, FILL_TABLES, INSERT_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (KOSTL, KSTAR, WKG001, BLTXT 문자형) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 메인 ALV 데이터 (코스트센터·원가요소·환수금액·가용예산·상태·메시지) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, SET_AVAIABLE_BUGDET, EDIT_DATA, BAPI_POST_SENDER / 소비: DISPLAY_ALV_LIST, FILL_TABLES, INSERT_LOG) +- `GT_KOSTL` — 유효 코스트센터 및 텍스트 (CSKS/CSKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_KSTAR` — 유효 원가요소 및 텍스트 (CSKB/CSKU) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_ZCOS0030` — Z_CO_SEL_KOSTL_BUDGET_ACTUAL 결과: 코스트센터/원가요소별 가용예산 (채움: SET_AVAIABLE_BUGDET / 소비: SET_AVAIABLE_BUGDET) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKS, CSKT, CSKU, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0020 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTACTPLN_POSTPRIMCOST, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DEQUEUE_EZ_ZCOT0020, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, ENQUEUE_EZ_ZCOT0020, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM + +## 로직 조각 (80건 / unit 67개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0080F01` L111-L123 (13줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 문서(GC_SMW0, 예산 조정-환수 Upload 양식)를 열어 엑셀 양식을 다운로드하게 한다. + +```abap + 115| CASE L_UCOMM. + 116| WHEN 'FC01'. + 117| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 118| EXPORTING + 119| P_DOCNAM = GC_SMW0 + 120| P_TITLE = '예산 조정 - 환수 Upload 양식'(F03). + 121| ENDCASE. +``` + +- **EN**: On function key FC01 open the SMW0 Excel template via Z_CO_OPEN_SMW0 so the user can download the upload form. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 템플릿 +- English: SMW0 template, Web repository, Excel template +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0080f01-112-l_ucomm), [`GC_SMW0`](#decl-zcoc0080top-31-gc_smw0) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L115-L121` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0080` L47-L58 (12줄) + +*입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다.* + +> 이 unit 의 조각 1개가 6/12줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHECK_INPUT으로 파일 입력을 검증하고 INITIALIZE_DATA 후 ENQUEUE_ZCOT0020으로 잠금을 건 뒤 PROCESS_DATA로 엑셀 추경 데이터를 읽어 검증한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| + 52| PERFORM ENQUEUE_ZCOT0020 USING GV_LOCK. + 53| + 54| PERFORM PROCESS_DATA. +``` + +- **EN**: Main flow: validate input, initialize, lock ZCOT0020, then read and validate the uploaded supplementary budget data. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, ENQUEUE_ZCOT0020, PROCESS_DATA +- SAP 객체: ZCOT0020 +- 업무 키워드: 메인 흐름, 입력 검증, 잠금, 엑셀 업로드 +- English: Main Processing, Enqueue, Excel Upload +- 정의부(복사 시 함께 필요): [`GV_LOCK`](#decl-zcoc0080top-21-gv_lock) +- 위치: `abap://ZCOC0080/ZCOC0080#L49-L54` · confidence 0.85 · `ZCOC0080#ZCOC0080#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0080F01` L38-L45 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 40| IF P_FNAME IS INITIAL. + 41| MESSAGE S000 DISPLAY LIKE 'E' WITH + 42| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 43| LEAVE LIST-PROCESSING. + 44| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0080top-125-p_fname) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L40-L44` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0080F01` L51-L73 (23줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/전기 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/23줄(35%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 56| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 57| P_BEZEI = GV_KOKRS_BEZEI. + 58| + 59| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 60| " MAIN ALV용 딕셔너리 구조 취득. + 61| PERFORM GET_FCAT_LIKE_ITAB + 62| TABLES GT_MAIN_FIELDCAT + 63| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc0080top-39-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc0080top-29-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L56-L63` · confidence 0.75 · `ZCOC0080#ZCOC0080F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM ENQUEUE_ZCOT0020 — `ZCOC0080F01` L723-L742 (20줄) + +*예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다.* + +> 이 unit 의 조각 1개가 18/20줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] ENQUEUE_EZ_ZCOT0020으로 ZCOT0020 테이블 전체 잠금을 요청하고, 타 사용자 잠금(FOREIGN_LOCK) 등 실패 시 시스템 메시지를 I 타입으로 보여주고 P_ERR='X'를 반환한다. + +```abap + 724| CALL FUNCTION 'ENQUEUE_EZ_ZCOT0020' + 725| EXPORTING + 726| MODE_ZCOT0020 = 'X' + 727| MANDT = SY-MANDT + 728| EXCEPTIONS + 729| FOREIGN_LOCK = 1 + 730| SYSTEM_FAILURE = 2 + 731| OTHERS = 3. + 732| + 733| IF SY-SUBRC <> 0. + 734| * Retrieve message displayed within Function Module + 735| MESSAGE ID SY-MSGID + 736| TYPE 'I' + 737| NUMBER SY-MSGNO + 738| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 739| P_ERR = 'X'. + 740| EXIT. + 741| ENDIF. +``` + +- **EN**: Request an exclusive lock on ZCOT0020 via ENQUEUE_EZ_ZCOT0020; on FOREIGN_LOCK or failure show the system message and return error flag P_ERR. +- 호출(파서): ENQUEUE_EZ_ZCOT0020 +- SAP 객체: ENQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 설정, 예산조정 이력, 동시 실행 방지, 잠금 오류 +- English: Enqueue, Lock Object, Foreign Lock, Budget Adjustment Log +- 위치: `abap://ZCOC0080/ZCOC0080F01#L724-L741` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#ENQUEUE_ZCOT0020#C1` + +### FORM READ_DATA — `ZCOC0080F01` L132-L149 (18줄) + +*엑셀 업로드부터 형식 변환·이관·검증·가용예산 세팅·텍스트 보강까지 데이터 읽기 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 16/18줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] UPLOAD_EXCEL_DATA → SET_BDC_FORM → TRANSFER_GT_DATA/CONVERT_KRW_DATA → VALIDATION_CHECK/SET_AVAIABLE_BUGDET → EDIT_DATA 순으로 업로드 처리 파이프라인을 실행한다. + +```abap + 133| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 134| + 135| CHECK GT_UPLOAD[] IS NOT INITIAL. + 136| + 137| "2. 업로드가 제대로 되었다면. + 138| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 139| + 140| "3. 엑셀 데이터를 인터널 테이블로 이전 + 141| PERFORM TRANSFER_GT_DATA. + 142| PERFORM CONVERT_KRW_DATA. + 143| + 144| "4. Validation + 145| PERFORM VALIDATION_CHECK. + 146| PERFORM SET_AVAIABLE_BUGDET. + 147| + 148| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate the upload pipeline: read Excel, cleanse, transfer, validate, set available budget and enrich texts. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, SET_AVAIABLE_BUGDET, EDIT_DATA +- 업무 키워드: 업로드 처리 흐름, 검증, 가용예산 +- English: Upload pipeline, Validation +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0080top-125-p_fname), [`GT_UPLOAD`](#decl-zcoc0080top-44-gt_upload) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L133-L148` · confidence 0.8 · `ZCOC0080#ZCOC0080F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0080F01` L316-L334 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 319| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 320| + 321| IF L_EXISTS = ABAP_FALSE. + 322| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 323| LEAVE LIST-PROCESSING. + 324| EXIT. + 325| ENDIF. + 326| + 327| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 328| 'GS_UPLOAD' + 329| P_NAME + 330| 1 "S_COL-LOW + 331| 2 "S_ROW-LOW + 332| 256 "S_COL-HIGH + 333| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0080f01-317-l_exists) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L319-L333` · confidence 0.85 · `ZCOC0080#ZCOC0080F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0080top-125-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0080F01` L186-L276 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 205| L_TABNAME = P_STRUCT_NM. + 206| + 207| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 208| USING L_TABNAME. + 209| + 210| SELECT DOMNAME LOWERCASE + 211| INTO TABLE LT_LOWERCASE + 212| FROM DD01L + 213| FOR ALL ENTRIES IN LT_FCAT + 214| WHERE DOMNAME = LT_FCAT-DOMNAME + 215| AND AS4LOCAL = 'A'. + 216| + 217| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0080f01-188-l_tabname), [`LT_FCAT`](#decl-zcoc0080f01-187-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0080f01-196-lt_lowercase) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L205-L217` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 219| LOOP AT LT_FCAT ASSIGNING . + 220| CASE -DATATYPE. + 221| " 숫자 타입 + 222| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 223| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 224| L_TYPE = 'NUMB'. + 225| " 날짜 + 226| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 227| L_TYPE = 'DATS'. + 228| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 229| "CHECK BOX + 230| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 231| L_TYPE = 'CHCK'. + 232| ENDIF. + 233| WHEN OTHERS. + 234| ENDCASE. + 235| + 236| IF -CONVEXIT IS NOT INITIAL. + 237| L_CONV_ALPHA = 'X'. + 238| ENDIF. + 239| + 240| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 241| CONTINUE. + 242| ENDIF. + 243| + 244| LOOP AT GT_UPLOAD ASSIGNING . + 245| CONCATENATE '-' -FIELDNAME + 246| INTO L_FSNAME. + 247| ASSIGN (L_FSNAME) TO . + 248| + 249| IF SY-SUBRC EQ 0. + 250| CASE L_TYPE. + 251| WHEN 'NUMB'. + 252| PERFORM BDC_CURR USING . + 253| WHEN 'DATS'. + 254| PERFORM BDC_DATE USING . + 255| WHEN 'CHCK'. + 256| PERFORM BDC_CHECKBOX USING . + 257| WHEN OTHERS. + 258| ENDCASE. + 259| + 260| IF L_CONV_ALPHA = 'X'. + 261| PERFORM ZERO_I USING . + 262| ENDIF. + 263| + 264| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 265| BINARY SEARCH. + 266| + 267| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 268| TRANSLATE TO UPPER CASE. + 269| ENDIF. + 270| ENDIF. + 271| ENDLOOP. + 272| + 273| CLEAR : L_TYPE. + 274| CLEAR : L_CONV_ALPHA. + 275| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0080f01-187-lt_fcat), [``](#decl-zcoc0080f01-194--fs_fcat-), [`L_TYPE`](#decl-zcoc0080f01-190-l_type), [`L_CONV_ALPHA`](#decl-zcoc0080f01-191-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0080top-44-gt_upload), [``](#decl-zcoc0080f01-192--fs_upload-), [`L_FSNAME`](#decl-zcoc0080f01-189-l_fsname), [``](#decl-zcoc0080f01-193--fs-), [`LT_LOWERCASE`](#decl-zcoc0080f01-196-lt_lowercase) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L219-L275` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0080F01` L285-L308 (24줄) + +*엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 코스트센터 대문자화, 추경금액 1000배 환산(CONVERT_1000_U), 통화 설정을 하고 숫자 변환 오류 시 중단한다.* + +> 이 unit 의 조각 1개가 22/24줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 GT_DATA로 복사하며 KOSTL을 대문자로 바꾸고 천원 단위 입력금액 WKG001을 CONVERT_1000_U로 원 단위로 환산·통화 P_TWAER를 설정하며, 숫자 필드에 문자가 있으면 CX_SY_CONVERSION_NO_NUMBER를 잡아 오류 메시지로 중단한 뒤 KOSTL·KSTAR로 정렬한다. + +```abap + 286| TRY. + 287| LOOP AT GT_UPLOAD. + 288| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 289| TRANSLATE GT_DATA-KOSTL TO UPPER CASE. + 290| GT_DATA-STATUS = GC_STATUS_INIT. + 291| GT_DATA-WKG001_VIEW = GT_DATA-WKG001. + 292| + 293| PERFORM CONVERT_1000_U USING GT_DATA-WKG001 + 294| CHANGING GT_DATA-WKG001. + 295| + 296| GT_DATA-TWAER = P_TWAER. + 297| + 298| APPEND GT_DATA. + 299| CLEAR : GT_DATA. + 300| ENDLOOP. + 301| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 302| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F04) + 303| DISPLAY LIKE 'E'. + 304| LEAVE LIST-PROCESSING. + 305| ENDTRY. + 306| + 307| SORT GT_DATA BY KOSTL KSTAR. +``` + +- **EN**: Copy each uploaded row to GT_DATA, upper-case the cost center, convert the thousand-won amount to won via CONVERT_1000_U, set currency, abort with an error on CX_SY_CONVERSION_NO_NUMBER, then sort by cost center and cost element. +- 호출(파서): CONVERT_1000_U +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 천원 단위 환산, 숫자 변환 오류, 대문자 변환, 추경 금액 +- English: Excel Upload, Amount Conversion, Conversion Error, Cost Center +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0080top-44-gt_upload), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_TWAER`](#decl-zcoc0080top-116-p_twaer) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L286-L307` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0080F01` L156-L177 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/22줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드마다 GT_DATA 각 라인의 금액 필드를 동적 ASSIGN해 CONV_DB_WAERS(CURRENCY_AMOUNT_IDOC_TO_SAP)로 회사 통화 내부형식 금액으로 변환한다. + +```abap + 162| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 163| WHERE DATATYPE = 'CURR'. + 164| + 165| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 166| INTO LV_FIELD. + 167| + 168| LOOP AT GT_DATA ASSIGNING . + 169| ASSIGN (LV_FIELD) TO . + 170| + 171| IF SY-SUBRC EQ 0. + 172| PERFORM CONV_DB_WAERS USING GV_WAERS. + 173| ENDIF. + 174| ENDLOOP. + 175| ENDLOOP. +``` + +- **EN**: For every CURR-type ALV field, dynamically assign the amount in each GT_DATA row and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONV_DB_WAERS, CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 월별 계획금액, 회사 통화 +- English: Currency Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0080top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0080f01-157-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0080f01-160-lv_field), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [``](#decl-zcoc0080f01-159--fs_data-), [``](#decl-zcoc0080f01-158--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L162-L175` · confidence 0.85 · `ZCOC0080#ZCOC0080F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0080F01` L343-L424 (82줄) + +*업로드 행의 금액(0/음수) 및 코스트센터(CSKS/CSKT)·원가요소(CSKB/CSKU) 존재 여부를 검증하여 오류 행을 표시한다.* + +> 이 unit 의 조각 3개가 75/82줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKS와 CSKT를 조인하여 관리회계영역 내 현재 유효한(DATAB~DATBI) 업로드 코스트센터와 텍스트를 GT_KOSTL에 조회하고 정렬한다. + +```abap + 346| SELECT A~KOSTL B~KTEXT AS KOSTL_T + 347| FROM CSKS AS A INNER JOIN CSKT AS B + 348| ON A~KOKRS = B~KOKRS + 349| AND A~KOSTL = B~KOSTL + 350| AND A~DATBI = B~DATBI + 351| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 352| FOR ALL ENTRIES IN GT_DATA + 353| WHERE A~KOKRS = P_KOKRS + 354| AND A~KOSTL = GT_DATA-KOSTL + 355| AND A~DATBI >= SY-DATUM + 356| AND A~DATAB <= SY-DATUM + 357| AND B~SPRAS = SY-LANGU. + 358| + 359| SORT GT_KOSTL BY KOSTL. +``` + +- **EN**: Select valid cost centers with descriptions from CSKS joined with CSKT for the uploaded cost centers in the controlling area. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKS, CSKT +- 업무 키워드: 코스트센터 마스터, 유효기간, 코스트센터 텍스트 +- English: Cost Center master, CSKS, CSKT +- 정의부(복사 시 함께 필요): [`GT_KOSTL`](#decl-zcoc0080top-89-gt_kostl), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L346-L359` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] CSKB와 CSKU를 조인하여 관리회계영역 내 현재 유효한 업로드 원가요소와 텍스트를 GT_KSTAR에 조회하고 정렬한다. + +```abap + 361| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 362| FROM CSKB AS A INNER JOIN CSKU AS B + 363| ON A~KSTAR = B~KSTAR + 364| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 365| FOR ALL ENTRIES IN GT_DATA + 366| WHERE A~KOKRS = P_KOKRS + 367| AND A~KSTAR = GT_DATA-KSTAR + 368| AND SPRAS = SY-LANGU + 369| AND A~DATBI >= SY-DATUM + 370| AND A~DATAB <= SY-DATUM. + 371| + 372| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Select valid cost elements with descriptions from CSKB joined with CSKU for the uploaded cost elements. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU +- 업무 키워드: 원가요소 마스터, 원가요소 텍스트, 유효기간 +- English: Cost Element master, CSKB, CSKU +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0080top-94-gt_kstar), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L361-L372` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행별로 금액 0·음수 여부와 GT_KOSTL/GT_KSTAR 존재 여부를 검사해 오류 시 메시지·빨간 상태·필드 강조를 설정하고 GV_UPLOAD_ERROR를 세운다. + +```abap + 374| LOOP AT GT_DATA. + 375| + 376| IF GT_DATA-WKG001 = 0. + 377| GT_DATA-MESSAGE = '금액이 입력되지 않았습니다.'(F10). + 378| GT_DATA-STATUS = GC_STATUS_RED. + 379| GV_UPLOAD_ERROR = 'X'. + 380| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 381| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 382| GT_DATA-MESSAGE. + 383| ENDIF. + 384| + 385| IF GT_DATA-WKG001 < 0. + 386| GT_DATA-MESSAGE = '양수(+) 금액만 입력하여 주십시오'(F11). + 387| GT_DATA-STATUS = GC_STATUS_RED. + 388| GV_UPLOAD_ERROR = 'X'. + 389| PERFORM SET_ERROR_FIELD_RED USING 'WKG001'. + 390| PERFORM ADD_DATA_MESSAGE USING 'WKG001' + 391| GT_DATA-MESSAGE. + 392| ENDIF. + 393| + 394| + 395| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 396| BINARY SEARCH. + 397| + 398| IF SY-SUBRC NE 0. + 399| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다'(F05). + 400| GT_DATA-STATUS = GC_STATUS_RED. + 401| GV_UPLOAD_ERROR = 'X'. + 402| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 403| PERFORM ADD_DATA_MESSAGE USING 'KOSTL' + 404| GT_DATA-MESSAGE. + 405| ENDIF. + 406| + 407| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR + 408| BINARY SEARCH. + 409| + 410| IF SY-SUBRC NE 0. + 411| GT_DATA-MESSAGE = '존재하지 않는 원가요소입니다'(F06). + 412| GT_DATA-STATUS = GC_STATUS_RED. + 413| GV_UPLOAD_ERROR = 'X'. + 414| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 415| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 416| GT_DATA-MESSAGE. + 417| ENDIF. + 418| + 419| MODIFY GT_DATA. CLEAR : GT_DATA. + 420| CLEAR : GT_KOSTL, GT_KSTAR. + 421| + 422| ENDLOOP. +``` + +- **EN**: Validate each row: amount not zero or negative, cost center and cost element exist; mark errors with message, red status and field highlight. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, CSKB +- 업무 키워드: 금액 검증, 코스트센터 존재, 원가요소 존재, 업로드 오류 +- English: Validation, Cost Center, Cost Element, Upload error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0080top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0080top-89-gt_kostl), [`GT_KSTAR`](#decl-zcoc0080top-94-gt_kstar) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L374-L422` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC0080F01` L434-L446 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 439| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 440| WITH KEY FIELDNAME = P_FIELD. + 441| + 442| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 443| INTO LV_MESSAGE. + 444| + 445| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0080top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0080f01-437-ls_fieldcat), [`LV_MESSAGE`](#decl-zcoc0080f01-436-lv_message), [`GT_DATA`](#decl-zcoc0080top-54-gt_data) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L439-L445` · confidence 0.8 · `ZCOC0080#ZCOC0080F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM SET_AVAIABLE_BUGDET — `ZCOC0080F01` L829-L888 (60줄) + +*업로드된 코스트센터/원가요소 전체의 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 GT_DATA에 세팅하고 환수금액이 가용예산을 초과하는 행을 오류로 표시한다.* + +> 이 unit 의 조각 2개가 48/60줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_DATA의 코스트센터·원가요소를 입력 테이블로 모아 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 회계연도·기간의 가용예산(GT_ZCOS0030)을 조회하고 정렬한다. + +```abap + 839| LOOP AT GT_DATA. + 840| LT_ZCOS0010-KOSTL = GT_DATA-KOSTL. + 841| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 842| + 843| LT_ZCOS0020-KSTAR = GT_DATA-KSTAR. + 844| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 845| ENDLOOP. + 846| + 847| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 848| EXPORTING + 849| I_KOKRS = P_KOKRS + 850| I_GJAHR = P_GJAHR + 851| I_S_PERBL = P_PERBL + 852| I_E_PERBL = P_PERBL + 853| IMPORTING + 854| E_RESULTCODE = LV_RESULTCODE + 855| E_RESULTMSG = LV_RESULTMSG + 856| TABLES + 857| IT_KOSTL = LT_ZCOS0010 + 858| IT_KSTAR = LT_ZCOS0020 + 859| ET_ZCOS0030 = GT_ZCOS0030. + 860| + 861| SORT GT_ZCOS0030 BY KOSTL KSTAR. +``` + +- **EN**: Collect cost centers and cost elements from GT_DATA and call Z_CO_SEL_KOSTL_BUDGET_ACTUAL to fetch available budget per key into GT_ZCOS0030. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산 조회, 코스트센터, 원가요소, 예산 실적 +- English: Available budget, Budget vs actual, Cost Center +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`LT_ZCOS0010`](#decl-zcoc0080f01-830-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0080f01-831-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0080top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0080top-120-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0080f01-832-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0080f01-833-lv_resultmsg), [`GT_ZCOS0030`](#decl-zcoc0080top-101-gt_zcos0030) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L839-L861` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#SET_AVAIABLE_BUGDET#C1` + +#### [validation] 행별로 가용예산을 GT_DATA에 채우고 1000원 단위 표시값을 만든 뒤, 환수 금액(WKG001)이 가용예산보다 크면 오류 메시지·빨간 상태로 표시하고 업로드 오류 플래그를 세운다. + +```abap + 863| LOOP AT GT_DATA. + 864| + 865| " SENDER 계정의 가용예산을 체크. + 866| READ TABLE GT_ZCOS0030 WITH KEY + 867| KOSTL = GT_DATA-KOSTL + 868| KSTAR = GT_DATA-KSTAR BINARY SEARCH. + 869| + 870| IF SY-SUBRC EQ 0. + 871| GT_DATA-BG_AVAILABLE = GT_ZCOS0030-BG_AVAILABLE. + 872| PERFORM CONVERT_1000_D USING GT_DATA-BG_AVAILABLE + 873| CHANGING GT_DATA-BG_AVABLE_VIEW. + 874| ENDIF. + 875| + 876| IF GT_DATA-WKG001 > + 877| GT_DATA-BG_AVAILABLE. + 878| GT_DATA-MESSAGE = '해당 Sender 원가요소의 가용예산보다 많은 금액이 입력되었습니다.'(F12). + 879| GT_DATA-STATUS = GC_STATUS_RED. + 880| GV_UPLOAD_ERROR = 'X'. + 881| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 882| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 883| GT_DATA-MESSAGE. + 884| ENDIF. + 885| + 886| MODIFY GT_DATA. CLEAR : GT_DATA. + 887| ENDLOOP. +``` + +- **EN**: Set available budget per row and flag rows in red with a message when the return amount exceeds the Sender cost element's available budget. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOS0030 +- 업무 키워드: 가용예산 초과, 환수 금액 검증, 오류 표시 +- English: Budget check, Validation, Sender cost element +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GT_ZCOS0030`](#decl-zcoc0080top-101-gt_zcos0030), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0080top-22-gv_upload_error) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L863-L887` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#SET_AVAIABLE_BUGDET#C2` + +### FORM EDIT_DATA — `ZCOC0080F01` L472-L500 (29줄) + +*GT_DATA 각 라인에 GT_KOSTL·GT_KSTAR에서 찾은 코스트센터명·원가요소명을 보완한다.* + +> 이 unit 의 조각 1개가 25/29줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] GT_DATA 라인마다 GT_KOSTL(CSKS/CSKT)에서 코스트센터명, GT_KSTAR(CSKB/CSKU)에서 원가요소명을 BINARY SEARCH로 읽어 KOSTL_T·KSTAR_T를 채운다. + +```abap + 474| LOOP AT GT_DATA. + 475| + 476| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTL + 477| BINARY SEARCH. + 478| + 479| IF SY-SUBRC EQ 0. + 480| GT_DATA-KOSTL_T = GT_KOSTL-KOSTL_T. + 481| ENDIF. + 482| + 483| READ TABLE GT_KSTAR WITH KEY KSTAR = GT_DATA-KSTAR + 484| BINARY SEARCH. + 485| + 486| IF SY-SUBRC EQ 0. + 487| GT_DATA-KSTAR_T = GT_KSTAR-KSTAR_T. + 488| ENDIF. + 489| + 490| * " 1000원 단위로 보이기 위해 화면상에만 표시할 금액 + 491| * PERFORM CONVERT_1000_D USING GT_DATA-WKG001_VIEW + 492| * CHANGING GT_DATA-WKG001_VIEW. + 493| + 494| CLEAR : GT_KOSTL, GT_KSTAR. + 495| + 496| MODIFY GT_DATA. CLEAR : GT_DATA. + 497| + 498| ENDLOOP. +``` + +- **EN**: For each GT_DATA line look up the cost center text from GT_KOSTL and cost element text from GT_KSTAR and fill KOSTL_T / KSTAR_T. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: CSKT, CSKU +- 업무 키워드: 코스트센터명 보완, 원가요소명 보완, 텍스트 매핑 +- English: Cost Center Text, Cost Element Text, Data Enrichment +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GT_KOSTL`](#decl-zcoc0080top-89-gt_kostl), [`GT_KSTAR`](#decl-zcoc0080top-94-gt_kstar) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L474-L498` · confidence 0.85 · `ZCOC0080#ZCOC0080F01#FORM#EDIT_DATA#C1` + +### EVENT END-OF-SELECTION — `ZCOC0080` L59-L70 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 60| IF SY-BATCH NE 'X'. + 61| IF GT_DATA[] IS NOT INITIAL. + 62| CALL SCREEN 100. + 63| ELSE. + 64| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 65| ENDIF. + 66| ELSE. + 67| IF GT_DATA[] IS NOT INITIAL. + 68| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 69| ENDIF. + 70| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data) +- 위치: `abap://ZCOC0080/ZCOC0080#L60-L70` · confidence 0.85 · `ZCOC0080#ZCOC0080#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0080/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0080/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0080/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0080/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0080/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0080#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0080#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0080/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0080#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM EXECUTE_BAPI — `ZCOC0080F01` L509-L535 (27줄) + +*중복 전기를 막고 확인 팝업 후 예산 환수 BAPI 전기(BAPI_POST_SENDER)와 이력 저장(INSERT_LOG)을 실행한다.* + +> 이 unit 의 조각 1개가 17/27줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 처리된 경우 오류 메시지로 중단하고, POPUP_TO_CONFIRM_02로 '예산을 환수하시겠습니까?' 확인(J) 후 전기 플래그를 세우고 BAPI 전기와 ZCOT0020 로그 저장을 수행한다. + +```abap + 518| IF GV_ALREADY_POST = 'X'. + 519| MESSAGE S000 DISPLAY LIKE 'E' WITH + 520| '이미 처리하였습니다'(F07). + 521| EXIT. + 522| ENDIF. + 523| + 524| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 525| '예산을 환수하시겠습니까?'(F08) ' ' + 526| CHANGING L_ANSWER. + 527| IF L_ANSWER <> 'J'. + 528| EXIT. + 529| ENDIF. + 530| + 531| GV_ALREADY_POST = 'X'. + 532| + 533| PERFORM BAPI_POST_SENDER. + 534| PERFORM INSERT_LOG. +``` + +- **EN**: Block duplicate posting, ask for confirmation via POPUP_TO_CONFIRM_02, then run the BAPI posting and write the ZCOT0020 log. +- 호출(파서): POPUP_TO_CONFIRM_02, BAPI_POST_SENDER, INSERT_LOG +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST, ZCOT0020 +- 업무 키워드: 중복 전기 방지, 확인 팝업, 예산 환수, 이력 저장 +- English: Duplicate check, Confirmation popup, Budget Return +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0080top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0080f01-511-l_answer) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L518-L534` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#EXECUTE_BAPI#C1` + +### FORM BAPI_POST_SENDER — `ZCOC0080F01` L544-L634 (91줄) + +*GT_DATA 각 행에 대해 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST로 예산 환수 델타 전기를 수행하고 COMMIT/ROLLBACK 결과를 행 상태·메시지에 반영한다.* + +> 이 unit 의 조각 3개가 55/91줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드~전기 사이에 실적이 반영됐을 수 있으므로 GET_CURRENT_AVAILABLE_BG로 가용예산을 재계산하고 초과 시 행을 오류(빨강)로 표시하고 메시지를 추가한다. + +```abap + 571| CLEAR : LV_BG_OVER. + 572| " 업로드 ~ 전기 사이에 비용이 들어왔을 경우 다시 가용예산을 계산함. + 573| PERFORM GET_CURRENT_AVAILABLE_BG USING GT_DATA-KOSTL + 574| GT_DATA-KSTAR GT_DATA-WKG001 LV_BG_OVER. + 575| + 576| IF LV_BG_OVER = 'X'. " 그 사이에 비용이 들어왔다면 에러로. + 577| GT_DATA-MESSAGE = '업로드 이후 가용예산이 변경되어 더 많은 금액이 입력되었습니다. '(F13). + 578| GT_DATA-STATUS = GC_STATUS_RED. + 579| GV_UPLOAD_ERROR = 'X'. + 580| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 581| PERFORM ADD_DATA_MESSAGE USING 'KSTAR' + 582| GT_DATA-MESSAGE. +``` + +- **EN**: Re-check the available budget right before posting and mark the row as error with a message when the return amount now exceeds it. +- 호출(파서): GET_CURRENT_AVAILABLE_BG, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- 업무 키워드: 가용예산 재확인, 예산 초과, 오류 표시 +- English: Available budget, Validation, Budget Return +- 정의부(복사 시 함께 필요): [`LV_BG_OVER`](#decl-zcoc0080f01-555-lv_bg_over), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0080top-22-gv_upload_error) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L571-L582` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#BAPI_POST_SENDER#C1` + +#### [fm_call] FILL_TABLES로 BAPI 파라미터를 채운 뒤 BAPI_COSTACTPLN_POSTPRIMCOST를 DELTA='X'로 호출해 예산 버전에 환수 금액(음수)을 1차원가 계획으로 전기한다. + +```abap + 584| PERFORM FILL_TABLES + 585| TABLES LT_INDEXSTRUCTURE + 586| LT_COOBJECT + 587| LT_TOTVALUE + 588| USING LV_PERIOD + 589| CHANGING LS_HEADERINFO. + 590| + 591| CALL FUNCTION 'BAPI_COSTACTPLN_POSTPRIMCOST' + 592| EXPORTING + 593| HEADERINFO = LS_HEADERINFO + 594| DELTA = 'X' + 595| TABLES + 596| INDEXSTRUCTURE = LT_INDEXSTRUCTURE + 597| COOBJECT = LT_COOBJECT + 598| PERVALUE = LT_PERVALUE + 599| TOTVALUE = LT_TOTVALUE + 600| CONTRL = LT_CONTRL + 601| RETURN = LT_RETURN. +``` + +- **EN**: Fill the BAPI structures and call BAPI_COSTACTPLN_POSTPRIMCOST with DELTA='X' to post the negative return amount as primary cost planning. +- 호출(파서): FILL_TABLES, BAPI_COSTACTPLN_POSTPRIMCOST +- SAP 객체: BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: 예산 환수, 델타 전기, 1차원가 계획, 코스트센터 +- English: Primary Cost Planning, Delta posting, Budget Return, BAPI +- 정의부(복사 시 함께 필요): [`LT_INDEXSTRUCTURE`](#decl-zcoc0080f01-546-lt_indexstructure), [`LT_COOBJECT`](#decl-zcoc0080f01-547-lt_coobject), [`LT_TOTVALUE`](#decl-zcoc0080f01-549-lt_totvalue), [`LV_PERIOD`](#decl-zcoc0080f01-554-lv_period), [`LS_HEADERINFO`](#decl-zcoc0080f01-545-ls_headerinfo), [`LT_PERVALUE`](#decl-zcoc0080f01-548-lt_pervalue), [`LT_CONTRL`](#decl-zcoc0080f01-550-lt_contrl), [`LT_RETURN`](#decl-zcoc0080f01-551-lt_return) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L584-L601` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#BAPI_POST_SENDER#C2` + +#### [fm_call] RETURN이 비어 있으면 BAPI_TRANSACTION_COMMIT(WAIT)으로 확정하고 성공 상태(GP 510 메시지)로, 오류가 있으면 BAPI_TRANSACTION_ROLLBACK 후 마지막 RETURN 메시지를 행에 기록한다. + +```abap + 603| IF LT_RETURN[] IS INITIAL. + 604| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 605| EXPORTING + 606| WAIT = 'X'. + 607| + 608| GT_DATA-STATUS = GC_STATUS_GREEN. + 609| MESSAGE ID 'GP' TYPE 'S' NUMBER '510' + 610| INTO GT_DATA-MESSAGE + 611| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 612| + 613| GT_DATA-BAPI_RESULT = 'S'. + 614| ELSE. + 615| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 616| + 617| LOOP AT LT_RETURN INTO LS_RETURN. + 618| ENDLOOP. + 619| + 620| GT_DATA-BAPI_RESULT = 'E'. + 621| + 622| GT_DATA-MESSAGE = LS_RETURN-MESSAGE. + 623| GT_DATA-STATUS = GC_STATUS_RED. + 624| ENDIF. + 625| ENDIF. + 626| + 627| MODIFY GT_DATA. CLEAR : GT_DATA. +``` + +- **EN**: Commit via BAPI_TRANSACTION_COMMIT on success and set green status, otherwise roll back and store the last RETURN message with red status on the row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 커밋, 롤백, 전기 결과, 오류 메시지 +- English: BAPI_TRANSACTION_COMMIT, Rollback, Return message +- 정의부(복사 시 함께 필요): [`LT_RETURN`](#decl-zcoc0080f01-551-lt_return), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LS_RETURN`](#decl-zcoc0080f01-552-ls_return), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L603-L627` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#BAPI_POST_SENDER#C3` + +### FORM GET_CURRENT_AVAILABLE_BG — `ZCOC0080F01` L899-L942 (44줄) + +*코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다.* + +> 이 unit 의 조각 1개가 26/44줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 코스트센터(ZCOS0010)·원가요소(ZCOS0020)를 조건으로 Z_CO_SEL_KOSTL_BUDGET_ACTUAL을 호출해 해당 기간 가용예산(ZCOS0030-BG_AVAILABLE)을 얻고, 전용 금액이 가용예산보다 크면 P_WKG_OVER='X'로 예산 초과를 표시한다. + +```abap + 915| LT_ZCOS0010-KOSTL = P_KOSTL. + 916| APPEND LT_ZCOS0010. CLEAR : LT_ZCOS0010. + 917| + 918| LT_ZCOS0020-KSTAR = P_KSTAR. + 919| APPEND LT_ZCOS0020. CLEAR : LT_ZCOS0020. + 920| + 921| CALL FUNCTION 'Z_CO_SEL_KOSTL_BUDGET_ACTUAL' + 922| EXPORTING + 923| I_KOKRS = P_KOKRS + 924| I_GJAHR = P_GJAHR + 925| I_S_PERBL = P_PERBL + 926| I_E_PERBL = P_PERBL + 927| IMPORTING + 928| E_RESULTCODE = LV_RESULTCODE + 929| E_RESULTMSG = LV_RESULTMSG + 930| TABLES + 931| IT_KOSTL = LT_ZCOS0010 + 932| IT_KSTAR = LT_ZCOS0020 + 933| ET_ZCOS0030 = LT_ZCOS0030. + 934| + 935| READ TABLE LT_ZCOS0030 INDEX 1. + 936| + 937| IF P_TRANS_WKG > + 938| LT_ZCOS0030-BG_AVAILABLE. + 939| P_WKG_OVER = 'X'. + 940| ENDIF. +``` + +- **EN**: Calls Z_CO_SEL_KOSTL_BUDGET_ACTUAL for the cost center / cost element and period, reads the available budget (ZCOS0030-BG_AVAILABLE) and flags budget overrun when the transfer amount exceeds it. +- 호출(파서): Z_CO_SEL_KOSTL_BUDGET_ACTUAL +- SAP 객체: Z_CO_SEL_KOSTL_BUDGET_ACTUAL, ZCOS0010, ZCOS0020, ZCOS0030 +- 업무 키워드: 가용예산, 예산 초과 검증, 코스트센터, 원가요소, 전용금액 +- English: Available Budget, Budget Check, Cost Center, Cost Element +- 정의부(복사 시 함께 필요): [`LT_ZCOS0010`](#decl-zcoc0080f01-903-lt_zcos0010), [`LT_ZCOS0020`](#decl-zcoc0080f01-904-lt_zcos0020), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0080top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0080top-120-p_perbl), [`LV_RESULTCODE`](#decl-zcoc0080f01-907-lv_resultcode), [`LV_RESULTMSG`](#decl-zcoc0080f01-908-lv_resultmsg), [`LT_ZCOS0030`](#decl-zcoc0080f01-905-lt_zcos0030) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L915-L940` · confidence 0.92 · `ZCOC0080#ZCOC0080F01#FORM#GET_CURRENT_AVAILABLE_BG#C1` + +### FORM FILL_TABLES — `ZCOC0080F01` L646-L714 (69줄) + +*BAPI_COSTACTPLN_POSTPRIMCOST 호출용 헤더(HEADERINFO)와 INDEXSTRUCTURE/COOBJECT/TOTVALUE 테이블을 현재 GT_DATA 행 기준으로 채운다(금액은 환수이므로 -1 곱함).* + +> 이 unit 의 조각 2개가 37/69줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 관리회계영역·회계연도·기간·예산 버전(GC_VERSN)·계획통화유형·문서텍스트로 BAPIPLNHDR 헤더를 구성한다. + +```abap + 668| " 1. 헤더 작성 + 669| ES_HEADERINFO-CO_AREA = P_KOKRS. + 670| ES_HEADERINFO-FISC_YEAR = P_GJAHR. + 671| ES_HEADERINFO-PERIOD_FROM = P_PERIOD. + 672| ES_HEADERINFO-PERIOD_TO = P_PERIOD. + 673| ES_HEADERINFO-VERSION = GC_VERSN. + 674| ES_HEADERINFO-DOC_HDR_TX = GT_DATA-BLTXT. + 675| ES_HEADERINFO-PLAN_CURRTYPE = GC_PLAN_CURR. +``` + +- **EN**: Fill the BAPIPLNHDR header with controlling area, fiscal year, period, plan version GC_VERSN, plan currency type and document text. +- SAP 객체: BAPIPLNHDR, BAPI_COSTACTPLN_POSTPRIMCOST +- 업무 키워드: 예산 버전, 계획 헤더, 관리회계영역 +- English: Controlling Area, Plan version, BAPIPLNHDR +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs), [`P_GJAHR`](#decl-zcoc0080top-119-p_gjahr), [`GC_VERSN`](#decl-zcoc0080top-32-gc_versn), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`GC_PLAN_CURR`](#decl-zcoc0080top-33-gc_plan_curr) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L668-L675` · confidence 0.85 · `ZCOC0080#ZCOC0080F01#FORM#FILL_TABLES#C1` + +#### [calculation] 코스트센터(COOBJECT)·원가요소(TOTVALUE)를 인덱스로 연결하고 환수 금액을 -1 곱해 CONV_VIEW_WAERS로 통화 외부형식 변환 후 FIX_VALUE와 거래통화로 세팅한다. + +```abap + 685| CHECK NE 0. + 686| + 687| ADD 1 TO LV_INDEX. + 688| + 689| ET_INDEXSTRUCTURE-OBJECT_INDEX = LV_INDEX. + 690| ET_INDEXSTRUCTURE-VALUE_INDEX = LV_INDEX. + 691| APPEND ET_INDEXSTRUCTURE TO ET_INDEXSTRUCTURE. + 692| + 693| ET_COOBJECT-OBJECT_INDEX = LV_INDEX. + 694| ET_COOBJECT-COSTCENTER = GT_DATA-KOSTL. + 695| APPEND ET_COOBJECT TO ET_COOBJECT. + 696| + 697| ET_TOTVALUE-VALUE_INDEX = LV_INDEX. + 698| ET_TOTVALUE-COST_ELEM = GT_DATA-KSTAR. + 699| + 700| LV_VALUE = . + 701| LV_VALUE = LV_VALUE * -1. " 환수 처리. + 702| + 703| * IF P_GUBUN = 'P'. " C와 R일 경우에는 해당 금액 그대로. + 704| * LV_VALUE = LV_VALUE * -1. + 705| * ENDIF. + 706| + 707| PERFORM CONV_VIEW_WAERS USING LV_VALUE GV_WAERS + 708| CHANGING LV_C_VALUE. + 709| + 710| ET_TOTVALUE-FIX_VALUE = LV_C_VALUE. + 711| ET_TOTVALUE-TRANS_CURR = P_TWAER. + 712| ET_TOTVALUE-TRANS_CURRENCY_ISO = P_TWAER. + 713| APPEND ET_TOTVALUE TO ET_TOTVALUE. +``` + +- **EN**: Link cost center object and cost element total value by index, negate the amount for budget return, convert it to external currency format and set FIX_VALUE and transaction currency. +- 호출(파서): CONV_VIEW_WAERS +- SAP 객체: BAPIACPSTRU, BAPIPCPOBJ, BAPIPCPTOT +- 업무 키워드: 환수 금액, 음수 전환, 코스트센터, 원가요소, 통화 변환 +- English: Cost Center, Cost Element, Primary Cost Planning, Delta posting +- 정의부(복사 시 함께 필요): [``](#decl-zcoc0080f01-656--fs_value-), [`LV_INDEX`](#decl-zcoc0080f01-654-lv_index), [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`LV_VALUE`](#decl-zcoc0080f01-658-lv_value), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_C_VALUE`](#decl-zcoc0080f01-659-lv_c_value), [`P_TWAER`](#decl-zcoc0080top-116-p_twaer) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L685-L713` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#FILL_TABLES#C2` + +### FORM INSERT_LOG — `ZCOC0080F01` L764-L809 (46줄) + +*BAPI 전기에 성공한 행을 예산조정 이력 테이블 ZCOT0020에 환수(BGTYPE '40', BGSRC '01') 로그로 기록한다.* + +> 이 unit 의 조각 2개가 34/46줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_CO_GET_BGSEQ로 오늘 날짜 기준 예산조정 이력의 다음 순번(SEQ)을 채번한다. + +```abap + 773| CALL FUNCTION 'Z_CO_GET_BGSEQ' + 774| EXPORTING + 775| I_ADJUST_DATE = SY-DATUM + 776| IMPORTING + 777| E_RESULTMSG = LV_RESULTMSG + 778| E_RESULTCODE = LV_RESULTCODE + 779| E_SEQ = LV_SEQ. +``` + +- **EN**: Get the next budget adjustment sequence number for today's date via Z_CO_GET_BGSEQ. +- 호출(파서): Z_CO_GET_BGSEQ +- SAP 객체: Z_CO_GET_BGSEQ, ZCOT0020 +- 업무 키워드: 순번 채번, 예산조정 이력 +- English: Sequence number, Budget adjustment +- 정의부(복사 시 함께 필요): [`LV_RESULTMSG`](#decl-zcoc0080f01-766-lv_resultmsg), [`LV_RESULTCODE`](#decl-zcoc0080f01-767-lv_resultcode), [`LV_SEQ`](#decl-zcoc0080f01-765-lv_seq) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L773-L779` · confidence 0.9 · `ZCOC0080#ZCOC0080F01#FORM#INSERT_LOG#C1` + +#### [db_write] 전기 성공(BAPI_RESULT 'S') 행마다 환수 유형 BGTYPE '40', 입력원 BGSRC '01', 금액 음수(-1)로 ZCOT0020 이력 레코드를 만들어 MODIFY로 저장한다. + +```abap + 781| LOOP AT GT_DATA WHERE BAPI_RESULT = 'S'. + 782| LT_ZCOT0020-ADJUST_DATE = SY-DATUM. + 783| LT_ZCOT0020-KOKRS = P_KOKRS. + 784| LT_ZCOT0020-BGTYPE = '40'. " 환수 + 785| LT_ZCOT0020-SEQ = LV_SEQ. + 786| LT_ZCOT0020-GJAHR = P_GJAHR. + 787| LT_ZCOT0020-SEND_KOSTL = GT_DATA-KOSTL. + 788| LT_ZCOT0020-SEND_PERBL = P_PERBL. + 789| LT_ZCOT0020-SEND_KSTAR = GT_DATA-KSTAR. + 790| LT_ZCOT0020-RECV_KOSTL = GT_DATA-KOSTL. + 791| LT_ZCOT0020-RECV_PERBL = P_PERBL. + 792| LT_ZCOT0020-RECV_KSTAR = GT_DATA-KSTAR. + 793| LT_ZCOT0020-TRANS_WKG = GT_DATA-WKG001 * -1. + 794| LT_ZCOT0020-TWAER = P_TWAER. + 795| LT_ZCOT0020-BLTXT = GT_DATA-BLTXT. + 796| LT_ZCOT0020-ERNAM = SY-UNAME. + 797| LT_ZCOT0020-ERZEIT = SY-UZEIT. + 798| LT_ZCOT0020-BGSRC = '01'. " SAP에서 입력 + 799| APPEND LT_ZCOT0020. + 800| CLEAR : LT_ZCOT0020. + 801| + 802| LV_SEQ = LV_SEQ + 1. + 803| ENDLOOP. + 804| + 805| IF LT_ZCOT0020[] IS NOT INITIAL. + 806| MODIFY ZCOT0020 FROM TABLE LT_ZCOT0020. + 807| ENDIF. +``` + +- **EN**: For each successfully posted row build a ZCOT0020 history record (BGTYPE '40' return, BGSRC '01', negated amount) and MODIFY the table. +- 테이블(파서): read - / write [ZCOT0020](/tables/ZCOT0020.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 예산 환수, 조정 이력, 로그 기록, 전기 결과 +- English: Budget Return, Adjustment log, MODIFY table +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0080top-54-gt_data), [`LT_ZCOT0020`](#decl-zcoc0080f01-769-lt_zcot0020), [`P_KOKRS`](#decl-zcoc0080top-110-p_kokrs), [`LV_SEQ`](#decl-zcoc0080f01-765-lv_seq), [`P_GJAHR`](#decl-zcoc0080top-119-p_gjahr), [`P_PERBL`](#decl-zcoc0080top-120-p_perbl), [`P_TWAER`](#decl-zcoc0080top-116-p_twaer) +- 위치: `abap://ZCOC0080/ZCOC0080F01#L781-L807` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#INSERT_LOG#C2` + +### FORM DEQUEUE_ZCOT0020 — `ZCOC0080F01` L748-L755 (8줄) + +*예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 프로그램 종료 시 예산조정 이력 테이블 ZCOT0020의 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제하여 다른 사용자가 처리할 수 있게 한다. + +```abap + 750| CALL FUNCTION 'DEQUEUE_EZ_ZCOT0020' + 751| EXPORTING + 752| MODE_ZCOT0020 = 'X' + 753| MANDT = SY-MANDT. +``` + +- **EN**: Release the lock on budget adjustment log table ZCOT0020 via DEQUEUE_EZ_ZCOT0020 when leaving the program. +- 호출(파서): DEQUEUE_EZ_ZCOT0020 +- SAP 객체: DEQUEUE_EZ_ZCOT0020, ZCOT0020 +- 업무 키워드: 잠금 해제, 예산조정 이력, 동시성 제어 +- English: Dequeue, Lock Object, Budget Adjustment Log +- 위치: `abap://ZCOC0080/ZCOC0080F01#L750-L753` · confidence 0.95 · `ZCOC0080#ZCOC0080F01#FORM#DEQUEUE_ZCOT0020#C1` + +### FORM CALL_BG_REPORT — `ZCOC0080F01` L818-L822 (5줄) + +*부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다.* + +> 이 unit 의 조각 1개가 1/5줄(20%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ALV 화면의 조회 버튼(&DIP)에서 부서 예산 현황 리포트 트랜잭션 ZCOR0030을 호출한다. + +```abap + 820| CALL TRANSACTION 'ZCOR0030'. +``` + +- **EN**: Call transaction ZCOR0030 to display the department budget report. +- 호출(파서): ZCOR0030 +- SAP 객체: ZCOR0030 +- 업무 키워드: 예산 리포트 조회, 트랜잭션 호출 +- English: Call Transaction, Budget Report +- 위치: `abap://ZCOC0080/ZCOC0080F01#L820-L820` · confidence 0.85 · `ZCOC0080#ZCOC0080F01#FORM#CALL_BG_REPORT#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0080I01` L6-L36 (31줄) + +*화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 26/31줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너 해제와 ZCOT0020 잠금 해제 후 화면을 나가고, &POST 시 추경 BAPI 전기(EXECUTE_BAPI), &DIP 시 예산 리포트 ZCOR0030, &LOG 시 예산조정 이력 ZCOR0040 트랜잭션을 호출한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| PERFORM DEQUEUE_ZCOT0020 . + 18| + 19| IF GV_T_OK_CODE = 'EXIT'. + 20| LEAVE PROGRAM. + 21| ELSE. + 22| LEAVE TO SCREEN 0. + 23| ENDIF. + 24| "Function Code 맵핑 + 25| WHEN '&POST'. + 26| PERFORM EXECUTE_BAPI. + 27| WHEN '&DIP'. + 28| PERFORM CALL_BG_REPORT. + 29| WHEN '&LOG'. + 30| PERFORM CALL_BG_ADJ_LOG. + 31| + 32| WHEN OTHERS. + 33| * LEAVE PROGRAM. + 34| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: leave with container cleanup and dequeue on BACK/CANC/EXIT, run supplementary budget BAPI posting on &POST, call budget report ZCOR0030 on &DIP and adjustment log ZCOR0040 on &LOG. +- 호출(파서): CLEAR_CONTAINER_PROC, DEQUEUE_ZCOT0020, EXECUTE_BAPI, CALL_BG_REPORT, CALL_BG_ADJ_LOG +- SAP 객체: ZCOR0030, ZCOR0040, ZCOT0020 +- 업무 키워드: 기능코드 분기, 추경 전기, 예산 리포트 호출, 예산조정 로그, 잠금 해제 +- English: User Command, Supplementary Budget, Posting, Call Transaction, Dequeue +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0080top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0080c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0080/ZCOC0080I01#L9-L34` · confidence 0.9 · `ZCOC0080#ZCOC0080I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (335건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0080C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0080c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0080TOP` (34건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0080top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0080top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0080top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0080top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0080top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0080top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0080top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0080top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0080top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0080top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0080top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0080top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0080top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0080top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcoc0080top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L31-L31 {#decl-zcoc0080top-31-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0080'. +``` + +#### GC_VERSN — constants · L32-L32 {#decl-zcoc0080top-32-gc_versn} + +```abap +CONSTANTS : GC_VERSN LIKE COSP-VERSN VALUE 'B14'. " 환수 +``` + +#### GC_PLAN_CURR — constants · L33-L33 {#decl-zcoc0080top-33-gc_plan_curr} + +```abap +CONSTANTS : GC_PLAN_CURR TYPE COPLN_CURR VALUE 'C'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcoc0080top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L44-L49 {#decl-zcoc0080top-44-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + KOSTL(10) TYPE C, + KSTAR(10) TYPE C, + WKG001(20) TYPE C, + BLTXT(50) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L52-L52 {#decl-zcoc0080top-52-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L54-L75 {#decl-zcoc0080top-54-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, + KSTAR LIKE CSKA-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, + WKG001 LIKE COSP-WKG001, + BLTXT LIKE COVJ-BLTXT, + WKG001_VIEW LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + + BG_AVAILABLE LIKE COSP-WKG001, + BG_AVABLE_VIEW LIKE COSP-WKG001, + + BAPI_RESULT TYPE C, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L77-L77 {#decl-zcoc0080top-77-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L79-L84 {#decl-zcoc0080top-79-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L87-L87 {#decl-zcoc0080top-87-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL — data · L89-L92 {#decl-zcoc0080top-89-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_KSTAR — data · L94-L97 {#decl-zcoc0080top-94-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GV_ERROR_MSG — data · L99-L99 {#decl-zcoc0080top-99-gv_error_msg} + +```abap +DATA : GV_ERROR_MSG LIKE BAPIRET2-MESSAGE. +``` + +#### GT_ZCOS0030 — data · L101-L101 {#decl-zcoc0080top-101-gt_zcos0030} + +```abap +DATA : GT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L110-L111 {#decl-zcoc0080top-110-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L116-L117 {#decl-zcoc0080top-116-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L119-L119 {#decl-zcoc0080top-119-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERBL — parameter · L120-L120 {#decl-zcoc0080top-120-p_perbl} + +```abap +PARAMETER : P_PERBL LIKE COSP-PERBL OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +#### P_FNAME — parameter · L125-L126 {#decl-zcoc0080top-125-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0080_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0080F01` (45건) + +#### L_UCOMM — data · unit 로컬 · L112-L112 {#decl-zcoc0080f01-112-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L157-L157 {#decl-zcoc0080f01-157-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L158-L158 {#decl-zcoc0080f01-158--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L159-L159 {#decl-zcoc0080f01-159--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L160-L160 {#decl-zcoc0080f01-160-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LT_FCAT — data · unit 로컬 · L187-L187 {#decl-zcoc0080f01-187-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L188-L188 {#decl-zcoc0080f01-188-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L189-L189 {#decl-zcoc0080f01-189-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L190-L190 {#decl-zcoc0080f01-190-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L191-L191 {#decl-zcoc0080f01-191-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L192-L192 {#decl-zcoc0080f01-192--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L193-L193 {#decl-zcoc0080f01-193--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L194-L194 {#decl-zcoc0080f01-194--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L196-L199 {#decl-zcoc0080f01-196-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_EXISTS — data · unit 로컬 · L317-L317 {#decl-zcoc0080f01-317-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LV_MESSAGE — data · unit 로컬 · L436-L436 {#decl-zcoc0080f01-436-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L437-L437 {#decl-zcoc0080f01-437-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### L_ANSWER — data · unit 로컬 · L511-L511 {#decl-zcoc0080f01-511-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_HEADERINFO — data · unit 로컬 · L545-L545 {#decl-zcoc0080f01-545-ls_headerinfo} + +```abap + DATA: LS_HEADERINFO LIKE BAPIPLNHDR. +``` + +#### LT_INDEXSTRUCTURE — data · unit 로컬 · L546-L546 {#decl-zcoc0080f01-546-lt_indexstructure} + +```abap +DATA: + LT_INDEXSTRUCTURE LIKE BAPIACPSTRU OCCURS 0. +``` + +#### LT_COOBJECT — data · unit 로컬 · L547-L547 {#decl-zcoc0080f01-547-lt_coobject} + +```abap +DATA: + LT_COOBJECT LIKE BAPIPCPOBJ OCCURS 0. +``` + +#### LT_PERVALUE — data · unit 로컬 · L548-L548 {#decl-zcoc0080f01-548-lt_pervalue} + +```abap +DATA: + LT_PERVALUE LIKE BAPIPCPVAL OCCURS 0. +``` + +#### LT_TOTVALUE — data · unit 로컬 · L549-L549 {#decl-zcoc0080f01-549-lt_totvalue} + +```abap +DATA: + LT_TOTVALUE LIKE BAPIPCPTOT OCCURS 0. +``` + +#### LT_CONTRL — data · unit 로컬 · L550-L550 {#decl-zcoc0080f01-550-lt_contrl} + +```abap +DATA: + LT_CONTRL LIKE BAPIPCPCTRL OCCURS 0. +``` + +#### LT_RETURN — data · unit 로컬 · L551-L551 {#decl-zcoc0080f01-551-lt_return} + +```abap +DATA: + LT_RETURN LIKE BAPIRET2 OCCURS 0. +``` + +#### LS_RETURN — data · unit 로컬 · L552-L552 {#decl-zcoc0080f01-552-ls_return} + +```abap +DATA: + LS_RETURN LIKE LINE OF LT_RETURN. +``` + +#### LV_PERIOD — data · unit 로컬 · L554-L554 {#decl-zcoc0080f01-554-lv_period} + +```abap + DATA : LV_PERIOD TYPE CO_PERAB. +``` + +#### LV_BG_OVER — data · unit 로컬 · L555-L555 {#decl-zcoc0080f01-555-lv_bg_over} + +```abap + DATA : LV_BG_OVER. +``` + +#### LV_INDEX — data · unit 로컬 · L654-L654 {#decl-zcoc0080f01-654-lv_index} + +```abap + DATA : LV_INDEX TYPE BAPIACPSTRU-OBJECT_INDEX. +``` + +#### — field-symbol · unit 로컬 · L656-L656 {#decl-zcoc0080f01-656--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_VALUE — data · unit 로컬 · L658-L658 {#decl-zcoc0080f01-658-lv_value} + +```abap + DATA : LV_VALUE TYPE COSP-WOG001. +``` + +#### LV_C_VALUE — data · unit 로컬 · L659-L659 {#decl-zcoc0080f01-659-lv_c_value} + +```abap + DATA : LV_C_VALUE(20) TYPE C. +``` + +#### LV_SEQ — data · unit 로컬 · L765-L765 {#decl-zcoc0080f01-765-lv_seq} + +```abap + DATA : LV_SEQ TYPE ZCOT0020-SEQ. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L766-L766 {#decl-zcoc0080f01-766-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L767-L767 {#decl-zcoc0080f01-767-lv_resultcode} + +```abap + DATA : LV_RESULTCODE(1) TYPE C. +``` + +#### LT_ZCOT0020 — data · unit 로컬 · L769-L769 {#decl-zcoc0080f01-769-lt_zcot0020} + +```abap + DATA : LT_ZCOT0020 LIKE ZCOT0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L830-L830 {#decl-zcoc0080f01-830-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L831-L831 {#decl-zcoc0080f01-831-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L832-L832 {#decl-zcoc0080f01-832-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L833-L833 {#decl-zcoc0080f01-833-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +#### LT_ZCOS0010 — data · unit 로컬 · L903-L903 {#decl-zcoc0080f01-903-lt_zcos0010} + +```abap + DATA : LT_ZCOS0010 LIKE ZCOS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0020 — data · unit 로컬 · L904-L904 {#decl-zcoc0080f01-904-lt_zcos0020} + +```abap + DATA : LT_ZCOS0020 LIKE ZCOS0020 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOS0030 — data · unit 로컬 · L905-L905 {#decl-zcoc0080f01-905-lt_zcos0030} + +```abap + DATA : LT_ZCOS0030 LIKE ZCOS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_RESULTCODE — data · unit 로컬 · L907-L907 {#decl-zcoc0080f01-907-lv_resultcode} + +```abap + DATA : LV_RESULTCODE TYPE C. +``` + +#### LV_RESULTMSG — data · unit 로컬 · L908-L908 {#decl-zcoc0080f01-908-lv_resultmsg} + +```abap + DATA : LV_RESULTMSG(100) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0080 L26-32 | 0 | 프로그램 초기화 시 화면 기본값 설정(SET_DYNP)과 FC01 버튼 활성화를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0080 L33-35 | 0 | 선택화면 PAI에서 기능키 처리를 위해 CONTROL_FCXX를 호출한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0080 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 조정한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0080 L42-46 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC0080 L47-58 | 1 | 입력 검증, 초기화, ZCOT0020 잠금 설정, 엑셀 업로드 처리(PROCESS_DATA)를 순서대로 수행하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0080 L59-70 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0080C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0080C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0080C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0080C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0080C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0080C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0080C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0080C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0080C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0080C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0080C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0080C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0080C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0080C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0080C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0080C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0080C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0080C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0080C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0080C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0080C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0080C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0080C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0080C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0080C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0080F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 만드는 화면 속성 설정이다. | +| SET_DYNP | FORM | ZCOC0080F01 L22-29 | 0 | 화면 초기화 시 관리회계영역 기본값과 텍스트(P_BEZEI)를 설정한다. | +| CHECK_INPUT | FORM | ZCOC0080F01 L38-45 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0080F01 L51-73 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/전기 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC0080F01 L87-90 | 0 | 진행 표시줄 메시지를 띄우고 READ_DATA를 호출하는 단순 래퍼이다. | +| FC01_ACTIVE | FORM | ZCOC0080F01 L99-102 | 0 | 선택화면 기능키 버튼 FC01을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| CONTROL_FCXX | FORM | ZCOC0080F01 L111-123 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다. | +| READ_DATA | FORM | ZCOC0080F01 L132-149 | 1 | 엑셀 업로드부터 형식 변환·이관·검증·가용예산 세팅·텍스트 보강까지 데이터 읽기 흐름을 순서대로 호출한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0080F01 L156-177 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 금액을 회사 통화(GV_WAERS) 내부형식으로 변환하는 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0080F01 L186-276 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0080F01 L285-308 | 1 | 엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 코스트센터 대문자화, 추경금액 1000배 환산(CONVERT_1000_U), 통화 설정을 하고 숫자 변환 오류 시 중단한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0080F01 L316-334 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0080F01 L343-424 | 3 | 업로드 행의 금액(0/음수) 및 코스트센터(CSKS/CSKT)·원가요소(CSKB/CSKU) 존재 여부를 검증하여 오류 행을 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0080F01 L434-446 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0080F01 L455-463 | 0 | 오류 필드를 ALV 셀 색상(빨강, COL 6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EDIT_DATA | FORM | ZCOC0080F01 L472-500 | 1 | GT_DATA 각 라인에 GT_KOSTL·GT_KSTAR에서 찾은 코스트센터명·원가요소명을 보완한다. | +| EXECUTE_BAPI | FORM | ZCOC0080F01 L509-535 | 1 | 중복 전기를 막고 확인 팝업 후 예산 환수 BAPI 전기(BAPI_POST_SENDER)와 이력 저장(INSERT_LOG)을 실행한다. | +| BAPI_POST_SENDER | FORM | ZCOC0080F01 L544-634 | 3 | GT_DATA 각 행에 대해 가용예산을 재확인한 뒤 BAPI_COSTACTPLN_POSTPRIMCOST로 예산 환수 델타 전기를 수행하고 COMMIT/ROLLBACK 결과를 행 상태·메시지에 반영한다. | +| FILL_TABLES | FORM | ZCOC0080F01 L646-714 | 2 | BAPI_COSTACTPLN_POSTPRIMCOST 호출용 헤더(HEADERINFO)와 INDEXSTRUCTURE/COOBJECT/TOTVALUE 테이블을 현재 GT_DATA 행 기준으로 채운다(금액은 환수이므로 -1 곱함). | +| ENQUEUE_ZCOT0020 | FORM | ZCOC0080F01 L723-742 | 1 | 예산조정 이력 테이블 ZCOT0020에 ENQUEUE_EZ_ZCOT0020으로 잠금을 걸고 실패 시 잠금 메시지를 표시하며 오류 플래그를 반환한다. | +| DEQUEUE_ZCOT0020 | FORM | ZCOC0080F01 L748-755 | 1 | 예산조정 이력 테이블 ZCOT0020에 걸어둔 잠금을 DEQUEUE_EZ_ZCOT0020으로 해제한다. | +| INSERT_LOG | FORM | ZCOC0080F01 L764-809 | 2 | BAPI 전기에 성공한 행을 예산조정 이력 테이블 ZCOT0020에 환수(BGTYPE '40', BGSRC '01') 로그로 기록한다. | +| CALL_BG_REPORT | FORM | ZCOC0080F01 L818-822 | 1 | 부서 예산 리포트 트랜잭션 ZCOR0030을 호출한다. | +| SET_AVAIABLE_BUGDET | FORM | ZCOC0080F01 L829-888 | 2 | 업로드된 코스트센터/원가요소 전체의 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 GT_DATA에 세팅하고 환수금액이 가용예산을 초과하는 행을 오류로 표시한다. | +| GET_CURRENT_AVAILABLE_BG | FORM | ZCOC0080F01 L899-942 | 1 | 코스트센터·Sender 원가요소의 해당 월 가용예산을 Z_CO_SEL_KOSTL_BUDGET_ACTUAL로 조회해 전용 금액이 가용예산을 초과하면 초과 플래그(P_WKG_OVER)를 세운다. | +| CALL_BG_ADJ_LOG | FORM | ZCOC0080F01 L951-953 | 0 | 예산조정 이력 조회 트랜잭션 ZCOR0040을 호출하는 단순 서브루틴이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0080I01 L6-36 | 1 | 화면 100의 기능코드에 따라 종료(컨테이너 정리·잠금 해제), 추경 전기(&POST), 예산 리포트(&DIP, ZCOR0030), 예산조정 로그(&LOG, ZCOR0040) 호출을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0080O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0080O01 L26-70 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0080O01 L80-124 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0080O01 L132-152 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0080O01 L160-169 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0080O01 L177-199 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0080O01 L208-236 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0080O01 L309-338 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0080O01 L348-426 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0080O01 L434-461 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0090.md b/wiki/programs/ZCOC0090.md new file mode 100644 index 0000000..910f7d6 --- /dev/null +++ b/wiki/programs/ZCOC0090.md @@ -0,0 +1,5297 @@ +--- +type: abap-program +title: "ZCOC0090 — [투자오더-예산] 오더 생성 및 예산 Upload" +description: "투자오더(Investment Order, 오더유형 I*/S*)를 엑셀 업로드로 일괄 생성하고 동시에 최초 예산(Original Budget)을 설정하는 프로그램이다. 엑셀(오더유형·오더번호·텍스트·책임/요청 코스트센터·자산클래스·자본화일자·예산금액)을 읽어 AUFK 중복, CSKS/CSKT 코스트센터, ANKT 자산클래스, T003O 오더유형을 검증한 뒤, KO01 트랜잭션 BDC(SAPMKAUF)로 오더를 생성하고 투자 프로파일(IVPRO Z00001)에 의해 자동 생성된 건설중자산(AuC, ONROR/ANLI)을 확인한 후 KBPP_EXTERN_UPDATE_CO(KBUD)로 버전 000 에 예산을 등록한다. 결과는 ZCOT0030 에 이력으로 저장된다." +resource: "abap://ZCOC0090" +tags: ["투자오더", "내부오더생성", "예산관리", "건설중자산", "엑셀업로드", "투자관리", "기능코드 분기", "오더 생성 실행", "화면 종료", "금액 단위 환산", "천원 단위", "동적 필드 할당", "이력 저장", "오더 생성 결과", "로그", "최초 예산", "예산 등록", "버전 000", "전체값", "커밋"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:12+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "ANKT", "ANLI", "AUFK", "CSKS", "CSKT", "DD01L", "DD07T", "ONROR", "T001", "T003O", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0030"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KBPP_EXTERN_UPDATE_CO", "KO01", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "47597478308e4067daa9354dbdea0e54ab4d7c23604dca441a4986fef9641806" +x-unit-count: 149 +x-chunk-count: 76 +x-declaration-count: 212 +--- + +## 업무 목적 + +투자오더(Investment Order, 오더유형 I*/S*)를 엑셀 업로드로 일괄 생성하고 동시에 최초 예산(Original Budget)을 설정하는 프로그램이다. 엑셀(오더유형·오더번호·텍스트·책임/요청 코스트센터·자산클래스·자본화일자·예산금액)을 읽어 AUFK 중복, CSKS/CSKT 코스트센터, ANKT 자산클래스, T003O 오더유형을 검증한 뒤, KO01 트랜잭션 BDC(SAPMKAUF)로 오더를 생성하고 투자 프로파일(IVPRO Z00001)에 의해 자동 생성된 건설중자산(AuC, ONROR/ANLI)을 확인한 후 KBPP_EXTERN_UPDATE_CO(KBUD)로 버전 000 에 예산을 등록한다. 결과는 ZCOT0030 에 이력으로 저장된다. + +## 주 흐름 + +1. 회사코드·관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 ZCOC0090)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 경로 입력 여부를 확인하고 ALV 필드카탈로그·BDC 표시모드(P_DSMOD)·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 엑셀 파일(2행부터)을 GT_UPLOAD 로 읽어들인다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA) +4. 숫자·날짜 형식 및 ALPHA 변환 후 GT_DATA 로 이관하며 예산금액을 1000원 단위에서 실제 금액으로 환산하고 기능영역 3000·투자프로파일 Z00001·책임코스트센터의 손익센터(CSKS-PRCTR)를 채운다 (SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +5. 오더번호 중복(AUFK 기존재/엑셀 내 중복), 책임·요청 코스트센터(CSKS/CSKT), 자산클래스(ANKT), 오더유형(T003O), 오더유형 I/S 여부를 검증한다 (VALIDATION_CHECK) +6. 검증 결과를 화면 100 ALV 로 표시하고, 행 클릭 시 상세 메시지 팝업을 보여준다 (CALL SCREEN 100, SHOW_ERROR_LOG) +7. '실행'(&BDC) 시 확인 팝업 후 각 행에 대해 KO01 BDC 로 투자오더를 생성한다 (EXECUTE_BDC, BDC_OPTION, RUN_BDC) +8. 오더 생성 성공 시 ONROR/ANLI 에서 연결된 건설중자산(AuC) 번호를 조회하고 KBPP_EXTERN_UPDATE_CO 로 최초 예산(KBUD, 버전 000)을 등록한 뒤 ZCOT0030 에 로그를 저장한다 (GET_AUC_LINK_ANLN1, SET_INITIAL_BUDGET, INSERT_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (AUART, AUFNR, KTEXT, KOSTV, AKSTL, ANLKL, AKTIV, WERT) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 메인 ALV 데이터: 오더 정보, 예산금액, AuC 자산번호(ANLN1), 예산문서번호(BELNR), 상태·메시지 (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, RUN_BDC, GET_AUC_LINK_ANLN1, SET_INITIAL_BUDGET / 소비: DISPLAY_ALV_LIST, RUN_BDC, SHOW_ERROR_LOG, INSERT_LOG) +- `GT_AUFK` — 이미 존재하는 오더번호 (AUFK) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_KOSTL` — 유효 코스트센터 (CSKS/CSKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_ANKT` — 자산클래스 텍스트 (ANKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_AUART` — 유효 오더유형 (T003O) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_BDCDATA` — KO01 배치 인풋 화면 데이터 (채움: RUN_BDC, DYNPRO / 소비: RUN_BDC) + +## 테이블 / 외부 호출 + +- read: AENR, ANKT, ANLI, AUFK, CSKS, CSKT, DD01L, DD07T, ONROR, T001, T003O, TKA01, TKT09 +- write: GT_DATA, ZCOT0030 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KBPP_EXTERN_UPDATE_CO, KO01, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP + +## 로직 조각 (76건 / unit 65개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc0090top-135-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0090top-144-p_kokrs) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0090F01` L40-L52 (13줄) + +*선택화면 버튼 FC01('엑셀 양식 다운로드') 클릭 시 Z_CO_OPEN_SMW0로 SMW0 웹 오브젝트(ZCOC0090 양식)를 여는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0를 호출해 SMW0에 등록된 엑셀 업로드 양식(GC_SMW0)을 '투자오더 생성 및 예산 Upload 양식' 제목으로 다운로드/열기한다. + +```abap + 44| CASE L_UCOMM. + 45| WHEN 'FC01'. + 46| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 47| EXPORTING + 48| P_DOCNAM = GC_SMW0 + 49| P_TITLE = '투자오더 생성 및 예산 Upload 양식'(F01). + 50| ENDCASE. +``` + +- **EN**: On function code FC01 call Z_CO_OPEN_SMW0 to open the SMW0 Excel template GC_SMW0 for investment order creation and budget upload. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, SMW0, 선택화면 버튼 +- English: SMW0, Excel Template, Function Code +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0090f01-41-l_ucomm), [`GC_SMW0`](#decl-zcoc0090top-33-gc_smw0) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L44-L50` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0090` L47-L54 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0090/ZCOC0090#L48-L50` · confidence 0.8 · `ZCOC0090#ZCOC0090#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0090F01` L61-L68 (8줄) + +*업로드 파일 경로(P_FNAME)가 입력되지 않았으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일명 P_FNAME이 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 오류(S000 E)를 표시하고 LEAVE LIST-PROCESSING 한다. + +```abap + 63| IF P_FNAME IS INITIAL. + 64| MESSAGE S000 DISPLAY LIKE 'E' WITH + 65| '업로드 파일을 선택하여 주시기 바랍니다'(F02). + 66| LEAVE LIST-PROCESSING. + 67| ENDIF. +``` + +- **EN**: Stop with an error message when no upload file path P_FNAME was entered. +- 업무 키워드: 필수 입력, 업로드 파일, 입력 검증 +- English: Input Validation, Upload File +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0090top-152-p_fname) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L63-L67` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0090F01` L74-L103 (30줄) + +*회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다.* + +> 이 unit 의 조각 1개가 5/30줄(17%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_COMPANY_BASE와 SET_KOKRS_BASE로 회사코드(P_BUKRS)·관리회계영역(P_KOKRS)의 기준정보와 명칭을 설정해 화면 텍스트(P_BUTXT, P_BEZEI)에 표시한다. + +```abap + 81| PERFORM SET_COMPANY_BASE USING P_BUKRS. + 82| P_BUTXT = GV_BUKRS_TXT. + 83| + 84| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 85| P_BEZEI = GV_KOKRS_BEZEI. +``` + +- **EN**: Set company code and controlling area base data via SET_COMPANY_BASE / SET_KOKRS_BASE and show their descriptions on the selection screen. +- 호출(파서): SET_COMPANY_BASE, SET_KOKRS_BASE +- SAP 객체: SET_COMPANY_BASE, SET_KOKRS_BASE +- 업무 키워드: 회사코드, 관리회계영역, 기준정보 설정 +- English: Company Code, Controlling Area +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zcoc0090top-135-p_bukrs), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`P_KOKRS`](#decl-zcoc0090top-144-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei) +- 선언을 못 찾은 이름: P_BUTXT, P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L81-L85` · confidence 0.75 · `ZCOC0090#ZCOC0090F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM READ_DATA — `ZCOC0090F01` L389-L404 (16줄) + +*엑셀 업로드 → BDC 형식 정리 → GT_DATA 이관·통화 변환 → 검증 순으로 호출하는 데이터 읽기 흐름 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] UPLOAD_EXCEL_DATA로 엑셀을 읽고 데이터가 있으면 SET_BDC_FORM(형식 정리) → TRANSFER_GT_DATA(이관) → CONVERT_KRW_DATA(통화 변환) → VALIDATION_CHECK(검증)를 차례로 수행한다. + +```abap + 391| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 392| + 393| CHECK GT_UPLOAD[] IS NOT INITIAL. + 394| + 395| "2. 업로드가 제대로 되었다면. + 396| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 397| + 398| "3. 엑셀 데이터를 인터널 테이블로 이전 + 399| PERFORM TRANSFER_GT_DATA. + 400| PERFORM CONVERT_KRW_DATA. + 401| "4. Validation + 402| PERFORM VALIDATION_CHECK. +``` + +- **EN**: Upload the Excel file, then normalise for BDC, transfer into GT_DATA, convert currency amounts and run the validation checks. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK +- 업무 키워드: 엑셀 업로드, 데이터 이관, 검증, 처리 흐름 +- English: Excel Upload, Validation, Process Flow +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0090top-152-p_fname), [`GT_UPLOAD`](#decl-zcoc0090top-46-gt_upload) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L391-L402` · confidence 0.8 · `ZCOC0090#ZCOC0090F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0090F01` L362-L380 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 365| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 366| + 367| IF L_EXISTS = ABAP_FALSE. + 368| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 369| LEAVE LIST-PROCESSING. + 370| EXIT. + 371| ENDIF. + 372| + 373| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 374| 'GS_UPLOAD' + 375| P_NAME + 376| 1 "S_COL-LOW + 377| 2 "S_ROW-LOW + 378| 256 "S_COL-HIGH + 379| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0090f01-363-l_exists) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L365-L379` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0090top-152-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0090F01` L429-L519 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 448| L_TABNAME = P_STRUCT_NM. + 449| + 450| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 451| USING L_TABNAME. + 452| + 453| SELECT DOMNAME LOWERCASE + 454| INTO TABLE LT_LOWERCASE + 455| FROM DD01L + 456| FOR ALL ENTRIES IN LT_FCAT + 457| WHERE DOMNAME = LT_FCAT-DOMNAME + 458| AND AS4LOCAL = 'A'. + 459| + 460| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0090f01-431-l_tabname), [`LT_FCAT`](#decl-zcoc0090f01-430-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0090f01-439-lt_lowercase) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L448-L460` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 462| LOOP AT LT_FCAT ASSIGNING . + 463| CASE -DATATYPE. + 464| " 숫자 타입 + 465| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 466| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 467| L_TYPE = 'NUMB'. + 468| " 날짜 + 469| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 470| L_TYPE = 'DATS'. + 471| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 472| "CHECK BOX + 473| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 474| L_TYPE = 'CHCK'. + 475| ENDIF. + 476| WHEN OTHERS. + 477| ENDCASE. + 478| + 479| IF -CONVEXIT IS NOT INITIAL. + 480| L_CONV_ALPHA = 'X'. + 481| ENDIF. + 482| + 483| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 484| CONTINUE. + 485| ENDIF. + 486| + 487| LOOP AT GT_UPLOAD ASSIGNING . + 488| CONCATENATE '-' -FIELDNAME + 489| INTO L_FSNAME. + 490| ASSIGN (L_FSNAME) TO . + 491| + 492| IF SY-SUBRC EQ 0. + 493| CASE L_TYPE. + 494| WHEN 'NUMB'. + 495| PERFORM BDC_CURR USING . + 496| WHEN 'DATS'. + 497| PERFORM BDC_DATE USING . + 498| WHEN 'CHCK'. + 499| PERFORM BDC_CHECKBOX USING . + 500| WHEN OTHERS. + 501| ENDCASE. + 502| + 503| IF L_CONV_ALPHA = 'X'. + 504| PERFORM ZERO_I USING . + 505| ENDIF. + 506| + 507| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 508| BINARY SEARCH. + 509| + 510| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 511| TRANSLATE TO UPPER CASE. + 512| ENDIF. + 513| ENDIF. + 514| ENDLOOP. + 515| + 516| CLEAR : L_TYPE. + 517| CLEAR : L_CONV_ALPHA. + 518| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0090f01-430-lt_fcat), [``](#decl-zcoc0090f01-437--fs_fcat-), [`L_TYPE`](#decl-zcoc0090f01-433-l_type), [`L_CONV_ALPHA`](#decl-zcoc0090f01-434-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0090top-46-gt_upload), [``](#decl-zcoc0090f01-435--fs_upload-), [`L_FSNAME`](#decl-zcoc0090f01-432-l_fsname), [``](#decl-zcoc0090f01-436--fs-), [`LT_LOWERCASE`](#decl-zcoc0090f01-439-lt_lowercase) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L462-L518` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0090F01` L133-L167 (35줄) + +*엑셀 원본 GT_UPLOAD를 GT_DATA로 이관하며 예산금액을 천원 단위에서 실제 금액으로 환산하고 회사코드·기능영역·투자프로파일 Z00001·통화·연도·손익센터(CSKS-PRCTR)를 채우는 FORM이다.* + +> 이 unit 의 조각 1개가 32/35줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 GT_DATA로 MOVE-CORRESPONDING하고 표시금액(WERT_VIEW)을 보존한 뒤 CONVERT_1000_U로 실제 예산금액을 환산하며, 회사코드·기능영역(GC_FUNC_AREA)·투자프로파일(GC_IVPRO)·통화·회계연도·관리회계영역을 세팅하고 책임코스트센터의 손익센터를 CSKS에서 SELECT SINGLE로 구하며 숫자 변환 오류(CX_SY_CONVERSION_NO_NUMBER) 시 오류 메시지 후 종료한다. + +```abap + 134| TRY. + 135| LOOP AT GT_UPLOAD. + 136| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 137| GT_DATA-STATUS = GC_STATUS_INIT. + 138| GT_DATA-WERT_VIEW = GT_DATA-WERT. + 139| + 140| " 실제 반영할 금액. + 141| PERFORM CONVERT_1000_U USING GT_DATA-WERT + 142| CHANGING GT_DATA-WERT. + 143| + 144| GT_DATA-BUKRS = P_BUKRS. + 145| GT_DATA-FUNC_AREA = GC_FUNC_AREA. + 146| GT_DATA-IVPRO = GC_IVPRO. + 147| GT_DATA-TWAER = P_TWAER. + 148| GT_DATA-GJAHR = P_GJAHR. + 149| GT_DATA-KOKRS = P_KOKRS. + 150| + 151| SELECT SINGLE PRCTR FROM CSKS + 152| INTO GT_DATA-PRCTR + 153| WHERE KOKRS = P_KOKRS + 154| AND KOSTL = GT_DATA-KOSTV + 155| AND DATBI >= SY-DATUM + 156| AND DATAB <= SY-DATUM. + 157| + 158| APPEND GT_DATA. + 159| CLEAR : GT_DATA. + 160| ENDLOOP. + 161| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 162| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F03) + 163| DISPLAY LIKE 'E'. + 164| LEAVE LIST-PROCESSING. + 165| ENDTRY. +``` + +- **EN**: Move each uploaded row into GT_DATA, keep the display amount, convert the budget amount from thousands via CONVERT_1000_U, fill company code, functional area, investment profile, currency, fiscal year and controlling area, read the profit center of the responsible cost center from CSKS, and abort with a message on numeric conversion errors. +- 테이블(파서): read [CSKS](/tables/CSKS.md) / write - +- 호출(파서): CONVERT_1000_U +- SAP 객체: CSKS, CONVERT_1000_U, CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 이관, 예산금액 환산, 투자프로파일, 기능영역, 손익센터, 숫자 변환 오류 +- English: Investment Profile, Functional Area, Profit Center, CSKS, Budget Amount +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0090top-46-gt_upload), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_BUKRS`](#decl-zcoc0090top-135-p_bukrs), [`GC_FUNC_AREA`](#decl-zcoc0090top-34-gc_func_area), [`GC_IVPRO`](#decl-zcoc0090top-35-gc_ivpro), [`P_TWAER`](#decl-zcoc0090top-150-p_twaer), [`P_GJAHR`](#decl-zcoc0090top-151-p_gjahr), [`P_KOKRS`](#decl-zcoc0090top-144-p_kokrs) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L134-L165` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0090F01` L822-L842 (21줄) + +*ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR' 필드를 찾아 GT_DATA 각 행의 금액을 동적 ASSIGN한 뒤 CONV_DB_WAERS로 통화 GV_WAERS(KRW) 기준 내부 금액 형식으로 변환한다. + +```abap + 828| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 829| WHERE DATATYPE = 'CURR'. + 830| + 831| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 832| INTO LV_FIELD. + 833| + 834| LOOP AT GT_DATA ASSIGNING . + 835| ASSIGN (LV_FIELD) TO . + 836| + 837| IF SY-SUBRC EQ 0. + 838| PERFORM CONV_DB_WAERS USING GV_WAERS. + 839| ENDIF. + 840| ENDLOOP. + 841| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the amount in each GT_DATA row and convert it to the internal DB currency format for GV_WAERS via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: CONV_DB_WAERS, LVC_S_FCAT +- 업무 키워드: 통화 금액 변환, 원화, 내부 형식, 동적 필드 할당 +- English: Currency Conversion, KRW, Field Catalog, Dynamic ASSIGN +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0090top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0090f01-823-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0090f01-826-lv_field), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [``](#decl-zcoc0090f01-825--fs_data-), [``](#decl-zcoc0090f01-824--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L828-L841` · confidence 0.8 · `ZCOC0090#ZCOC0090F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0090F01` L177-L355 (179줄) + +*엑셀 업로드된 투자오더 행에 대해 AUFK 오더번호 기존재·엑셀 내 중복, 책임/요청 코스트센터(CSKS/CSKT), 자산클래스(ANKT), 오더유형(T003O) 및 I/S 유형 여부를 검증해 오류 행을 빨강 상태·메시지로 표시하는 FORM이다.* + +> 이 unit 의 조각 3개가 157/179줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 검증용 마스터를 FOR ALL ENTRIES로 일괄 조회한다: 기존 오더번호(AUFK), 유효기간 내 책임/요청 코스트센터와 명칭(CSKS+CSKT), 자산클래스 텍스트(ANKT), 오더유형(T003O). + +```abap + 193| SELECT AUFNR FROM AUFK + 194| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK + 195| FOR ALL ENTRIES IN GT_DATA + 196| WHERE AUFNR = GT_DATA-AUFNR. + 197| + 198| SORT GT_AUFK. + 199| + 200| * SELECT GSBER GTEXT FROM TGSBT + 201| * INTO CORRESPONDING FIELDS OF TABLE GT_GSBER + 202| * FOR ALL ENTRIES IN GT_DATA + 203| * WHERE GSBER = GT_DATA-GSBER. + 204| * + 205| * SORT GT_GSBER. + 206| + 207| SELECT A~KOSTL B~KTEXT + 208| FROM CSKS AS A INNER JOIN CSKT AS B + 209| ON A~KOKRS = B~KOKRS + 210| AND A~KOSTL = B~KOSTL + 211| AND A~DATBI = B~DATBI + 212| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 213| FOR ALL ENTRIES IN GT_DATA + 214| WHERE A~KOKRS = P_KOKRS + 215| AND ( A~KOSTL = GT_DATA-KOSTV + 216| OR A~KOSTL = GT_DATA-AKSTL ) + 217| AND A~DATBI >= SY-DATUM + 218| AND A~DATAB <= SY-DATUM + 219| AND B~SPRAS = SY-LANGU. + 220| + 221| SORT GT_KOSTL. + 222| + 223| SELECT ANLKL TXK20 + 224| FROM ANKT + 225| INTO CORRESPONDING FIELDS OF TABLE GT_ANKT + 226| FOR ALL ENTRIES IN GT_DATA + 227| WHERE ANLKL = GT_DATA-ANLKL + 228| AND SPRAS = SY-LANGU. + 229| + 230| SORT GT_ANKT. + 231| + 232| SELECT AUART + 233| FROM T003O + 234| INTO CORRESPONDING FIELDS OF TABLE GT_AUART + 235| FOR ALL ENTRIES IN GT_DATA + 236| WHERE AUART = GT_DATA-AUART. + 237| + 238| SORT GT_AUART. +``` + +- **EN**: Bulk-read validation masters for the uploaded rows: existing order numbers from AUFK, valid cost centers with texts from CSKS/CSKT, asset class texts from ANKT and order types from T003O. +- 테이블(파서): read [AUFK](/tables/AUFK.md), [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [ANKT](/tables/ANKT.md), [T003O](/tables/T003O.md) / write - +- SAP 객체: AUFK, CSKS, CSKT, ANKT, T003O +- 업무 키워드: 오더번호 존재, 코스트센터 마스터, 자산클래스, 오더유형, 검증 마스터 조회 +- English: Internal Order, Cost Center, Asset Class, Order Type, FOR ALL ENTRIES +- 정의부(복사 시 함께 필요): [`GT_AUFK`](#decl-zcoc0090top-104-gt_aufk), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GT_KOSTL`](#decl-zcoc0090top-113-gt_kostl), [`P_KOKRS`](#decl-zcoc0090top-144-p_kokrs), [`GT_ANKT`](#decl-zcoc0090top-118-gt_ankt), [`GT_AUART`](#decl-zcoc0090top-123-gt_auart) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L193-L238` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] 각 행에 대해 오더번호가 AUFK에 이미 있으면, 책임코스트센터(KOSTV)·요청코스트센터(AKSTL)가 CSKS에 없으면, 자산클래스(ANLKL)가 ANKT에 없으면, 오더유형(AUART)이 T003O에 없으면 빨강 상태·오류 플래그(GV_UPLOAD_ERROR)·필드 강조·오류 메시지를 설정한다. + +```abap + 242| LOOP AT GT_DATA. + 243| READ TABLE GT_AUFK WITH KEY AUFNR = GT_DATA-AUFNR + 244| BINARY SEARCH. + 245| + 246| IF SY-SUBRC EQ 0. + 247| GT_DATA-MESSAGE = '이미 존재하는 오더 번호입니다.'(F04). + 248| GT_DATA-STATUS = GC_STATUS_RED. + 249| GV_UPLOAD_ERROR = 'X'. + 250| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 251| PERFORM ADD_DATA_MESSAGE USING 'E' + 252| GT_DATA-AUFNR + 253| GT_DATA-MESSAGE. + 254| ENDIF. + 255| + 256| * READ TABLE GT_GSBER WITH KEY GSBER = GT_DATA-GSBER + 257| * BINARY SEARCH. + 258| * + 259| * IF SY-SUBRC NE 0. + 260| * GT_DATA-MESSAGE = '존재하지 않는 사업영역 입니다.'(F05). + 261| * GT_DATA-STATUS = GC_STATUS_RED. + 262| * GV_UPLOAD_ERROR = 'X'. + 263| * PERFORM SET_ERROR_FIELD_RED USING 'GSBER'. + 264| * PERFORM ADD_DATA_MESSAGE USING 'E' + 265| * GT_DATA-GSBER + 266| * GT_DATA-MESSAGE. + 267| * ENDIF. + 268| + 269| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTV + 270| BINARY SEARCH. + 271| + 272| IF SY-SUBRC NE 0. + 273| GT_DATA-MESSAGE = '존재하지 않는 책임코스트센터 입니다.'(F06). + 274| GT_DATA-STATUS = GC_STATUS_RED. + 275| GV_UPLOAD_ERROR = 'X'. + 276| PERFORM SET_ERROR_FIELD_RED USING 'KOSTV'. + 277| PERFORM ADD_DATA_MESSAGE USING 'E' + 278| GT_DATA-KOSTV + 279| GT_DATA-MESSAGE. + 280| ENDIF. + 281| + 282| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-AKSTL + 283| BINARY SEARCH. + 284| + 285| IF SY-SUBRC NE 0. + 286| GT_DATA-MESSAGE = '존재하지 않는 요청코스트센터 입니다.'(F07). + 287| GT_DATA-STATUS = GC_STATUS_RED. + 288| GV_UPLOAD_ERROR = 'X'. + 289| PERFORM SET_ERROR_FIELD_RED USING 'AKSTL'. + 290| PERFORM ADD_DATA_MESSAGE USING 'E' + 291| GT_DATA-AKSTL + 292| GT_DATA-MESSAGE. + 293| ENDIF. + 294| + 295| READ TABLE GT_ANKT WITH KEY ANLKL = GT_DATA-ANLKL + 296| BINARY SEARCH. + 297| + 298| IF SY-SUBRC NE 0. + 299| GT_DATA-MESSAGE = '존재하지 않는 자산클래스 입니다.'(F08). + 300| GT_DATA-STATUS = GC_STATUS_RED. + 301| GV_UPLOAD_ERROR = 'X'. + 302| PERFORM SET_ERROR_FIELD_RED USING 'ANLKL'. + 303| PERFORM ADD_DATA_MESSAGE USING 'E' + 304| GT_DATA-ANLKL + 305| GT_DATA-MESSAGE. + 306| ENDIF. + 307| + 308| READ TABLE GT_AUART WITH KEY AUART = GT_DATA-AUART + 309| BINARY SEARCH. + 310| + 311| IF SY-SUBRC NE 0. + 312| GT_DATA-MESSAGE = '존재하지 않는 오더 유형입니다.'(F09). + 313| GT_DATA-STATUS = GC_STATUS_RED. + 314| GV_UPLOAD_ERROR = 'X'. + 315| PERFORM SET_ERROR_FIELD_RED USING 'AUART'. + 316| PERFORM ADD_DATA_MESSAGE USING 'E' + 317| GT_DATA-AUART + 318| GT_DATA-MESSAGE. + 319| ENDIF. + 320| +``` + +- **EN**: Per row flag errors (red status, GV_UPLOAD_ERROR, red field, message) when the order number already exists in AUFK, the responsible/requesting cost center is missing in CSKS, the asset class is missing in ANKT or the order type is missing in T003O. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: AUFK, CSKS, ANKT, T003O, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 오더번호 중복, 책임코스트센터, 요청코스트센터, 자산클래스 검증, 오더유형 검증, 오류 표시 +- English: Validation, Internal Order, Cost Center, Asset Class, Order Type +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GT_AUFK`](#decl-zcoc0090top-104-gt_aufk), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0090top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0090top-113-gt_kostl), [`GT_ANKT`](#decl-zcoc0090top-118-gt_ankt), [`GT_AUART`](#decl-zcoc0090top-123-gt_auart) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L242-L320` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 엑셀 내 동일 오더번호가 2건 이상이면 '중복된 오더 번호' 오류를, 오더유형 첫 글자가 I 또는 S가 아니면 '예산 설정 오더가 아닙니다(ZCOC0110 사용)' 오류를 표시하고 GT_DATA를 갱신한다. + +```abap + 321| CLEAR : LV_CNT . + 322| LOOP AT LT_DATA TRANSPORTING NO FIELDS + 323| WHERE AUFNR = GT_DATA-AUFNR. + 324| + 325| ADD 1 TO LV_CNT . + 326| + 327| CHECK LV_CNT = 1. + 328| + 329| ENDLOOP. + 330| + 331| IF LV_CNT >= 2. + 332| GT_DATA-MESSAGE = '중복된 오더 번호가 입력되었습니다.'(F10). + 333| GT_DATA-STATUS = GC_STATUS_RED. + 334| GV_UPLOAD_ERROR = 'X'. + 335| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 336| PERFORM ADD_DATA_MESSAGE USING 'E' + 337| GT_DATA-AUFNR + 338| GT_DATA-MESSAGE. + 339| ENDIF. + 340| + 341| IF NOT ( GT_DATA-AUART+0(1) = 'I' OR GT_DATA-AUART+0(1) = 'S' ). + 342| GT_DATA-MESSAGE = '예산 설정 오더가 아닙니다. ZCOC0110에서 입력하여 주십시오'(F20). + 343| GT_DATA-STATUS = GC_STATUS_RED. + 344| GV_UPLOAD_ERROR = 'X'. + 345| PERFORM SET_ERROR_FIELD_RED USING 'AUART'. + 346| PERFORM ADD_DATA_MESSAGE USING 'E' + 347| GT_DATA-AUART + 348| GT_DATA-MESSAGE. + 349| ENDIF. + 350| + 351| CLEAR : GT_AUFK, GT_GSBER, GT_KOSTL, GT_ANKT, GT_AUART. + 352| MODIFY GT_DATA. CLEAR : GT_DATA. +``` + +- **EN**: Flag duplicate order numbers within the upload (count >= 2) and order types not starting with I or S (not a budget order, use ZCOC0110), then update the GT_DATA row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOC0110 +- 업무 키워드: 엑셀 내 중복, 오더유형 I/S, 투자오더 여부, 오류 메시지 +- English: Duplicate Check, Order Type, Investment Order, Validation +- 정의부(복사 시 함께 필요): [`LV_CNT`](#decl-zcoc0090f01-180-lv_cnt), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`LT_DATA`](#decl-zcoc0090f01-179-lt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0090top-22-gv_upload_error), [`GT_AUFK`](#decl-zcoc0090top-104-gt_aufk), [`GT_GSBER`](#decl-zcoc0090top-108-gt_gsber), [`GT_KOSTL`](#decl-zcoc0090top-113-gt_kostl), [`GT_ANKT`](#decl-zcoc0090top-118-gt_ankt), [`GT_AUART`](#decl-zcoc0090top-123-gt_auart) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L321-L352` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC0090F01` L789-L813 (25줄) + +*상태(S/E)에 따른 신호등 아이콘과 '값 : 메시지' 텍스트로 메시지 항목을 만들어 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 16/25줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] P_VALUE가 있으면 '값 : 메시지' 형태로 결합하고 상태 S→초록, E→빨강 아이콘을 매핑해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT한다. + +```abap + 796| IF P_VALUE IS NOT INITIAL. + 797| CONCATENATE P_VALUE ` : ` P_MESSAGE + 798| INTO LV_MESSAGE. + 799| ELSE. + 800| LV_MESSAGE = P_MESSAGE. + 801| ENDIF. + 802| + 803| IF P_STATUS = 'S'. + 804| LV_STATUS = GC_STATUS_GREEN. + 805| ELSEIF P_STATUS = 'E'. + 806| LV_STATUS = GC_STATUS_RED. + 807| ENDIF. + 808| GS_MSG_T_S-STATUS = LV_STATUS. + 809| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 810| + 811| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Compose the message text (optionally prefixed by the field value), map status S/E to green/red icons and insert the entry into GT_DATA-MSG_LIST. +- 업무 키워드: 메시지 누적, 상태 아이콘, 검증 결과 +- English: Message List, Status Icon +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc0090f01-791-lv_message), [`LV_STATUS`](#decl-zcoc0090f01-792-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GS_MSG_T_S`](#decl-zcoc0090top-92-gs_msg_t_s), [`GT_DATA`](#decl-zcoc0090top-60-gt_data) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L796-L811` · confidence 0.8 · `ZCOC0090#ZCOC0090F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC0090` L55-L66 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 56| IF SY-BATCH NE 'X'. + 57| IF GT_DATA[] IS NOT INITIAL. + 58| CALL SCREEN 100. + 59| ELSE. + 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 61| ENDIF. + 62| ELSE. + 63| IF GT_DATA[] IS NOT INITIAL. + 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 65| ENDIF. + 66| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0090top-60-gt_data) +- 위치: `abap://ZCOC0090/ZCOC0090#L56-L66` · confidence 0.85 · `ZCOC0090#ZCOC0090#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0090/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0090/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0090/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0090/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0090/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0090#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0090top-144-p_kokrs) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0090#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0090/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0090#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_ERROR_LOG — `ZCOC0090F01` L667-L725 (59줄) + +*ALV에서 선택한 행의 처리 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 ALV(W_POPUP_GRID)로 보여주는 FORM이다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 MSG_LIST를 오더번호·상태·메시지 구조 LT_POPUP으로 옮기고 팝업 레이아웃을 설정한 뒤 W_POPUP_GRID 객체를 생성해 SHOW_DATA로 오류/처리 로그 팝업을 표시한다. + +```abap + 702| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 703| LT_POPUP-AUFNR = GT_DATA-AUFNR. + 704| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 705| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 706| APPEND LT_POPUP. + 707| CLEAR : LT_POPUP. + 708| ENDLOOP. + 709| + 710| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 711| + 712| CREATE OBJECT W_POPUP_GRID + 713| EXPORTING + 714| I_T_FIELDCATALOG = POPUP_FIELDCAT + 715| I_S_LAYOUT = LS_LAYO + 716| I_CAPTION = '' + 717| I_LEFT = 100 + 718| I_TOP = 150 + 719| I_HEIGHT = 400 + 720| I_WIDTH = 900. + 721| + 722| CALL METHOD W_POPUP_GRID->SHOW_DATA + 723| EXPORTING + 724| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Copy the row's message list into LT_POPUP (order number, status, message), set the popup layout and display it in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 처리 메시지, 오더번호 +- English: Popup ALV, Message Log, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GS_MSG_T_S`](#decl-zcoc0090top-92-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc0090top-94-gt_log_pop), [`LT_POPUP`](#decl-zcoc0090f01-670-lt_popup), [`LS_LAYO`](#decl-zcoc0090f01-669-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0090top-102-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0090f01-668-popup_fieldcat) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L702-L724` · confidence 0.8 · `ZCOC0090#ZCOC0090F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BDC — `ZCOC0090F01` L526-L551 (26줄) + +*이미 처리된 경우를 막고 '오더 생성 및 예산 전기' 확인 팝업 후 BDC 옵션을 설정하고 RUN_BDC로 투자오더 생성·예산 등록을 실행하는 FORM이다.* + +> 이 unit 의 조각 1개가 20/26줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GV_ALREADY_POST면 '이미 처리하였습니다' 오류로 중단하고, POPUP_TO_CONFIRM_02 확인(J) 시 처리 플래그를 세우고 BDC_OPTION(P_DSMOD)·RUN_BDC로 KO01 오더 생성과 예산 등록을 수행한다. + +```abap + 531| IF GV_ALREADY_POST = 'X'. + 532| MESSAGE S000 DISPLAY LIKE 'E' WITH + 533| '이미 처리하였습니다'(F18). + 534| EXIT. + 535| ENDIF. + 536| + 537| IF GV_UPLOAD_ERROR = 'X'. + 538| * PERFORM PGM_MSG USING 'F11' 'E'. + 539| ENDIF. + 540| + 541| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 542| '오더 생성 및 예산 전기 하시겠습니까?'(F11) ' ' + 543| CHANGING L_ANSWER. + 544| IF L_ANSWER <> 'J'. + 545| EXIT. + 546| ENDIF. + 547| + 548| GV_ALREADY_POST = 'X'. + 549| PERFORM BDC_OPTION USING P_DSMOD. + 550| PERFORM RUN_BDC. +``` + +- **EN**: Block duplicate execution, ask for confirmation via POPUP_TO_CONFIRM_02, then set the posted flag, prepare BDC options and run RUN_BDC to create orders and post budgets. +- 호출(파서): POPUP_TO_CONFIRM_02, BDC_OPTION, RUN_BDC +- SAP 객체: POPUP_TO_CONFIRM_02, KO01 +- 업무 키워드: 중복 처리 방지, 확인 팝업, 오더 생성, 예산 전기 +- English: Duplicate Check, Confirmation Popup, BDC, KO01 +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0090top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc0090top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc0090f01-527-l_answer), [`P_DSMOD`](#decl-zcoc0090top-164-p_dsmod) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L531-L550` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#EXECUTE_BDC#C1` + +### FORM RUN_BDC — `ZCOC0090F01` L577-L659 (83줄) + +*GT_DATA 각 행에 대해 KO01 BDC(SAPMKAUF)로 투자오더를 생성하고 성공 시 AuC 자산 확인과 최초 예산 등록을 수행한 뒤 결과를 ZCOT0030에 로그로 남기는 실행 FORM이다.* + +> 이 unit 의 조각 3개가 59/83줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SAPMKAUF 0100/0600 화면에 오더유형·오더번호·텍스트·회사코드·손익센터·책임/요청 코스트센터·투자프로파일·자산클래스·자본화일자를 채운 BDC 데이터로 CALL TRANSACTION 'KO01'을 실행하고 BDC 메시지를 행 메시지 목록에 추가한다. + +```abap + 596| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 597| 'X' 'SAPMKAUF' '0100', + 598| ' ' 'BDC_OKCODE' '/00', + 599| ' ' 'COAS-AUART' GT_DATA-AUART, + 600| + 601| 'X' 'SAPMKAUF' '0600', + 602| ' ' 'BDC_OKCODE' '=BUT5', + 603| ' ' 'COAS-AUFNR' GT_DATA-AUFNR, + 604| ' ' 'COAS-KTEXT' GT_DATA-KTEXT, + 605| ' ' 'COAS-BUKRS' GT_DATA-BUKRS, + 606| * ' ' 'COAS-GSBER' GT_DATA-GSBER, + 607| ' ' 'COAS-PRCTR' GT_DATA-PRCTR, + 608| + 609| ' ' 'COAS-KOSTV' GT_DATA-KOSTV, + 610| ' ' 'COAS-AKSTL' GT_DATA-AKSTL, + 611| + 612| 'X' 'SAPMKAUF' '0600', + 613| ' ' 'BDC_OKCODE' '=BUT2', + 614| ' ' 'COAS-IVPRO' GT_DATA-IVPRO, + 615| ' ' 'ANIA-ANLKL' GT_DATA-ANLKL, + 616| ' ' 'ANIA-AKTIV' GT_DATA-AKTIV, + 617| + 618| 'X' 'SAPMKAUF' '0600', + 619| ' ' 'BDC_OKCODE' '=VARI', + 620| + 621| 'X' 'SAPMKAUF' '0600', + 622| ' ' 'BDC_OKCODE' '=SICH'. + 623| + 624| CALL TRANSACTION 'KO01' + 625| USING GT_BDCDATA[] + 626| OPTIONS FROM GS_BDC_OPTION + 627| MESSAGES INTO GT_MESSTAB[]. + 628| + 629| LV_BDC_SUBRC = SY-SUBRC. + 630| + 631| LOOP AT GT_MESSTAB. + 632| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 633| CHANGING GT_DATA-MESSAGE. + 634| PERFORM ADD_DATA_MESSAGE USING + 635| GT_MESSTAB-MSGTYP '' + 636| GT_DATA-MESSAGE. + 637| ENDLOOP. +``` + +- **EN**: Fill BDC screens SAPMKAUF 0100/0600 with order type, order number, text, company code, profit center, cost centers, investment profile, asset class and capitalization date, run CALL TRANSACTION KO01 and collect the BDC messages on the row. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: KO01, SAPMKAUF, COAS, ANIA +- 업무 키워드: 투자오더 생성, 배치인풋, 오더유형, 투자프로파일, 자산클래스, 자본화일자 +- English: Internal Order, Batch Input, KO01, Investment Profile, Asset Class +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LV_BDC_SUBRC`](#decl-zcoc0090f01-578-lv_bdc_subrc) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L596-L637` · confidence 0.95 · `ZCOC0090#ZCOC0090F01#FORM#RUN_BDC#C1` + +#### [control_flow] BDC가 성공하면 상태를 초록으로 하고 GET_AUC_LINK_ANLN1로 AuC 자산을 확인한 뒤 SET_INITIAL_BUDGET으로 최초 예산을 등록하며, 실패하면 빨강 상태로 GT_DATA를 갱신한다. + +```abap + 639| IF LV_BDC_SUBRC EQ 0. + 640| * 성공 메세지 처리 + 641| GT_DATA-STATUS = GC_STATUS_GREEN. + 642| PERFORM GET_AUC_LINK_ANLN1. + 643| PERFORM SET_INITIAL_BUDGET. + 644| ELSE. + 645| GT_DATA-STATUS = GC_STATUS_RED. + 646| * 실패 메세지 처리 + 647| ENDIF. + 648| + 649| MODIFY GT_DATA. + 650| CLEAR : GT_DATA. +``` + +- **EN**: On BDC success set green status, fetch the linked AuC asset and post the initial budget; on failure set red status, then update GT_DATA. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): GET_AUC_LINK_ANLN1, SET_INITIAL_BUDGET +- SAP 객체: GET_AUC_LINK_ANLN1, SET_INITIAL_BUDGET +- 업무 키워드: 처리 결과, 건설중자산 확인, 최초 예산 등록, 상태 표시 +- English: AuC, Original Budget, Status +- 정의부(복사 시 함께 필요): [`LV_BDC_SUBRC`](#decl-zcoc0090f01-578-lv_bdc_subrc), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L639-L650` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#RUN_BDC#C2` + +#### [db_write] 전체 처리 후 INSERT_LOG로 ZCOT0030 이력을 저장하고 ALV 재조회 플래그를 세운 뒤 완료 메시지를 표시한다. + +```abap + 653| PERFORM INSERT_LOG. + 654| + 655| GV_REFRESH = 'X'. + 656| + 657| MESSAGE S000 WITH '처리가 완료되었습니다.'(F12). +``` + +- **EN**: After processing all rows write the ZCOT0030 history via INSERT_LOG, set the refresh flag and show a completion message. +- 호출(파서): INSERT_LOG +- SAP 객체: ZCOT0030 +- 업무 키워드: 이력 저장, 완료 메시지 +- English: History Log, ZCOT0030 +- 정의부(복사 시 함께 필요): [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L653-L657` · confidence 0.8 · `ZCOC0090#ZCOC0090F01#FORM#RUN_BDC#C3` + +### FORM GET_AUC_LINK_ANLN1 — `ZCOC0090F01` L851-L871 (21줄) + +*KO01로 생성된 투자오더에 투자 프로파일로 자동 생성된 건설중자산(AuC)의 오브젝트번호와 자산번호를 ONROR/ANLI에서 최대 10회 재시도 조회해 GT_DATA에 반영하는 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] ONROR와 ANLI를 오브젝트번호로 조인해 오더번호·회사코드 조건으로 AuC 자산번호(ANLN1)와 OBJNR를 SELECT SINGLE하고, 비동기 업데이트를 고려해 없으면 0.5초 대기 후 최대 10회 재시도한다. + +```abap + 858| DO 10 TIMES. + 859| SELECT SINGLE A~OBJNR B~ANLN1 + 860| INTO (GT_DATA-OBJNR, GT_DATA-ANLN1) + 861| FROM ONROR AS A INNER JOIN ANLI AS B + 862| ON A~OBJNR = B~OBJNR + 863| WHERE A~AUFNR = GT_DATA-AUFNR + 864| AND B~BUKRS = P_BUKRS. + 865| IF SY-SUBRC EQ 0. + 866| EXIT. + 867| ELSE. + 868| WAIT UP TO '0.5' SECONDS. + 869| ENDIF. + 870| ENDDO. +``` + +- **EN**: Read the AuC asset number ANLN1 and object number for the order from ONROR joined with ANLI, retrying up to 10 times with 0.5 s waits to allow the asynchronous update to finish. +- 테이블(파서): read [ONROR](/tables/ONROR.md), [ANLI](/tables/ANLI.md) / write - +- SAP 객체: ONROR, ANLI +- 업무 키워드: 건설중자산, 오더-자산 연결, 오브젝트번호, 재시도 조회 +- English: AuC, Asset under Construction, ONROR, ANLI, Investment Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`P_BUKRS`](#decl-zcoc0090top-135-p_bukrs) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L858-L870` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#GET_AUC_LINK_ANLN1#C1` + +### FORM SET_INITIAL_BUDGET — `ZCOC0090F01` L879-L938 (60줄) + +*생성된 투자오더의 오브젝트번호와 예산금액으로 BPAK를 구성해 KBPP_EXTERN_UPDATE_CO(KBUD, 최초예산, 버전 000)로 예산을 등록하고 커밋/롤백 결과를 GT_DATA 상태·메시지에 반영하는 FORM이다.* + +> 이 unit 의 조각 2개가 49/60줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 오더 OBJNR·금액·통화·연도·전체값(E_GES)·버전 000·텍스트(오더번호 연도 AuC)로 BPAK 한 건을 만들어 KBPP_EXTERN_UPDATE_CO를 I_BUDGET_ACTIVITY 'KBUD'(Original Budget), 어플리케이션 'O'(오더)로 호출해 최초 예산을 등록한다. + +```abap + 888| LT_BPAK-E_OBJNR = GT_DATA-OBJNR. + 889| LT_BPAK-WERT = GT_DATA-WERT. + 890| LT_BPAK-TWAER = GT_DATA-TWAER. + 891| LT_BPAK-E_GJAHR = GT_DATA-GJAHR. " 해당연도. + 892| LT_BPAK-E_GES = 'X'. " 전체 + 893| LT_BPAK-E_VERSN = '000'. " 오더는 000 버전 사용. + 894| LT_BPAK-BLDAT = SY-DATUM. + 895| CONCATENATE GT_DATA-AUFNR ` ` GT_DATA-GJAHR ` ` + 896| GT_DATA-ANLN1 ` ` INTO LT_BPAK-SGTEXT. + 897| APPEND LT_BPAK. CLEAR : LT_BPAK. + 898| + 899| CALL FUNCTION 'KBPP_EXTERN_UPDATE_CO' + 900| EXPORTING + 901| I_BUDGET_ACTIVITY = 'KBUD' " Original budget + 902| I_DELTA_AMOUNTS = '' " 업데이트 개념 + 903| I_ROLLUP_DATA = '' " Project에서만 사용. + 904| I_APPLICATION = 'O' " ORDER 에 대해 수행. + 905| I_COMMIT_DATA = 'X' + 906| IMPORTING + 907| E_ERRORS_FOUND = LV_OAX + 908| TABLES + 909| IT_BPAK = LT_BPAK[] + 910| IT_RETURN = LT_BAPIRET2[] + 911| EXCEPTIONS + 912| NO_UPDATE = 1 + 913| OTHERS = 2. +``` + +- **EN**: Build one BPAK line (order object number, amount, currency, year, overall flag, version 000) and call KBPP_EXTERN_UPDATE_CO with budget activity KBUD (original budget) for application 'O' (order). +- 호출(파서): KBPP_EXTERN_UPDATE_CO +- SAP 객체: KBPP_EXTERN_UPDATE_CO, BPAK, KBUD +- 업무 키워드: 최초 예산, 예산 등록, 투자오더, 버전 000, 전체값 +- English: Original Budget, KBUD, Internal Order, BPAK, Budget Version +- 정의부(복사 시 함께 필요): [`LT_BPAK`](#decl-zcoc0090f01-881-lt_bpak), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`LV_OAX`](#decl-zcoc0090f01-883-lv_oax), [`LT_BAPIRET2`](#decl-zcoc0090f01-882-lt_bapiret2) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L888-L913` · confidence 0.95 · `ZCOC0090#ZCOC0090F01#FORM#SET_INITIAL_BUDGET#C1` + +#### [fm_call] 반환 메시지(BAPIRET2)를 BUILD_MESSAGE_BAPI로 행 메시지에 쌓고, 오류가 없고 예산문서번호(BELNR)가 생성되면 BAPI_TRANSACTION_COMMIT 후 성공 상태·BELNR을 기록하며 아니면 BAPI_TRANSACTION_ROLLBACK 후 실패 상태로 표시한다. + +```abap + 915| READ TABLE LT_BPAK INDEX 1. + 916| + 917| LOOP AT LT_BAPIRET2. + 918| PERFORM BUILD_MESSAGE_BAPI USING LT_BAPIRET2 + 919| CHANGING GT_DATA-MESSAGE. + 920| PERFORM ADD_DATA_MESSAGE USING 'E' '' + 921| GT_DATA-MESSAGE. + 922| ENDLOOP. + 923| + 924| IF LV_OAX NE 'X' AND LT_BPAK-BELNR IS NOT INITIAL. + 925| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 926| EXPORTING + 927| WAIT = 'X'. + 928| GT_DATA-STATUS = GC_STATUS_GREEN. + 929| GT_DATA-SET_BG_RESULT = 'S'. + 930| GT_DATA-BELNR = LT_BPAK-BELNR. + 931| PERFORM ADD_DATA_MESSAGE USING 'S' '' + 932| '예산 데이터를 저장했습니다.'(F16). + 933| ELSE. + 934| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 935| GT_DATA-STATUS = GC_STATUS_RED. + 936| GT_DATA-SET_BG_RESULT = 'E'. + 937| ENDIF. +``` + +- **EN**: Log BAPIRET2 messages to the row; if no error and a budget document number BELNR exists commit via BAPI_TRANSACTION_COMMIT and set green status with BELNR, otherwise roll back and set red status. +- 호출(파서): BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, ADD_DATA_MESSAGE, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 커밋, 롤백, 예산문서번호, 처리 결과, 메시지 +- English: BAPI_TRANSACTION_COMMIT, Rollback, Budget Document, Return Message +- 정의부(복사 시 함께 필요): [`LT_BPAK`](#decl-zcoc0090f01-881-lt_bpak), [`LT_BAPIRET2`](#decl-zcoc0090f01-882-lt_bapiret2), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`LV_OAX`](#decl-zcoc0090f01-883-lv_oax), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L915-L937` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#SET_INITIAL_BUDGET#C2` + +### FORM INSERT_LOG — `ZCOC0090F01` L946-L964 (19줄) + +*오더 생성에 성공(AuC 자산번호 ANLN1 존재)한 GT_DATA 행을 생성일시·사용자와 함께 이력 테이블 ZCOT0030에 MODIFY로 저장하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/19줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] ANLN1이 채워진(오더 생성 성공) 행만 MOVE-CORRESPONDING하고 ERDAT/ERNAM/ERZEIT를 세팅해 투자오더 생성·예산 업로드 이력 테이블 ZCOT0030에 MODIFY로 기록한다(예산 실패 건도 포함). + +```abap + 952| LOOP AT GT_DATA WHERE ANLN1 IS NOT INITIAL. + 953| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0030. + 954| LT_ZCOT0030-ERDAT = SY-DATUM. + 955| LT_ZCOT0030-ERNAM = SY-UNAME. + 956| LT_ZCOT0030-ERZEIT = SY-UZEIT. + 957| APPEND LT_ZCOT0030. + 958| CLEAR : LT_ZCOT0030. + 959| ENDLOOP. + 960| + 961| IF LT_ZCOT0030[] IS NOT INITIAL. + 962| MODIFY ZCOT0030 FROM TABLE LT_ZCOT0030. + 963| ENDIF. +``` + +- **EN**: Collect rows whose AuC asset ANLN1 is filled (order created), stamp creation date/user/time and MODIFY them into the history table ZCOT0030, including rows where budget posting failed. +- 테이블(파서): read - / write [ZCOT0030](/tables/ZCOT0030.md) +- SAP 객체: ZCOT0030 +- 업무 키워드: 이력 저장, 오더 생성 결과, 건설중자산, 로그 +- English: History Log, Investment Order, AuC, MODIFY +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [`LT_ZCOT0030`](#decl-zcoc0090f01-948-lt_zcot0030) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L952-L963` · confidence 0.9 · `ZCOC0090#ZCOC0090F01#FORM#INSERT_LOG#C1` + +### FORM CONVERT_1000_UP — `ZCOC0090F01` L731-L752 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 라인의 해당 금액 필드를 동적으로 ASSIGN한 뒤 CONVERT_1000_U로 1000배(천원→원) 변환한다. + +```abap + 737| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 738| WHERE DATATYPE = 'CURR'. + 739| + 740| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 741| INTO LV_FIELD. + 742| + 743| LOOP AT GT_DATA ASSIGNING . + 744| ASSIGN (LV_FIELD) TO . + 745| + 746| IF SY-SUBRC EQ 0. + 747| PERFORM CONVERT_1000_U USING + 748| CHANGING . + 749| ENDIF. + 750| ENDLOOP. + 751| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog, dynamically assign the amount field in each GT_DATA row and multiply by 1000 (thousand KRW to KRW) via CONVERT_1000_U. +- 호출(파서): CONVERT_1000_U +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 천원 단위 환산, 금액 필드 동적 처리, 계획금액 +- English: Amount Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0090top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0090f01-732-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0090f01-735-lv_field), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [``](#decl-zcoc0090f01-734--fs_data-), [``](#decl-zcoc0090f01-733--fs_field-) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L737-L751` · confidence 0.85 · `ZCOC0090#ZCOC0090F01#FORM#CONVERT_1000_UP#C1` + +### FORM CONVERT_1000_DOWN — `ZCOC0090F01` L758-L780 (23줄) + +*ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONVERT_1000_U로 환산(천원 단위 처리)하는 FORM으로, CONVERT_1000_UP과 동일한 코드다.* + +> 이 unit 의 조각 1개가 15/23줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 행의 해당 금액 필드를 동적 ASSIGN 후 CONVERT_1000_U로 1000 단위 환산한다. + +```abap + 764| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 765| WHERE DATATYPE = 'CURR'. + 766| + 767| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 768| INTO LV_FIELD. + 769| + 770| LOOP AT GT_DATA ASSIGNING . + 771| ASSIGN (LV_FIELD) TO . + 772| + 773| IF SY-SUBRC EQ 0. + 774| PERFORM CONVERT_1000_U USING + 775| CHANGING . + 776| ENDIF. + 777| ENDLOOP. + 778| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog dynamically assign the amount in each GT_DATA row and convert it via CONVERT_1000_U (thousand-unit conversion). +- 호출(파서): CONVERT_1000_U +- SAP 객체: CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 금액 단위 환산, 천원 단위, 동적 필드 할당 +- English: Currency Unit Conversion, Field Catalog, Dynamic ASSIGN +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0090top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0090f01-759-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0090f01-762-lv_field), [`GT_DATA`](#decl-zcoc0090top-60-gt_data), [``](#decl-zcoc0090f01-761--fs_data-), [``](#decl-zcoc0090f01-760--fs_field-) +- 위치: `abap://ZCOC0090/ZCOC0090F01#L764-L778` · confidence 0.75 · `ZCOC0090#ZCOC0090F01#FORM#CONVERT_1000_DOWN#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0090I01` L6-L27 (22줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 정리하고 화면을 빠져나가며, &BDC 버튼이면 EXECUTE_BDC로 투자오더 생성·예산 등록을 실행하는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 CLEAR_CONTAINER_PROC로 컨테이너를 해제하고 종료하며, '&BDC' 기능코드면 EXECUTE_BDC를 호출해 KO01 오더 생성 및 예산 업로드를 수행한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BDC. + 24| WHEN OTHERS. + 25| ENDCASE. +``` + +- **EN**: Dispatch OK codes: free ALV containers and leave on BACK/CANC/EXIT, and call EXECUTE_BDC (KO01 order creation and budget posting) on '&BDC'. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BDC +- SAP 객체: CLEAR_CONTAINER_PROC, EXECUTE_BDC, KO01 +- 업무 키워드: 기능코드 분기, 오더 생성 실행, 화면 종료 +- English: OK code, PAI, BDC, KO01 +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0090top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0090c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0090/ZCOC0090I01#L9-L25` · confidence 0.85 · `ZCOC0090#ZCOC0090I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (330건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0090C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0090c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0090TOP` (38건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0090top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0090top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0090top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0090top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0090top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0090top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0090top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0090top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0090top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0090top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0090top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0090top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0090top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0090top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc0090top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc0090top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L33-L33 {#decl-zcoc0090top-33-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0090'. +``` + +#### GC_FUNC_AREA — constants · L34-L34 {#decl-zcoc0090top-34-gc_func_area} + +```abap +CONSTANTS : GC_FUNC_AREA LIKE AUFK-FUNC_AREA VALUE '3000'. +``` + +#### GC_IVPRO — constants · L35-L35 {#decl-zcoc0090top-35-gc_ivpro} + +```abap +CONSTANTS : GC_IVPRO LIKE AUFK-IVPRO VALUE 'Z00001'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc0090top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L46-L55 {#decl-zcoc0090top-46-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + AUART(4) TYPE C, + AUFNR(12) TYPE C, + KTEXT(40) TYPE C, + KOSTV(10) TYPE C, " 책임코스트센터 + AKSTL(10) TYPE C, " 요청코스트센터 + ANLKL(8) TYPE C, " 자산 클래스 + AKTIV(10) TYPE C, " 계획된 자본화일자 + WERT(20) TYPE C, " 예산 금액 +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L58-L58 {#decl-zcoc0090top-58-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L60-L89 {#decl-zcoc0090top-60-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + AUART LIKE AUFK-AUART, + AUFNR LIKE AUFK-AUFNR, + KTEXT LIKE AUFK-KTEXT, + BUKRS LIKE AUFK-BUKRS, + KOSTV LIKE AUFK-KOSTV, + AKSTL LIKE AUFK-AKSTL, + FUNC_AREA LIKE AUFK-FUNC_AREA, + IVPRO LIKE AUFK-IVPRO, + ANLKL LIKE ANIA-ANLKL, + AKTIV LIKE ANIA-AKTIV, + WERT LIKE BPAK-WERT, + WERT_VIEW LIKE BPAK-WERT, + TWAER LIKE COSP-TWAER, + ANLN1 LIKE ANLI-ANLN1, + OBJNR LIKE ANLI-OBJNR, + GJAHR LIKE BPEJ-GJAHR, + KOKRS LIKE TKA01-KOKRS, + BELNR LIKE BPEJ-BELNR, + PRCTR LIKE CSKS-PRCTR, + + SET_BG_RESULT TYPE C, " S: 성공, E : 실패. + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L91-L91 {#decl-zcoc0090top-91-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GS_MSG_T_S — data · L92-L92 {#decl-zcoc0090top-92-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_LOG_POP — data · L94-L99 {#decl-zcoc0090top-94-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + AUFNR LIKE AUFK-AUFNR, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L102-L102 {#decl-zcoc0090top-102-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_AUFK — data · L104-L106 {#decl-zcoc0090top-104-gt_aufk} + +```abap +DATA : BEGIN OF GT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, +END OF GT_AUFK. +``` + +#### GT_GSBER — data · L108-L111 {#decl-zcoc0090top-108-gt_gsber} + +```abap +DATA : BEGIN OF GT_GSBER OCCURS 0, + GSBER LIKE AUFK-GSBER, + GTEXT LIKE TGSBT-GTEXT, +END OF GT_GSBER. +``` + +#### GT_KOSTL — data · L113-L116 {#decl-zcoc0090top-113-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_ANKT — data · L118-L121 {#decl-zcoc0090top-118-gt_ankt} + +```abap +DATA : BEGIN OF GT_ANKT OCCURS 0, + ANLKL LIKE ANKT-ANLKL, + TXK20 LIKE ANKT-TXK20, +END OF GT_ANKT. +``` + +#### GT_AUART — data · L123-L125 {#decl-zcoc0090top-123-gt_auart} + +```abap +DATA : BEGIN OF GT_AUART OCCURS 0, + AUART LIKE T003O-AUART, +END OF GT_AUART. +``` + +#### P_BUKRS — parameter · L135-L136 {#decl-zcoc0090top-135-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L144-L145 {#decl-zcoc0090top-144-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L150-L150 {#decl-zcoc0090top-150-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L151-L151 {#decl-zcoc0090top-151-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_FNAME — parameter · L152-L153 {#decl-zcoc0090top-152-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0090_P_FNAME. +``` + +#### P_DSMOD — parameter · L164-L164 {#decl-zcoc0090top-164-p_dsmod} + +```abap +PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0090F01` (36건) + +#### L_UCOMM — data · unit 로컬 · L41-L41 {#decl-zcoc0090f01-41-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_DATA — data · unit 로컬 · L179-L179 {#decl-zcoc0090f01-179-lt_data} + +```abap + DATA : LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L180-L180 {#decl-zcoc0090f01-180-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L363-L363 {#decl-zcoc0090f01-363-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LT_FCAT — data · unit 로컬 · L430-L430 {#decl-zcoc0090f01-430-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L431-L431 {#decl-zcoc0090f01-431-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L432-L432 {#decl-zcoc0090f01-432-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L433-L433 {#decl-zcoc0090f01-433-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L434-L434 {#decl-zcoc0090f01-434-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L435-L435 {#decl-zcoc0090f01-435--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L436-L436 {#decl-zcoc0090f01-436--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L437-L437 {#decl-zcoc0090f01-437--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L439-L442 {#decl-zcoc0090f01-439-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_ANSWER — data · unit 로컬 · L527-L527 {#decl-zcoc0090f01-527-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L578-L578 {#decl-zcoc0090f01-578-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L668-L668 {#decl-zcoc0090f01-668-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L669-L669 {#decl-zcoc0090f01-669-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L670-L670 {#decl-zcoc0090f01-670-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L732-L732 {#decl-zcoc0090f01-732-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L733-L733 {#decl-zcoc0090f01-733--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L734-L734 {#decl-zcoc0090f01-734--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L735-L735 {#decl-zcoc0090f01-735-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L759-L759 {#decl-zcoc0090f01-759-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L760-L760 {#decl-zcoc0090f01-760--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L761-L761 {#decl-zcoc0090f01-761--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L762-L762 {#decl-zcoc0090f01-762-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_MESSAGE — data · unit 로컬 · L791-L791 {#decl-zcoc0090f01-791-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L792-L792 {#decl-zcoc0090f01-792-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L823-L823 {#decl-zcoc0090f01-823-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L824-L824 {#decl-zcoc0090f01-824--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L825-L825 {#decl-zcoc0090f01-825--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L826-L826 {#decl-zcoc0090f01-826-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LT_BPAK — data · unit 로컬 · L881-L881 {#decl-zcoc0090f01-881-lt_bpak} + +```abap + DATA : LT_BPAK LIKE BPAK OCCURS 0 WITH HEADER LINE. +``` + +#### LT_BAPIRET2 — data · unit 로컬 · L882-L882 {#decl-zcoc0090f01-882-lt_bapiret2} + +```abap + DATA : LT_BAPIRET2 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_OAX — data · unit 로컬 · L883-L883 {#decl-zcoc0090f01-883-lv_oax} + +```abap + DATA : LV_OAX TYPE OAX. +``` + +#### LT_ZCOT0030 — data · unit 로컬 · L948-L948 {#decl-zcoc0090f01-948-lt_zcot0030} + +```abap + DATA : LT_ZCOT0030 LIKE ZCOT0030 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0090 L25-31 | 0 | INITIALIZATION에서 SET_DYNP(화면 초기값)와 FC01_ACTIVE(엑셀 양식 다운로드 버튼 활성화)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0090 L32-34 | 0 | AT SELECTION-SCREEN에서 CONTROL_FCXX를 호출해 선택화면 버튼(FC01 엑셀 양식 다운로드) 기능코드를 처리하는 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0090 L35-40 | 0 | AT SELECTION-SCREEN OUTPUT에서 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0090 L41-46 | 0 | 업로드 파일 경로(P_FNAME)의 F4 도움말로 F4_FNAME 파일 선택 대화상자를 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOC0090 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0090 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0090C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0090C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0090C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0090C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0090C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0090C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0090C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0090C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0090C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0090C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0090C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0090C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0090C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0090C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0090C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0090C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC0090C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC0090C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0090C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0090C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0090C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC0090C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0090C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0090C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0090C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0090F01 L6-17 | 0 | 회사코드 권한 조직(GV_BUKRS_O)이 비어 있으면 선택화면 MG1 그룹 필드를 입력 불가로 만드는 LOOP AT SCREEN FORM이다. | +| SET_DYNP | FORM | ZCOC0090F01 L24-31 | 0 | INITIALIZATION에서 SET_COMPANY_BASE/SET_KOKRS_BASE로 회사코드·관리회계영역 기준정보를 설정하고 명칭을 화면에 표시하는 FORM이다. | +| CONTROL_FCXX | FORM | ZCOC0090F01 L40-52 | 1 | 선택화면 버튼 FC01('엑셀 양식 다운로드') 클릭 시 Z_CO_OPEN_SMW0로 SMW0 웹 오브젝트(ZCOC0090 양식)를 여는 FORM이다. | +| CHECK_INPUT | FORM | ZCOC0090F01 L61-68 | 1 | 업로드 파일 경로(P_FNAME)가 입력되지 않았으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0090F01 L74-103 | 1 | 회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0090F01 L109-112 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA로 엑셀 업로드·검증 흐름을 호출하는 처리 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0090F01 L121-124 | 0 | 선택화면 버튼 FC01을 '엑셀 양식 다운로드' 텍스트와 ICON_XXL 아이콘으로 활성화(SET_BTN_1000)하는 FORM이다. | +| TRANSFER_GT_DATA | FORM | ZCOC0090F01 L133-167 | 1 | 엑셀 원본 GT_UPLOAD를 GT_DATA로 이관하며 예산금액을 천원 단위에서 실제 금액으로 환산하고 회사코드·기능영역·투자프로파일 Z00001·통화·연도·손익센터(CSKS-PRCTR)를 채우는 FORM이다. | +| VALIDATION_CHECK | FORM | ZCOC0090F01 L177-355 | 3 | 엑셀 업로드된 투자오더 행에 대해 AUFK 오더번호 기존재·엑셀 내 중복, 책임/요청 코스트센터(CSKS/CSKT), 자산클래스(ANKT), 오더유형(T003O) 및 I/S 유형 여부를 검증해 오류 행을 빨강 상태·메시지로 표시하는 FORM이다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0090F01 L362-380 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC0090F01 L389-404 | 1 | 엑셀 업로드 → BDC 형식 정리 → GT_DATA 이관·통화 변환 → 검증 순으로 호출하는 데이터 읽기 흐름 FORM이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0090F01 L412-420 | 0 | 검증 오류가 난 필드를 ALV 셀 색상(COL 6, 빨강)으로 강조하도록 GT_DATA-F_COL에 컬러 항목을 추가하는 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0090F01 L429-519 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| EXECUTE_BDC | FORM | ZCOC0090F01 L526-551 | 1 | 이미 처리된 경우를 막고 '오더 생성 및 예산 전기' 확인 팝업 후 BDC 옵션을 설정하고 RUN_BDC로 투자오더 생성·예산 등록을 실행하는 FORM이다. | +| BDC_OPTION | FORM | ZCOC0090F01 L560-568 | 0 | SET_BDC_OPTION으로 BDC 실행 옵션(DEFSIZE X, 업데이트모드 S, 표시모드 P_DSMOD)을 GS_BDC_OPTION에 설정하는 FORM이다. | +| RUN_BDC | FORM | ZCOC0090F01 L577-659 | 3 | GT_DATA 각 행에 대해 KO01 BDC(SAPMKAUF)로 투자오더를 생성하고 성공 시 AuC 자산 확인과 최초 예산 등록을 수행한 뒤 결과를 ZCOT0030에 로그로 남기는 실행 FORM이다. | +| SHOW_ERROR_LOG | FORM | ZCOC0090F01 L667-725 | 1 | ALV에서 선택한 행의 처리 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 ALV(W_POPUP_GRID)로 보여주는 FORM이다. | +| CONVERT_1000_UP | FORM | ZCOC0090F01 L731-752 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다. | +| CONVERT_1000_DOWN | FORM | ZCOC0090F01 L758-780 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONVERT_1000_U로 환산(천원 단위 처리)하는 FORM으로, CONVERT_1000_UP과 동일한 코드다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0090F01 L789-813 | 1 | 상태(S/E)에 따른 신호등 아이콘과 '값 : 메시지' 텍스트로 메시지 항목을 만들어 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| CONVERT_KRW_DATA | FORM | ZCOC0090F01 L822-842 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다. | +| GET_AUC_LINK_ANLN1 | FORM | ZCOC0090F01 L851-871 | 1 | KO01로 생성된 투자오더에 투자 프로파일로 자동 생성된 건설중자산(AuC)의 오브젝트번호와 자산번호를 ONROR/ANLI에서 최대 10회 재시도 조회해 GT_DATA에 반영하는 FORM이다. | +| SET_INITIAL_BUDGET | FORM | ZCOC0090F01 L879-938 | 2 | 생성된 투자오더의 오브젝트번호와 예산금액으로 BPAK를 구성해 KBPP_EXTERN_UPDATE_CO(KBUD, 최초예산, 버전 000)로 예산을 등록하고 커밋/롤백 결과를 GT_DATA 상태·메시지에 반영하는 FORM이다. | +| INSERT_LOG | FORM | ZCOC0090F01 L946-964 | 1 | 오더 생성에 성공(AuC 자산번호 ANLN1 존재)한 GT_DATA 행을 생성일시·사용자와 함께 이력 테이블 ZCOT0030에 MODIFY로 저장하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0090I01 L6-27 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 정리하고 화면을 빠져나가며, &BDC 버튼이면 EXECUTE_BDC로 투자오더 생성·예산 등록을 실행하는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0090O01 L6-15 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0090O01 L21-64 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0090O01 L74-118 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0090O01 L126-146 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0090O01 L154-163 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0090O01 L171-193 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0090O01 L202-230 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0090O01 L239-259 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0090O01 L269-368 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0090O01 L376-403 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0100.md b/wiki/programs/ZCOC0100.md new file mode 100644 index 0000000..7d859f3 --- /dev/null +++ b/wiki/programs/ZCOC0100.md @@ -0,0 +1,5169 @@ +--- +type: abap-program +title: "ZCOC0100 — [투자오더-예산] 연도별 예산 Upload" +description: "이미 생성된 투자오더(Internal Order)에 대해 연도별 예산(Annual Budget)을 엑셀 업로드로 등록·갱신하는 프로그램이다. 엑셀(오더번호·내역·자산클래스·자본화일자·예산금액)을 읽어 AUFK/ONROR 로 오더 존재 여부와 중복을 검증하고, 예산 총괄 테이블 BPEG(전체값 WLGES)과 연도 테이블 BPEJ(연도값 WLJHR, VORGA 'KBUD')에서 기존 예산을 조회하여 갱신될 전체 예산을 계산한 뒤, KBPP_EXTERN_UPDATE_CO(KBUD, 버전 000)로 전체값과 연도값을 함께 업데이트한다. 예산 등록 성공 건은 KO02 BDC 로 오더 내역·자산클래스·자본화일자 마스터를 변경한다." +resource: "abap://ZCOC0100" +tags: ["투자오더", "예산관리", "연도별예산", "예산업로드", "오더마스터변경", "투자관리", "사용자 명령", "예산 등록 실행", "화면 종료", "오더 마스터 변경", "BDC", "자산클래스", "자본화일자", "오더 내역", "전체 예산", "연도 예산", "예산 레코드 구성", "적용 순서", "예산 등록", "원예산 KBUD"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:12+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "AUFK", "BPEG", "BPEJ", "DD01L", "DD07T", "ONROR", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KBPP_EXTERN_UPDATE_CO", "KO02", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "d6f20428a5bdf11e093df3d01984f941fa2613246e0197288d0ed531470b0bc6" +x-unit-count: 148 +x-chunk-count: 72 +x-declaration-count: 206 +--- + +## 업무 목적 + +이미 생성된 투자오더(Internal Order)에 대해 연도별 예산(Annual Budget)을 엑셀 업로드로 등록·갱신하는 프로그램이다. 엑셀(오더번호·내역·자산클래스·자본화일자·예산금액)을 읽어 AUFK/ONROR 로 오더 존재 여부와 중복을 검증하고, 예산 총괄 테이블 BPEG(전체값 WLGES)과 연도 테이블 BPEJ(연도값 WLJHR, VORGA 'KBUD')에서 기존 예산을 조회하여 갱신될 전체 예산을 계산한 뒤, KBPP_EXTERN_UPDATE_CO(KBUD, 버전 000)로 전체값과 연도값을 함께 업데이트한다. 예산 등록 성공 건은 KO02 BDC 로 오더 내역·자산클래스·자본화일자 마스터를 변경한다. + +## 주 흐름 + +1. 회사코드·관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 ZCOC0100)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 경로 입력 여부를 확인하고 ALV 필드카탈로그·BDC 표시모드·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 엑셀 파일(2행부터)을 GT_UPLOAD 로 읽고 숫자·날짜·ALPHA 변환 후 GT_DATA 로 이관하며 예산금액을 1000원 단위에서 실제 금액으로 환산한다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +4. 음수 금액, 오더 미존재(AUFK/ONROR), 엑셀 내 오더번호 중복을 검증하고 오더의 오브젝트번호(OBJNR)를 매핑한다 (VALIDATION_CHECK) +5. BPEG(전체 예산 WLGES)·BPEJ(해당 연도 예산 WLJHR)에서 기존 KBUD 예산을 집계하고, 갱신될 전체 예산 = 업로드금액 + (전체 - 해당연도) 을 계산하며 기존 연도예산이 있으면 '갱신됩니다' 경고를 표시한다 (MAPPING_BPEJ_BPEG) +6. 검증 결과를 화면 100 ALV 로 표시하고 행 선택 시 메시지 상세 팝업을 보여준다 (CALL SCREEN 100, SHOW_ERROR_LOG) +7. '실행'(&BDC) 버튼 시 확인 팝업 후 KBPP_EXTERN_UPDATE_CO 로 전체값(E_GES)과 연도값을 순서를 고려하여 함께 등록하고 성공 시 COMMIT 한다 (EXECUTE_BAPI, RUN_BAPI) +8. 예산 등록 성공 오더에 대해 KO02 BDC(SAPMKAUF)로 내역(KTEXT)·자산클래스(ANLKL)·자본화일자(AKTIV)를 변경한다 (RUN_BDC, BDC_OPTION) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (AUFNR, KTEXT, ANLKL, AKTIV, WERT) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 메인 ALV 데이터: 오더, 업로드 예산(WERT), 기존 전체/연도 예산(WLGES/WLJHR), 갱신될 전체값(UPDATE_WLGES), 예산문서번호, 상태·메시지 (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, MAPPING_BPEJ_BPEG, RUN_BAPI, RUN_BDC / 소비: DISPLAY_ALV_LIST, RUN_BAPI, RUN_BDC, SHOW_ERROR_LOG) +- `GT_AUFK` — 존재하는 오더와 오브젝트번호 (AUFK JOIN ONROR) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `LT_BPEG / LT_BPEJ` — 오브젝트별 기존 KBUD 예산 합계 (전체값 BPEG-WLGES, 연도값 BPEJ-WLJHR) (채움: MAPPING_BPEJ_BPEG / 소비: MAPPING_BPEJ_BPEG) +- `GT_BDCDATA` — KO02 배치 인풋 화면 데이터 (채움: RUN_BDC, DYNPRO / 소비: RUN_BDC) + +## 테이블 / 외부 호출 + +- read: AENR, AUFK, BPEG, BPEJ, DD01L, DD07T, ONROR, T001, TKA01, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KBPP_EXTERN_UPDATE_CO, KO02, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP + +## 로직 조각 (72건 / unit 62개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc0100top-113-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0100top-122-p_kokrs) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0100F01` L40-L52 (13줄) + +*선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 연도별 투자오더 예산 업로드 엑셀 양식(GC_SMW0)을 연다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 사용자 명령이 FC01(엑셀 양식 다운로드)이면 Z_CO_OPEN_SMW0를 호출해 SMW0 웹 리포지토리 문서 GC_SMW0를 '연도별 투자오더 예산 Upload 양식' 제목으로 열어 업로드 양식을 제공한다. + +```abap + 44| CASE L_UCOMM. + 45| WHEN 'FC01'. + 46| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 47| EXPORTING + 48| P_DOCNAM = GC_SMW0 + 49| P_TITLE = '연도별 투자오더 예산 Upload 양식'(F01). + 50| ENDCASE. +``` + +- **EN**: On function code FC01, calls Z_CO_OPEN_SMW0 to open the SMW0 web repository document holding the annual investment order budget upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 양식, SMW0 문서, 투자오더 예산 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0100f01-41-l_ucomm), [`GC_SMW0`](#decl-zcoc0100top-33-gc_smw0) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L44-L50` · confidence 0.88 · `ZCOC0100#ZCOC0100F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0100` L47-L54 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0100/ZCOC0100#L48-L50` · confidence 0.8 · `ZCOC0100#ZCOC0100#EVENT#START-OF-SELECTION#C1` + +### FORM INITIALIZE_DATA — `ZCOC0100F01` L74-L103 (30줄) + +*회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다.* + +> 이 unit 의 조각 1개가 5/30줄(17%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_COMPANY_BASE와 SET_KOKRS_BASE로 회사코드(P_BUKRS)·관리회계영역(P_KOKRS)의 기준정보와 명칭을 설정해 화면 텍스트(P_BUTXT, P_BEZEI)에 표시한다. + +```abap + 81| PERFORM SET_COMPANY_BASE USING P_BUKRS. + 82| P_BUTXT = GV_BUKRS_TXT. + 83| + 84| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 85| P_BEZEI = GV_KOKRS_BEZEI. +``` + +- **EN**: Set company code and controlling area base data via SET_COMPANY_BASE / SET_KOKRS_BASE and show their descriptions on the selection screen. +- 호출(파서): SET_COMPANY_BASE, SET_KOKRS_BASE +- SAP 객체: SET_COMPANY_BASE, SET_KOKRS_BASE +- 업무 키워드: 회사코드, 관리회계영역, 기준정보 설정 +- English: Company Code, Controlling Area +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zcoc0100top-113-p_bukrs), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`P_KOKRS`](#decl-zcoc0100top-122-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei) +- 선언을 못 찾은 이름: P_BUTXT, P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L81-L85` · confidence 0.75 · `ZCOC0100#ZCOC0100F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM READ_DATA — `ZCOC0100F01` L273-L289 (17줄) + +*엑셀 업로드 → 형식 정리 → GT_DATA 이전·통화 변환 → 오더 검증 → 기존 예산(BPEG/BPEJ) 매핑의 데이터 읽기 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 14/17줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] P_FNAME 엑셀을 업로드하고 GT_UPLOAD가 있으면 SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK(AUFK/ONROR), MAPPING_BPEJ_BPEG(기존 예산 조회·갱신값 계산)을 차례로 수행한다. + +```abap + 275| PERFORM UPLOAD_EXCEL_DATA USING P_FNAME. + 276| + 277| CHECK GT_UPLOAD[] IS NOT INITIAL. + 278| + 279| "2. 업로드가 제대로 되었다면. + 280| PERFORM SET_BDC_FORM USING 'GT_DATA'. + 281| + 282| "3. 엑셀 데이터를 인터널 테이블로 이전 + 283| PERFORM TRANSFER_GT_DATA. + 284| PERFORM CONVERT_KRW_DATA. + 285| "4. Validation + 286| PERFORM VALIDATION_CHECK. + 287| " 5 . 해당 연도에 기존 데이타 조회 + 288| PERFORM MAPPING_BPEJ_BPEG. +``` + +- **EN**: Orchestrates Excel upload, format cleanup, transfer to GT_DATA with currency conversion, order validation and existing budget mapping from BPEG/BPEJ. +- 호출(파서): UPLOAD_EXCEL_DATA, SET_BDC_FORM, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK, MAPPING_BPEJ_BPEG +- SAP 객체: AUFK, BPEG, BPEJ +- 업무 키워드: 업로드 처리 흐름, 오더 검증, 기존 예산 조회, 데이터 준비 +- English: Upload Processing, Validation, Budget Mapping +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0100top-130-p_fname), [`GT_UPLOAD`](#decl-zcoc0100top-44-gt_upload) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L275-L288` · confidence 0.85 · `ZCOC0100#ZCOC0100F01#FORM#READ_DATA#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0100F01` L246-L264 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 249| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 250| + 251| IF L_EXISTS = ABAP_FALSE. + 252| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 253| LEAVE LIST-PROCESSING. + 254| EXIT. + 255| ENDIF. + 256| + 257| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 258| 'GS_UPLOAD' + 259| P_NAME + 260| 1 "S_COL-LOW + 261| 2 "S_ROW-LOW + 262| 256 "S_COL-HIGH + 263| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0100f01-247-l_exists) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L249-L263` · confidence 0.85 · `ZCOC0100#ZCOC0100F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0100top-130-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0100F01` L314-L404 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 333| L_TABNAME = P_STRUCT_NM. + 334| + 335| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 336| USING L_TABNAME. + 337| + 338| SELECT DOMNAME LOWERCASE + 339| INTO TABLE LT_LOWERCASE + 340| FROM DD01L + 341| FOR ALL ENTRIES IN LT_FCAT + 342| WHERE DOMNAME = LT_FCAT-DOMNAME + 343| AND AS4LOCAL = 'A'. + 344| + 345| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0100f01-316-l_tabname), [`LT_FCAT`](#decl-zcoc0100f01-315-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0100f01-324-lt_lowercase) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L333-L345` · confidence 0.9 · `ZCOC0100#ZCOC0100F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 347| LOOP AT LT_FCAT ASSIGNING . + 348| CASE -DATATYPE. + 349| " 숫자 타입 + 350| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 351| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 352| L_TYPE = 'NUMB'. + 353| " 날짜 + 354| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 355| L_TYPE = 'DATS'. + 356| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 357| "CHECK BOX + 358| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 359| L_TYPE = 'CHCK'. + 360| ENDIF. + 361| WHEN OTHERS. + 362| ENDCASE. + 363| + 364| IF -CONVEXIT IS NOT INITIAL. + 365| L_CONV_ALPHA = 'X'. + 366| ENDIF. + 367| + 368| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 369| CONTINUE. + 370| ENDIF. + 371| + 372| LOOP AT GT_UPLOAD ASSIGNING . + 373| CONCATENATE '-' -FIELDNAME + 374| INTO L_FSNAME. + 375| ASSIGN (L_FSNAME) TO . + 376| + 377| IF SY-SUBRC EQ 0. + 378| CASE L_TYPE. + 379| WHEN 'NUMB'. + 380| PERFORM BDC_CURR USING . + 381| WHEN 'DATS'. + 382| PERFORM BDC_DATE USING . + 383| WHEN 'CHCK'. + 384| PERFORM BDC_CHECKBOX USING . + 385| WHEN OTHERS. + 386| ENDCASE. + 387| + 388| IF L_CONV_ALPHA = 'X'. + 389| PERFORM ZERO_I USING . + 390| ENDIF. + 391| + 392| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 393| BINARY SEARCH. + 394| + 395| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 396| TRANSLATE TO UPPER CASE. + 397| ENDIF. + 398| ENDIF. + 399| ENDLOOP. + 400| + 401| CLEAR : L_TYPE. + 402| CLEAR : L_CONV_ALPHA. + 403| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0100f01-315-lt_fcat), [``](#decl-zcoc0100f01-322--fs_fcat-), [`L_TYPE`](#decl-zcoc0100f01-318-l_type), [`L_CONV_ALPHA`](#decl-zcoc0100f01-319-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0100top-44-gt_upload), [``](#decl-zcoc0100f01-320--fs_upload-), [`L_FSNAME`](#decl-zcoc0100f01-317-l_fsname), [``](#decl-zcoc0100f01-321--fs-), [`LT_LOWERCASE`](#decl-zcoc0100f01-324-lt_lowercase) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L347-L403` · confidence 0.9 · `ZCOC0100#ZCOC0100F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0100F01` L133-L156 (24줄) + +*엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 예산금액을 1000원 단위에서 실제 금액으로 환산(CONVERT_1000_U)하고 통화·회계연도·관리회계영역을 세팅하며 숫자 변환 오류를 처리한다.* + +> 이 unit 의 조각 1개가 21/24줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_UPLOAD 각 행을 GT_DATA로 MOVE-CORRESPONDING하고 표시용 금액(WERT_VIEW)을 보존한 뒤 CONVERT_1000_U로 실제 반영 금액을 환산하며 P_TWAER/P_GJAHR/P_KOKRS를 세팅한다; CX_SY_CONVERSION_NO_NUMBER 발생 시 오류 메시지 후 처리를 중단한다. + +```abap + 134| TRY. + 135| LOOP AT GT_UPLOAD. + 136| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 137| GT_DATA-WERT_VIEW = GT_DATA-WERT. + 138| + 139| " 실제 반영할 금액. + 140| PERFORM CONVERT_1000_U USING GT_DATA-WERT + 141| CHANGING GT_DATA-WERT. + 142| + 143| GT_DATA-TWAER = P_TWAER. + 144| GT_DATA-GJAHR = P_GJAHR. + 145| GT_DATA-KOKRS = P_KOKRS. + 146| + 147| APPEND GT_DATA. + 148| CLEAR : GT_DATA. + 149| ENDLOOP. + 150| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 151| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F03) + 152| DISPLAY LIKE 'E'. + 153| LEAVE LIST-PROCESSING. + 154| ENDTRY. +``` + +- **EN**: Transfers uploaded rows to GT_DATA, scales the budget amount from thousands via CONVERT_1000_U, assigns currency, fiscal year and controlling area, and aborts on CX_SY_CONVERSION_NO_NUMBER. +- 호출(파서): CONVERT_1000_U +- SAP 객체: CX_SY_CONVERSION_NO_NUMBER +- 업무 키워드: 엑셀 데이터 이전, 예산금액 환산, 천 단위, 숫자 변환 오류 +- English: Excel Upload, Amount Scaling, Data Transfer, Conversion Error +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0100top-44-gt_upload), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`P_TWAER`](#decl-zcoc0100top-128-p_twaer), [`P_GJAHR`](#decl-zcoc0100top-129-p_gjahr), [`P_KOKRS`](#decl-zcoc0100top-122-p_kokrs) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L134-L154` · confidence 0.88 · `ZCOC0100#ZCOC0100F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM CONVERT_KRW_DATA — `ZCOC0100F01` L569-L589 (21줄) + +*ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR' 필드를 찾아 GT_DATA 각 행의 금액을 동적 ASSIGN한 뒤 CONV_DB_WAERS로 통화 GV_WAERS(KRW) 기준 내부 금액 형식으로 변환한다. + +```abap + 575| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 576| WHERE DATATYPE = 'CURR'. + 577| + 578| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 579| INTO LV_FIELD. + 580| + 581| LOOP AT GT_DATA ASSIGNING . + 582| ASSIGN (LV_FIELD) TO . + 583| + 584| IF SY-SUBRC EQ 0. + 585| PERFORM CONV_DB_WAERS USING GV_WAERS. + 586| ENDIF. + 587| ENDLOOP. + 588| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the amount in each GT_DATA row and convert it to the internal DB currency format for GV_WAERS via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: CONV_DB_WAERS, LVC_S_FCAT +- 업무 키워드: 통화 금액 변환, 원화, 내부 형식, 동적 필드 할당 +- English: Currency Conversion, KRW, Field Catalog, Dynamic ASSIGN +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0100top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0100f01-570-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0100f01-573-lv_field), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [``](#decl-zcoc0100f01-572--fs_data-), [``](#decl-zcoc0100f01-571--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L575-L588` · confidence 0.8 · `ZCOC0100#ZCOC0100F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK — `ZCOC0100F01` L166-L239 (74줄) + +*업로드 오더에 대해 AUFK/ONROR 존재 여부, 음수 금액, 엑셀 내 오더번호 중복을 검증하고 오더의 오브젝트번호(OBJNR)를 매핑한다.* + +> 이 unit 의 조각 2개가 56/74줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드된 오더번호에 대해 AUFK JOIN ONROR에서 오더 내역과 오브젝트번호(OBJNR)를 GT_AUFK에 조회해 오더 존재 검증과 예산 API용 OBJNR 매핑에 사용한다. + +```abap + 178| SELECT A~AUFNR A~KTEXT B~OBJNR + 179| FROM AUFK AS A INNER JOIN ONROR AS B + 180| ON A~AUFNR = B~AUFNR + 181| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK + 182| FOR ALL ENTRIES IN GT_DATA + 183| WHERE A~AUFNR = GT_DATA-AUFNR. + 184| + 185| SORT GT_AUFK. +``` + +- **EN**: Selects order text and object number from AUFK joined with ONROR for the uploaded orders into GT_AUFK. +- 테이블(파서): read [AUFK](/tables/AUFK.md), [ONROR](/tables/ONROR.md) / write - +- SAP 객체: AUFK, ONROR +- 업무 키워드: 오더 마스터, 오브젝트번호, 투자오더, 존재 검증 +- English: Internal Order, Object Number, Order Master +- 정의부(복사 시 함께 필요): [`GT_AUFK`](#decl-zcoc0100top-99-gt_aufk), [`GT_DATA`](#decl-zcoc0100top-55-gt_data) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L178-L185` · confidence 0.93 · `ZCOC0100#ZCOC0100F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] 행별로 예산금액(WERT)이 음수인지, 오더가 GT_AUFK에 없는지(없으면 오류, 있으면 OBJNR 세팅), 동일 오더번호가 엑셀 내에 2회 이상 있는지 검사해 오류 메시지·RED 상태·필드 강조와 GV_UPLOAD_ERROR를 설정한다. + +```abap + 190| LOOP AT GT_DATA. + 191| + 192| IF GT_DATA-WERT < 0. + 193| GT_DATA-MESSAGE = '0보다 큰 금액을 입력하여 주십시오'(F13). + 194| GT_DATA-STATUS = GC_STATUS_RED. + 195| GV_UPLOAD_ERROR = 'X'. + 196| PERFORM SET_ERROR_FIELD_RED USING 'WERT'. + 197| PERFORM ADD_DATA_MESSAGE USING 'E' + 198| GT_DATA-AUFNR + 199| GT_DATA-MESSAGE. + 200| ENDIF. + 201| + 202| READ TABLE GT_AUFK WITH KEY AUFNR = GT_DATA-AUFNR + 203| BINARY SEARCH. + 204| + 205| IF SY-SUBRC NE 0. + 206| GT_DATA-MESSAGE = '존재하지 않는 오더 번호입니다.'(F04). + 207| GT_DATA-STATUS = GC_STATUS_RED. + 208| GV_UPLOAD_ERROR = 'X'. + 209| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 210| PERFORM ADD_DATA_MESSAGE USING 'E' + 211| GT_DATA-AUFNR + 212| GT_DATA-MESSAGE. + 213| ELSE. + 214| * GT_DATA-KTEXT = GT_AUFK-KTEXT. + 215| GT_DATA-OBJNR = GT_AUFK-OBJNR. + 216| ENDIF. + 217| + 218| CLEAR : LV_CNT . + 219| LOOP AT LT_DATA TRANSPORTING NO FIELDS + 220| WHERE AUFNR = GT_DATA-AUFNR. + 221| ADD 1 TO LV_CNT . + 222| CHECK LV_CNT = 1. + 223| ENDLOOP. + 224| + 225| IF LV_CNT >= 2. + 226| GT_DATA-MESSAGE = '중복된 오더 번호가 입력되었습니다.'(F05). + 227| GT_DATA-STATUS = GC_STATUS_RED. + 228| GV_UPLOAD_ERROR = 'X'. + 229| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 230| PERFORM ADD_DATA_MESSAGE USING 'E' + 231| GT_DATA-AUFNR + 232| GT_DATA-MESSAGE. + 233| ENDIF. + 234| + 235| CLEAR : GT_AUFK. + 236| MODIFY GT_DATA. CLEAR : GT_DATA. + 237| ENDLOOP. +``` + +- **EN**: Validates each row: negative amount, non-existent order (else maps OBJNR), and duplicate order numbers within the upload; errors are marked red with messages. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: AUFK, ONROR +- 업무 키워드: 업로드 검증, 음수 금액, 오더 미존재, 오더번호 중복, 오브젝트번호 매핑 +- English: Validation, Duplicate Check, Internal Order, Object Number +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0100top-22-gv_upload_error), [`GT_AUFK`](#decl-zcoc0100top-99-gt_aufk), [`LV_CNT`](#decl-zcoc0100f01-169-lv_cnt), [`LT_DATA`](#decl-zcoc0100f01-168-lt_data) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L190-L237` · confidence 0.92 · `ZCOC0100#ZCOC0100F01#FORM#VALIDATION_CHECK#C2` + +### FORM MAPPING_BPEJ_BPEG — `ZCOC0100F01` L776-L870 (95줄) + +*오더 오브젝트별 기존 원예산(KBUD)을 BPEG(전체값)·BPEJ(연도값)에서 집계해 GT_DATA에 매핑하고 갱신될 전체 예산(업로드금액 + 전체 - 해당연도)을 계산하며 기존 연도예산이 있으면 갱신 경고를 표시한다.* + +> 이 unit 의 조각 3개가 74/95줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_DATA의 오더 OBJNR 범위를 만들어 BPEG에서 값유형 '41'(예산)·VORGA 'KBUD'(원예산) 조건으로 오브젝트별 전체 예산 합계 SUM(WLGES)를 조회한다. + +```abap + 794| LOOP AT GT_DATA. + 795| ADD_RANGE_EQ : LR_OBJNR GT_DATA-OBJNR. + 796| ENDLOOP. + 797| + 798| SELECT + 799| OBJNR + 800| SUM( WLGES ) AS WLGES + 801| FROM BPEG + 802| INTO CORRESPONDING FIELDS OF TABLE LT_BPEG + 803| WHERE OBJNR IN LR_OBJNR + 804| AND WRTTP = '41' + 805| * AND VORGA IN ('KBUD', 'KBN0', 'KBR0') " 예산 편성, 증액, 삭감 + 806| AND VORGA = 'KBUD' + 807| GROUP BY OBJNR. + 808| + 809| SORT LT_BPEG BY OBJNR. +``` + +- **EN**: Selects the total overall budget SUM(WLGES) per order object from BPEG for value type 41 and activity KBUD (original budget). +- 테이블(파서): read [BPEG](/tables/BPEG.md) / write - +- SAP 객체: BPEG +- 업무 키워드: 전체 예산, 원예산, 예산 총괄, 오브젝트번호, 집계 +- English: Overall Budget, Original Budget, BPEG, Value Type 41 +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_OBJNR`](#decl-zcoc0100f01-789-lr_objnr), [`LT_BPEG`](#decl-zcoc0100f01-779-lt_bpeg) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L794-L809` · confidence 0.93 · `ZCOC0100#ZCOC0100F01#FORM#MAPPING_BPEJ_BPEG#C1` + +#### [sql_select] BPEJ에서 해당 회계연도(P_GJAHR)·값유형 '41'·VORGA 'KBUD' 조건으로 오브젝트별 연도 예산 합계 SUM(WLJHR)를 조회한다. + +```abap + 811| SELECT + 812| OBJNR + 813| SUM( WLJHR ) AS WLJHR + 814| FROM BPEJ + 815| INTO CORRESPONDING FIELDS OF TABLE LT_BPEJ + 816| WHERE OBJNR IN LR_OBJNR + 817| AND WRTTP = '41' + 818| AND GJAHR = P_GJAHR + 819| AND VORGA = 'KBUD' + 820| * AND VORGA IN ('KBUD', 'KBN0', 'KBR0') " 예산 편성, 증액, 삭감 + 821| GROUP BY OBJNR. + 822| + 823| SORT LT_BPEJ BY OBJNR. +``` + +- **EN**: Selects the annual budget SUM(WLJHR) per order object for the fiscal year from BPEJ (value type 41, activity KBUD). +- 테이블(파서): read [BPEJ](/tables/BPEJ.md) / write - +- SAP 객체: BPEJ +- 업무 키워드: 연도 예산, 원예산, 회계연도, 집계 +- English: Annual Budget, Original Budget, BPEJ, Fiscal Year +- 정의부(복사 시 함께 필요): [`LT_BPEJ`](#decl-zcoc0100f01-784-lt_bpej), [`LR_OBJNR`](#decl-zcoc0100f01-789-lr_objnr), [`P_GJAHR`](#decl-zcoc0100top-129-p_gjahr) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L811-L823` · confidence 0.93 · `ZCOC0100#ZCOC0100F01#FORM#MAPPING_BPEJ_BPEG#C2` + +#### [calculation] 행별로 기존 전체값(WLGES)·연도값(WLJHR)을 매핑하고 연도값 표시용 천 단위 변환 후, 기존 연도예산이 있으면 YELLOW 상태와 '업로드 금액으로 갱신됩니다' 경고를 추가하며, 갱신될 전체 예산 UPDATE_WLGES = 업로드금액(WERT) + (전체 - 해당연도)를 계산한다. + +```abap + 825| LOOP AT GT_DATA. + 826| READ TABLE LT_BPEG WITH KEY OBJNR = GT_DATA-OBJNR + 827| BINARY SEARCH. + 828| + 829| IF SY-SUBRC EQ 0. + 830| GT_DATA-WLGES = LT_BPEG-WLGES. + 831| ENDIF. + 832| + 833| READ TABLE LT_BPEJ WITH KEY OBJNR = GT_DATA-OBJNR + 834| BINARY SEARCH. + 835| + 836| IF SY-SUBRC EQ 0. + 837| GT_DATA-WLJHR = LT_BPEJ-WLJHR. + 838| ENDIF. + 839| + 840| GT_DATA-WLJHR_VIEW = GT_DATA-WLJHR. + 841| + 842| PERFORM CONVERT_1000_D USING GT_DATA-WLJHR_VIEW + 843| GT_DATA-WLJHR_VIEW . + 844| + 845| IF GT_DATA-WLJHR IS INITIAL. + 846| GT_DATA-STATUS = GC_STATUS_INIT. + 847| ELSE. + 848| IF GT_DATA-MSG_LIST[] IS INITIAL. + 849| GT_DATA-STATUS = GC_STATUS_YELLOW. + 850| LV_MESSAGE = '해당 업로드 금액으로 갱신됩니다.'(F08). + 851| GT_DATA-MESSAGE = LV_MESSAGE. + 852| PERFORM ADD_DATA_MESSAGE USING 'W' '' + 853| LV_MESSAGE. + 854| ENDIF. + 855| ENDIF. + 856| + 857| " 전체 금액 - 현재 년도 금액 + 858| GT_DATA-EXP_JHR_WLGES = GT_DATA-WLGES + 859| - GT_DATA-WLJHR. + 860| + 861| " UPDATE 될 전체 금액 + 862| GT_DATA-UPDATE_WLGES = GT_DATA-WERT + 863| + GT_DATA-EXP_JHR_WLGES. + 864| + 865| MODIFY GT_DATA. + 866| + 867| CLEAR : LT_BPEG, LT_BPEJ, GT_DATA. + 868| CLEAR : LV_MESSAGE. + 869| ENDLOOP. +``` + +- **EN**: Maps existing overall and annual budgets to each row, warns when an annual budget already exists (will be overwritten), and computes the new overall budget as upload amount plus overall minus current-year budget. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D, ADD_DATA_MESSAGE +- SAP 객체: BPEG, BPEJ +- 업무 키워드: 갱신 전체 예산 계산, 기존 예산, 갱신 경고, 연도 예산, 전체 예산 +- English: Budget Calculation, Overall Budget, Annual Budget, Warning Status +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`LT_BPEG`](#decl-zcoc0100f01-779-lt_bpeg), [`LT_BPEJ`](#decl-zcoc0100f01-784-lt_bpej), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`LV_MESSAGE`](#decl-zcoc0100f01-777-lv_message) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L825-L869` · confidence 0.9 · `ZCOC0100#ZCOC0100F01#FORM#MAPPING_BPEJ_BPEG#C3` + +### EVENT END-OF-SELECTION — `ZCOC0100` L55-L66 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 56| IF SY-BATCH NE 'X'. + 57| IF GT_DATA[] IS NOT INITIAL. + 58| CALL SCREEN 100. + 59| ELSE. + 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 61| ENDIF. + 62| ELSE. + 63| IF GT_DATA[] IS NOT INITIAL. + 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 65| ENDIF. + 66| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data) +- 위치: `abap://ZCOC0100/ZCOC0100#L56-L66` · confidence 0.85 · `ZCOC0100#ZCOC0100#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0100/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0100/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0100/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0100/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0100/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0100#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0100top-122-p_kokrs) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0100#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0100/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0100#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_ERROR_LOG — `ZCOC0100F01` L412-L470 (59줄) + +*선택한 ALV 행(P_ROW)의 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 해당 행의 MSG_LIST를 오더번호·상태·메시지 구조 LT_POPUP으로 변환하고 팝업 ALV 그리드 객체 W_POPUP_GRID를 생성해 SHOW_DATA로 오류/처리 로그를 표시한다. + +```abap + 447| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 448| LT_POPUP-AUFNR = GT_DATA-AUFNR. + 449| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 450| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 451| APPEND LT_POPUP. + 452| CLEAR : LT_POPUP. + 453| ENDLOOP. + 454| + 455| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 456| + 457| CREATE OBJECT W_POPUP_GRID + 458| EXPORTING + 459| I_T_FIELDCATALOG = POPUP_FIELDCAT + 460| I_S_LAYOUT = LS_LAYO + 461| I_CAPTION = '' + 462| I_LEFT = 100 + 463| I_TOP = 150 + 464| I_HEIGHT = 400 + 465| I_WIDTH = 900. + 466| + 467| CALL METHOD W_POPUP_GRID->SHOW_DATA + 468| EXPORTING + 469| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Builds a popup log table from the row's message list and displays it in a popup ALV grid (W_POPUP_GRID->SHOW_DATA). +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, 오더번호, 처리 결과 +- English: Error Log Popup, ALV Grid, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`GS_MSG_T_S`](#decl-zcoc0100top-87-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc0100top-89-gt_log_pop), [`LT_POPUP`](#decl-zcoc0100f01-415-lt_popup), [`LS_LAYO`](#decl-zcoc0100f01-414-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0100top-97-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0100f01-413-popup_fieldcat) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L447-L469` · confidence 0.8 · `ZCOC0100#ZCOC0100F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM CONVERT_1000_UP — `ZCOC0100F01` L476-L497 (22줄) + +*ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 라인의 해당 금액 필드를 동적으로 ASSIGN한 뒤 CONVERT_1000_U로 1000배(천원→원) 변환한다. + +```abap + 482| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 483| WHERE DATATYPE = 'CURR'. + 484| + 485| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 486| INTO LV_FIELD. + 487| + 488| LOOP AT GT_DATA ASSIGNING . + 489| ASSIGN (LV_FIELD) TO . + 490| + 491| IF SY-SUBRC EQ 0. + 492| PERFORM CONVERT_1000_U USING + 493| CHANGING . + 494| ENDIF. + 495| ENDLOOP. + 496| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog, dynamically assign the amount field in each GT_DATA row and multiply by 1000 (thousand KRW to KRW) via CONVERT_1000_U. +- 호출(파서): CONVERT_1000_U +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA, CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 천원 단위 환산, 금액 필드 동적 처리, 계획금액 +- English: Amount Conversion, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0100top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0100f01-477-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0100f01-480-lv_field), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [``](#decl-zcoc0100f01-479--fs_data-), [``](#decl-zcoc0100f01-478--fs_field-) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L482-L496` · confidence 0.85 · `ZCOC0100#ZCOC0100F01#FORM#CONVERT_1000_UP#C1` + +### FORM CONVERT_1000_DOWN — `ZCOC0100F01` L503-L525 (23줄) + +*ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONVERT_1000_U로 환산(천원 단위 처리)하는 FORM으로, CONVERT_1000_UP과 동일한 코드다.* + +> 이 unit 의 조각 1개가 15/23줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR'인 필드를 찾아 GT_DATA 각 행의 해당 금액 필드를 동적 ASSIGN 후 CONVERT_1000_U로 1000 단위 환산한다. + +```abap + 509| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 510| WHERE DATATYPE = 'CURR'. + 511| + 512| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 513| INTO LV_FIELD. + 514| + 515| LOOP AT GT_DATA ASSIGNING . + 516| ASSIGN (LV_FIELD) TO . + 517| + 518| IF SY-SUBRC EQ 0. + 519| PERFORM CONVERT_1000_U USING + 520| CHANGING . + 521| ENDIF. + 522| ENDLOOP. + 523| ENDLOOP. +``` + +- **EN**: For every CURR-type field in the ALV field catalog dynamically assign the amount in each GT_DATA row and convert it via CONVERT_1000_U (thousand-unit conversion). +- 호출(파서): CONVERT_1000_U +- SAP 객체: CONVERT_1000_U, LVC_S_FCAT +- 업무 키워드: 금액 단위 환산, 천원 단위, 동적 필드 할당 +- English: Currency Unit Conversion, Field Catalog, Dynamic ASSIGN +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0100top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0100f01-504-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0100f01-507-lv_field), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [``](#decl-zcoc0100f01-506--fs_data-), [``](#decl-zcoc0100f01-505--fs_field-) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L509-L523` · confidence 0.75 · `ZCOC0100#ZCOC0100F01#FORM#CONVERT_1000_DOWN#C1` + +### FORM EXECUTE_BAPI — `ZCOC0100F01` L623-L653 (31줄) + +*중복 실행을 막고 사용자 확인 후 RUN_BAPI(예산 등록)와 RUN_BDC(KO02 오더 마스터 변경)를 순서대로 수행한다.* + +> 이 unit 의 조각 1개가 24/31줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 처리된 경우 오류로 중단하고 POPUP_TO_CONFIRM_02로 투자오더 예산 전기 여부를 확인(J)한 뒤 GV_ALREADY_POST를 세우고 RUN_BAPI(KBPP_EXTERN_UPDATE_CO 예산 입력)와 RUN_BDC(KO02 마스터 변경)를 실행하고 ALV 갱신 플래그를 설정한다. + +```abap + 628| IF GV_ALREADY_POST = 'X'. + 629| MESSAGE S000 DISPLAY LIKE 'E' WITH + 630| '이미 처리하였습니다'(F18). + 631| EXIT. + 632| ENDIF. + 633| + 634| IF GV_UPLOAD_ERROR = 'X'. + 635| * PERFORM PGM_MSG USING 'F11' 'E'. + 636| ENDIF. + 637| + 638| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 639| '투자오더의 예산을 전기 하시겠습니까?'(F11) ' ' + 640| CHANGING L_ANSWER. + 641| IF L_ANSWER <> 'J'. + 642| EXIT. + 643| ENDIF. + 644| + 645| GV_ALREADY_POST = 'X'. + 646| + 647| PERFORM RUN_BAPI. " 예산입력 + 648| PERFORM RUN_BDC. " 마스터 변경 + 649| + 650| GV_REFRESH = 'X'. + 651| MESSAGE S000 WITH '처리를 완료하였습니다'(F12). +``` + +- **EN**: Guards against duplicate execution, confirms with the user via POPUP_TO_CONFIRM_02, then runs RUN_BAPI (budget update) followed by RUN_BDC (KO02 order master change). +- 호출(파서): POPUP_TO_CONFIRM_02, RUN_BAPI, RUN_BDC +- SAP 객체: POPUP_TO_CONFIRM_02, KBPP_EXTERN_UPDATE_CO, KO02 +- 업무 키워드: 중복 실행 방지, 확인 팝업, 예산 등록, 오더 마스터 변경 +- English: Confirmation Popup, Budget Posting, Order Master Change +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0100top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc0100top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc0100f01-624-l_answer), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L628-L651` · confidence 0.88 · `ZCOC0100#ZCOC0100F01#FORM#EXECUTE_BAPI#C1` + +### FORM RUN_BAPI — `ZCOC0100F01` L662-L767 (106줄) + +*GT_DATA 각 오더에 대해 전체값(WLGES)·연도값(WLJHR) BPAK 레코드를 만들어 KBPP_EXTERN_UPDATE_CO(KBUD, 버전 000)로 투자오더 예산을 갱신하고 COMMIT/ROLLBACK 결과와 예산문서번호를 기록한다.* + +> 이 unit 의 조각 2개가 71/106줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 오더 오브젝트번호(OBJNR)에 대해 전체값 BPAK(E_GES='X', WERT=UPDATE_WLGES)과 연도값 BPAK(E_GJAHR, WERT=업로드 금액)을 버전 000·전기일 SY-DATUM으로 구성하고, 기존 전체값이 갱신값보다 작으면 전체값을 먼저, 아니면 연도값을 먼저 IT_BPAK에 넣어 예산 정합성 오류를 피한다. + +```abap + 690| LS_GES_BPAK-E_OBJNR = GT_DATA-OBJNR. + 691| LS_GES_BPAK-WERT = GT_DATA-UPDATE_WLGES. + 692| LS_GES_BPAK-TWAER = GT_DATA-TWAER. + 693| LS_GES_BPAK-E_GES = 'X'. " 전체 + 694| LS_GES_BPAK-E_VERSN = '000'. + 695| LS_GES_BPAK-BLDAT = SY-DATUM. + 696| CONCATENATE GT_DATA-AUFNR ` ` GT_DATA-GJAHR ` ` + 697| GT_DATA-ANLN1 ` ` INTO LT_BPAK-SGTEXT. + 698| + 699| LS_JHR_BPAK-E_OBJNR = GT_DATA-OBJNR. + 700| LS_JHR_BPAK-WERT = GT_DATA-WERT. + 701| LS_JHR_BPAK-TWAER = GT_DATA-TWAER. + 702| LS_JHR_BPAK-E_GJAHR = GT_DATA-GJAHR. " 해당연도. + 703| LS_JHR_BPAK-E_VERSN = '000'. + 704| LS_JHR_BPAK-BLDAT = SY-DATUM. + 705| CONCATENATE GT_DATA-AUFNR ` ` GT_DATA-GJAHR ` ` + 706| GT_DATA-ANLN1 ` ` INTO LT_BPAK-SGTEXT. + 707| + 708| " 전체 값이 현재년도외 값 + 현재 입력값 보다 작은 경우에는 전체값부터 반영. + 709| IF GT_DATA-WLGES < GT_DATA-UPDATE_WLGES. + 710| " 전체값 부터 수정 적용. + 711| APPEND LS_GES_BPAK TO LT_BPAK. + 712| APPEND LS_JHR_BPAK TO LT_BPAK. + 713| ELSE. + 714| " 년도부터 적용하고 전체 적용. + 715| APPEND LS_JHR_BPAK TO LT_BPAK. + 716| APPEND LS_GES_BPAK TO LT_BPAK. + 717| ENDIF. +``` + +- **EN**: Builds the overall (E_GES) and annual (E_GJAHR) BPAK budget records for the order object and orders them so that the overall budget is updated first when it must grow, avoiding budget consistency errors. +- SAP 객체: BPAK +- 업무 키워드: 전체 예산, 연도 예산, 예산 레코드 구성, 적용 순서, 투자오더 +- English: Overall Budget, Annual Budget, BPAK, Original Budget +- 정의부(복사 시 함께 필요): [`LS_GES_BPAK`](#decl-zcoc0100f01-667-ls_ges_bpak), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`LT_BPAK`](#decl-zcoc0100f01-664-lt_bpak), [`LS_JHR_BPAK`](#decl-zcoc0100f01-668-ls_jhr_bpak) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L690-L717` · confidence 0.9 · `ZCOC0100#ZCOC0100F01#FORM#RUN_BAPI#C1` + +#### [fm_call] KBPP_EXTERN_UPDATE_CO(I_BUDGET_ACTIVITY 'KBUD' 원예산, 오더 애플리케이션 'O', 비델타 갱신)로 예산을 등록하고 RETURN 메시지를 행에 추가한 뒤, 오류가 없으면 BAPI_TRANSACTION_COMMIT 후 예산문서번호(BELNR)와 GREEN 상태를, 오류면 BAPI_TRANSACTION_ROLLBACK 후 RED 상태를 기록한다. + +```abap + 719| CALL FUNCTION 'KBPP_EXTERN_UPDATE_CO' + 720| EXPORTING + 721| I_BUDGET_ACTIVITY = 'KBUD' " Original budget + 722| I_DELTA_AMOUNTS = '' " 업데이트 개념 + 723| I_ROLLUP_DATA = '' " Project에서만 사용. + 724| I_APPLICATION = 'O' " ORDER 에 대해 수행. + 725| I_COMMIT_DATA = 'X' + 726| IMPORTING + 727| E_ERRORS_FOUND = LV_OAX + 728| TABLES + 729| IT_BPAK = LT_BPAK[] + 730| IT_RETURN = LT_BAPIRET2[] + 731| EXCEPTIONS + 732| NO_UPDATE = 1 + 733| OTHERS = 2. + 734| + 735| READ TABLE LT_BPAK INDEX 1. + 736| + 737| LOOP AT LT_BAPIRET2. + 738| PERFORM BUILD_MESSAGE_BAPI USING LT_BAPIRET2 + 739| CHANGING GT_DATA-MESSAGE. + 740| PERFORM ADD_DATA_MESSAGE USING 'E' '' + 741| GT_DATA-MESSAGE. + 742| ENDLOOP. + 743| + 744| IF LV_OAX NE 'X' . + 745| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 746| EXPORTING + 747| WAIT = 'X'. + 748| GT_DATA-STATUS = GC_STATUS_GREEN. + 749| GT_DATA-SET_BG_RESULT = 'S'. + 750| GT_DATA-BELNR = LT_BPAK-BELNR. + 751| LV_MESSAGE = '예산 데이터를 저장했습니다.'(F16). + 752| GT_DATA-MESSAGE = LV_MESSAGE. + 753| PERFORM ADD_DATA_MESSAGE USING 'S' '' + 754| LV_MESSAGE. + 755| ELSE. + 756| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 757| GT_DATA-STATUS = GC_STATUS_RED. + 758| GT_DATA-SET_BG_RESULT = 'E'. + 759| ENDIF. + 760| + 761| MODIFY GT_DATA. +``` + +- **EN**: Calls KBPP_EXTERN_UPDATE_CO (original budget KBUD for orders) to update the budget, commits and stores the budget document number on success, or rolls back and marks the row as error. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): KBPP_EXTERN_UPDATE_CO, BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, ADD_DATA_MESSAGE, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: KBPP_EXTERN_UPDATE_CO, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BPAK, BAPIRET2 +- 업무 키워드: 예산 등록, 원예산 KBUD, 예산문서번호, 커밋, 롤백 +- English: Budget Update, Original Budget, Budget Document, BAPI Commit, Rollback +- 정의부(복사 시 함께 필요): [`LV_OAX`](#decl-zcoc0100f01-670-lv_oax), [`LT_BPAK`](#decl-zcoc0100f01-664-lt_bpak), [`LT_BAPIRET2`](#decl-zcoc0100f01-665-lt_bapiret2), [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LV_MESSAGE`](#decl-zcoc0100f01-671-lv_message), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L719-L761` · confidence 0.93 · `ZCOC0100#ZCOC0100F01#FORM#RUN_BAPI#C2` + +### FORM RUN_BDC — `ZCOC0100F01` L879-L955 (77줄) + +*예산 등록에 성공한 오더에 대해 KO02 BDC(CALL TRANSACTION)로 오더 내역(KTEXT)·자산클래스(ANLKL)·자본화일자(AKTIV) 마스터를 변경하고 결과를 GT_DATA에 기록한다.* + +> 이 unit 의 조각 1개가 67/77줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SET_BG_RESULT='S'인 오더마다 내역·자산클래스·자본화일자 중 하나라도 있으면 SAPMKAUF 0110/0600 화면(BUT5 투자 탭, SICH 저장)의 BDC 데이터를 구성해 CALL TRANSACTION 'KO02'로 오더 마스터를 변경하고, 메시지(GT_MESSTAB)를 행에 추가하며 성공 시 GREEN, 실패 시 RED 상태를 설정한다. + +```abap + 887| LOOP AT GT_DATA WHERE SET_BG_RESULT = 'S'. + 888| CLEAR : GT_BDCDATA, GT_BDCDATA[]. + 889| CLEAR : GT_MESSTAB, GT_MESSTAB[]. + 890| + 891| CHECK GT_DATA-KTEXT IS NOT INITIAL OR + 892| GT_DATA-AKTIV IS NOT INITIAL OR + 893| GT_DATA-ANLKL IS NOT INITIAL. + 894| + 895| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 896| 'X' 'SAPMKAUF' '0110', + 897| ' ' 'BDC_OKCODE' '/00', + 898| ' ' 'COAS-AUFNR' GT_DATA-AUFNR, + 899| + 900| 'X' 'SAPMKAUF' '0600', + 901| ' ' 'BDC_OKCODE' '=BUT5', + 902| 'X' 'SAPMKAUF' '0600', + 903| ' ' 'BDC_OKCODE' '/00'. + 904| + 905| IF GT_DATA-KTEXT IS NOT INITIAL. + 906| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 907| ' ' 'COAS-KTEXT' GT_DATA-KTEXT. + 908| ENDIF. + 909| + 910| IF GT_DATA-ANLKL IS NOT INITIAL. + 911| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 912| ' ' 'ANIA-ANLKL' GT_DATA-ANLKL. + 913| ENDIF. + 914| + 915| IF GT_DATA-AKTIV NE SPACE. + 916| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 917| ' ' 'ANIA-AKTIV' GT_DATA-AKTIV. + 918| ENDIF. + 919| + 920| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 921| 'X' 'SAPMKAUF' '0600', + 922| ' ' 'BDC_OKCODE' '=SICH'. + 923| + 924| CALL TRANSACTION 'KO02' + 925| USING GT_BDCDATA[] + 926| OPTIONS FROM GS_BDC_OPTION + 927| MESSAGES INTO GT_MESSTAB[]. + 928| + 929| LV_BDC_SUBRC = SY-SUBRC. + 930| + 931| LOOP AT GT_MESSTAB. + 932| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 933| CHANGING GT_DATA-MESSAGE. + 934| PERFORM ADD_DATA_MESSAGE USING GT_MESSTAB-MSGTYP '' + 935| GT_DATA-MESSAGE. + 936| ENDLOOP. + 937| + 938| IF LV_BDC_SUBRC EQ 0. + 939| GT_DATA-STATUS = GC_STATUS_GREEN. + 940| GT_DATA-SET_BG_RESULT = 'S'. + 941| + 942| LV_MESSAGE = '예산 데이터 및 오더를 변경했습니다.'(F22). + 943| GT_DATA-MESSAGE = LV_MESSAGE. + 944| PERFORM ADD_DATA_MESSAGE USING 'S' '' + 945| LV_MESSAGE. + 946| ELSE. + 947| GT_DATA-STATUS = GC_STATUS_RED. + 948| GT_DATA-SET_BG_RESULT = 'E'. + 949| ENDIF. + 950| + 951| MODIFY GT_DATA. + 952| CLEAR : GT_DATA. + 953| ENDLOOP. +``` + +- **EN**: For each order with successful budget posting, builds BDC screens for SAPMKAUF (order number, investment tab, description / asset class / capitalization date, save) and runs CALL TRANSACTION KO02, collecting messages and setting row status. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, KO02, BUILD_MESSAGE, ADD_DATA_MESSAGE, ADD_DATA_MESSAGE +- SAP 객체: KO02, SAPMKAUF, COAS, ANIA, BDCMSGCOLL +- 업무 키워드: 오더 마스터 변경, BDC, 자산클래스, 자본화일자, 오더 내역, 투자오더 +- English: Internal Order Change, Batch Input, Asset Class, Capitalization Date, Investment Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0100top-55-gt_data), [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`LV_BDC_SUBRC`](#decl-zcoc0100f01-880-lv_bdc_subrc), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`LV_MESSAGE`](#decl-zcoc0100f01-881-lv_message), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0100/ZCOC0100F01#L887-L953` · confidence 0.93 · `ZCOC0100#ZCOC0100F01#FORM#RUN_BDC#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0100I01` L6-L27 (22줄) + +*화면 0100의 사용자 명령에 따라 종료 처리 또는 예산 등록·오더 변경 실행(EXECUTE_BAPI)으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 화면을 떠나며, &BDC 명령 시 EXECUTE_BAPI를 호출해 투자오더 예산 등록(KBPP_EXTERN_UPDATE_CO)과 KO02 BDC 마스터 변경을 실행한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BAPI. + 24| WHEN OTHERS. + 25| ENDCASE. +``` + +- **EN**: Dispatches screen 0100 commands: frees ALV containers and leaves on BACK/CANC/EXIT; on &BDC runs EXECUTE_BAPI for order budget update and KO02 master change. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: KO02 +- 업무 키워드: 사용자 명령, 예산 등록 실행, 화면 종료 +- English: User Command, PAI, Budget Posting +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0100top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0100c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0100/ZCOC0100I01#L9-L25` · confidence 0.85 · `ZCOC0100#ZCOC0100I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (329건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0100C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0100c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0100TOP` (32건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0100top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0100top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0100top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0100top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0100top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0100top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0100top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0100top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0100top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0100top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0100top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0100top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0100top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0100top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc0100top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc0100top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L33-L33 {#decl-zcoc0100top-33-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0100'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcoc0100top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L44-L50 {#decl-zcoc0100top-44-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + AUFNR(12) TYPE C, + KTEXT(40) TYPE C, " 내역 - 수정 + ANLKL(8) TYPE C, " 자산 클래스 - 수정 + AKTIV(10) TYPE C, " 계획된 자본화일자 - 수정 + WERT(20) TYPE C, " 예산 금액 - 수정 +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L53-L53 {#decl-zcoc0100top-53-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L55-L84 {#decl-zcoc0100top-55-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + AUART LIKE AUFK-AUART, + KTEXT LIKE AUFK-KTEXT, + WERT LIKE BPAK-WERT, + WERT_VIEW LIKE BPAK-WERT, + TWAER LIKE COSP-TWAER, + ANLN1 LIKE ANLI-ANLN1, + OBJNR LIKE ANLI-OBJNR, + GJAHR LIKE BPEJ-GJAHR, + KOKRS LIKE TKA01-KOKRS, + BELNR LIKE BPEJ-BELNR, + WLGES LIKE BPEG-WLGES, + WLJHR LIKE BPEJ-WLJHR, + WLJHR_VIEW LIKE BPEJ-WLJHR, + EXP_JHR_WLGES LIKE BPEG-WLGES, + UPDATE_WLGES LIKE BPEG-WLGES, + + ANLKL LIKE ANIA-ANLKL, + AKTIV LIKE ANIA-AKTIV, + + SET_BG_RESULT TYPE C, " S: 성공, E : 실패. + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L86-L86 {#decl-zcoc0100top-86-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GS_MSG_T_S — data · L87-L87 {#decl-zcoc0100top-87-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_LOG_POP — data · L89-L94 {#decl-zcoc0100top-89-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + AUFNR LIKE AUFK-AUFNR, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L97-L97 {#decl-zcoc0100top-97-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_AUFK — data · L99-L103 {#decl-zcoc0100top-99-gt_aufk} + +```abap +DATA : BEGIN OF GT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + OBJNR LIKE ONROR-OBJNR, + KTEXT LIKE AUFK-KTEXT, +END OF GT_AUFK. +``` + +#### P_BUKRS — parameter · L113-L114 {#decl-zcoc0100top-113-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L122-L123 {#decl-zcoc0100top-122-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_TWAER — parameter · L128-L128 {#decl-zcoc0100top-128-p_twaer} + +```abap +PARAMETER : P_TWAER LIKE COSP-TWAER DEFAULT 'KRW' MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L129-L129 {#decl-zcoc0100top-129-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_FNAME — parameter · L130-L131 {#decl-zcoc0100top-130-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0100_P_FNAME. +``` + +#### P_DSMOD — parameter · L142-L142 {#decl-zcoc0100top-142-p_dsmod} + +```abap +PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0100F01` (41건) + +#### L_UCOMM — data · unit 로컬 · L41-L41 {#decl-zcoc0100f01-41-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_DATA — data · unit 로컬 · L168-L168 {#decl-zcoc0100f01-168-lt_data} + +```abap + DATA : LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L169-L169 {#decl-zcoc0100f01-169-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L247-L247 {#decl-zcoc0100f01-247-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LT_FCAT — data · unit 로컬 · L315-L315 {#decl-zcoc0100f01-315-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L316-L316 {#decl-zcoc0100f01-316-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L317-L317 {#decl-zcoc0100f01-317-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L318-L318 {#decl-zcoc0100f01-318-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L319-L319 {#decl-zcoc0100f01-319-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L320-L320 {#decl-zcoc0100f01-320--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L321-L321 {#decl-zcoc0100f01-321--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L322-L322 {#decl-zcoc0100f01-322--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L324-L327 {#decl-zcoc0100f01-324-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L413-L413 {#decl-zcoc0100f01-413-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L414-L414 {#decl-zcoc0100f01-414-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L415-L415 {#decl-zcoc0100f01-415-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L477-L477 {#decl-zcoc0100f01-477-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L478-L478 {#decl-zcoc0100f01-478--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L479-L479 {#decl-zcoc0100f01-479--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L480-L480 {#decl-zcoc0100f01-480-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L504-L504 {#decl-zcoc0100f01-504-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L505-L505 {#decl-zcoc0100f01-505--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L506-L506 {#decl-zcoc0100f01-506--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L507-L507 {#decl-zcoc0100f01-507-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L570-L570 {#decl-zcoc0100f01-570-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L571-L571 {#decl-zcoc0100f01-571--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L572-L572 {#decl-zcoc0100f01-572--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L573-L573 {#decl-zcoc0100f01-573-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### L_ANSWER — data · unit 로컬 · L624-L624 {#decl-zcoc0100f01-624-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LT_BPAK — data · unit 로컬 · L664-L664 {#decl-zcoc0100f01-664-lt_bpak} + +```abap + DATA : LT_BPAK LIKE BPAK OCCURS 0 WITH HEADER LINE. +``` + +#### LT_BAPIRET2 — data · unit 로컬 · L665-L665 {#decl-zcoc0100f01-665-lt_bapiret2} + +```abap + DATA : LT_BAPIRET2 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_GES_BPAK — data · unit 로컬 · L667-L667 {#decl-zcoc0100f01-667-ls_ges_bpak} + +```abap + DATA : LS_GES_BPAK LIKE BPAK. +``` + +#### LS_JHR_BPAK — data · unit 로컬 · L668-L668 {#decl-zcoc0100f01-668-ls_jhr_bpak} + +```abap + DATA : LS_JHR_BPAK LIKE BPAK. +``` + +#### LV_OAX — data · unit 로컬 · L670-L670 {#decl-zcoc0100f01-670-lv_oax} + +```abap + DATA : LV_OAX TYPE OAX. +``` + +#### LV_MESSAGE — data · unit 로컬 · L671-L671 {#decl-zcoc0100f01-671-lv_message} + +```abap + DATA : LV_MESSAGE LIKE BDCMSGCOLL-MSGV1. +``` + +#### LV_MESSAGE — data · unit 로컬 · L777-L777 {#decl-zcoc0100f01-777-lv_message} + +```abap + DATA : LV_MESSAGE LIKE BDCMSGCOLL-MSGV1. +``` + +#### LT_BPEG — data · unit 로컬 · L779-L782 {#decl-zcoc0100f01-779-lt_bpeg} + +```abap + DATA : BEGIN OF LT_BPEG OCCURS 0, + OBJNR LIKE BPEG-OBJNR, + WLGES LIKE BPEG-WLGES, + END OF LT_BPEG. +``` + +#### LT_BPEJ — data · unit 로컬 · L784-L787 {#decl-zcoc0100f01-784-lt_bpej} + +```abap + DATA : BEGIN OF LT_BPEJ OCCURS 0, + OBJNR LIKE BPEJ-OBJNR, + WLJHR LIKE BPEJ-WLJHR, + END OF LT_BPEJ. +``` + +#### LR_OBJNR — ranges · unit 로컬 · L789-L789 {#decl-zcoc0100f01-789-lr_objnr} + +```abap + RANGES : LR_OBJNR FOR BPEG-OBJNR. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L880-L880 {#decl-zcoc0100f01-880-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### LV_MESSAGE — data · unit 로컬 · L881-L881 {#decl-zcoc0100f01-881-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0100 L25-31 | 0 | 프로그램 초기화 시 회사코드·관리회계영역 텍스트 설정(SET_DYNP)과 엑셀 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0100 L32-34 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능 버튼(엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0100 L35-40 | 0 | 선택화면 PBO에서 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0100 L41-46 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC0100 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0100 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0100C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0100C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0100C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0100C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0100C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0100C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0100C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0100C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0100C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0100C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0100C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0100C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0100C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0100C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0100C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0100C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC0100C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC0100C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0100C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0100C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0100C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC0100C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0100C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0100C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0100C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0100F01 L6-17 | 0 | 선택화면에서 회사코드 변경 권한(GV_BUKRS_O)이 없으면 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC0100F01 L24-31 | 0 | 선택화면 초기 표시 시 SET_COMPANY_BASE·SET_KOKRS_BASE로 회사코드와 관리회계영역 기본 정보를 세팅하고 명칭을 화면에 표시한다. | +| CONTROL_FCXX | FORM | ZCOC0100F01 L40-52 | 1 | 선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 연도별 투자오더 예산 업로드 엑셀 양식(GC_SMW0)을 연다. | +| CHECK_INPUT | FORM | ZCOC0100F01 L61-68 | 0 | 업로드 파일 경로(P_FNAME) 입력 여부를 검사해 미입력 시 오류 메시지로 처리를 중단한다. | +| INITIALIZE_DATA | FORM | ZCOC0100F01 L74-103 | 1 | 회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0100F01 L109-112 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA를 호출하는 데이터 처리 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC0100F01 L121-124 | 0 | 선택화면에 '엑셀 양식 다운로드' 버튼(FC01)을 SET_BTN_1000으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC0100F01 L133-156 | 1 | 엑셀 원본 GT_UPLOAD를 GT_DATA로 옮기며 예산금액을 1000원 단위에서 실제 금액으로 환산(CONVERT_1000_U)하고 통화·회계연도·관리회계영역을 세팅하며 숫자 변환 오류를 처리한다. | +| VALIDATION_CHECK | FORM | ZCOC0100F01 L166-239 | 2 | 업로드 오더에 대해 AUFK/ONROR 존재 여부, 음수 금액, 엑셀 내 오더번호 중복을 검증하고 오더의 오브젝트번호(OBJNR)를 매핑한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0100F01 L246-264 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC0100F01 L273-289 | 1 | 엑셀 업로드 → 형식 정리 → GT_DATA 이전·통화 변환 → 오더 검증 → 기존 예산(BPEG/BPEJ) 매핑의 데이터 읽기 흐름을 순서대로 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0100F01 L297-305 | 0 | 오류 필드를 ALV 셀 색상(COL 6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 유틸리티 FORM이다. | +| SET_BDC_FORM | FORM | ZCOC0100F01 L314-404 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| SHOW_ERROR_LOG | FORM | ZCOC0100F01 L412-470 | 1 | 선택한 ALV 행(P_ROW)의 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 표시한다. | +| CONVERT_1000_UP | FORM | ZCOC0100F01 L476-497 | 1 | ALV 필드카탈로그의 CURR 타입 필드(월별 금액)를 대상으로 GT_DATA 전 라인의 값을 천원 단위에서 원 단위로 환산(×1000)하는 FORM이다. | +| CONVERT_1000_DOWN | FORM | ZCOC0100F01 L503-525 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONVERT_1000_U로 환산(천원 단위 처리)하는 FORM으로, CONVERT_1000_UP과 동일한 코드다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0100F01 L534-560 | 0 | 상태(S/E/W)에 따른 아이콘과 메시지를 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 유틸리티 FORM이다. | +| CONVERT_KRW_DATA | FORM | ZCOC0100F01 L569-589 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다. | +| EXECUTE_BAPI | FORM | ZCOC0100F01 L623-653 | 1 | 중복 실행을 막고 사용자 확인 후 RUN_BAPI(예산 등록)와 RUN_BDC(KO02 오더 마스터 변경)를 순서대로 수행한다. | +| RUN_BAPI | FORM | ZCOC0100F01 L662-767 | 2 | GT_DATA 각 오더에 대해 전체값(WLGES)·연도값(WLJHR) BPAK 레코드를 만들어 KBPP_EXTERN_UPDATE_CO(KBUD, 버전 000)로 투자오더 예산을 갱신하고 COMMIT/ROLLBACK 결과와 예산문서번호를 기록한다. | +| MAPPING_BPEJ_BPEG | FORM | ZCOC0100F01 L776-870 | 3 | 오더 오브젝트별 기존 원예산(KBUD)을 BPEG(전체값)·BPEJ(연도값)에서 집계해 GT_DATA에 매핑하고 갱신될 전체 예산(업로드금액 + 전체 - 해당연도)을 계산하며 기존 연도예산이 있으면 갱신 경고를 표시한다. | +| RUN_BDC | FORM | ZCOC0100F01 L879-955 | 1 | 예산 등록에 성공한 오더에 대해 KO02 BDC(CALL TRANSACTION)로 오더 내역(KTEXT)·자산클래스(ANLKL)·자본화일자(AKTIV) 마스터를 변경하고 결과를 GT_DATA에 기록한다. | +| BDC_OPTION | FORM | ZCOC0100F01 L963-971 | 0 | KO02 BDC 실행용 CTU 옵션(표시모드 PV_DSMOD, 업데이트 모드 'S', DEFSIZE)을 SET_BDC_OPTION으로 GS_BDC_OPTION에 설정한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0100I01 L6-27 | 1 | 화면 0100의 사용자 명령에 따라 종료 처리 또는 예산 등록·오더 변경 실행(EXECUTE_BAPI)으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0100O01 L6-15 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0100O01 L21-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0100O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0100O01 L127-147 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0100O01 L155-164 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0100O01 L172-194 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0100O01 L203-231 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0100O01 L240-260 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0100O01 L270-350 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0100O01 L358-385 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0110.md b/wiki/programs/ZCOC0110.md new file mode 100644 index 0000000..b2066ad --- /dev/null +++ b/wiki/programs/ZCOC0110.md @@ -0,0 +1,4902 @@ +--- +type: abap-program +title: "ZCOC0110 — 오더 생성 Upload - (매출 실적 취합 오더 등)" +description: "예산 설정이 필요 없는 CO 내부오더(Internal Order, 예: 매출 실적 취합 오더)를 엑셀 업로드로 일괄 생성하는 프로그램이다. 엑셀(오더유형·오더번호·내역·책임코스트센터·요청코스트센터)을 읽어 AUFK 기존재/중복, CSKS/CSKT 코스트센터, T003O 오더유형을 검증하고 책임코스트센터의 손익센터(CSKS-PRCTR)를 보완한 뒤, KO01 트랜잭션 BDC(SAPMKAUF)로 오더를 생성하고 성공 건을 ZCOT0030 에 이력으로 저장한다. 오더유형이 I/S 로 시작하는 투자오더(예산 필요)는 ZCOC0090 에서 처리하도록 오류 처리한다." +resource: "abap://ZCOC0110" +tags: ["내부오더생성", "오더마스터", "엑셀업로드", "매출실적취합오더", "코스트센터", "오더 생성 이력", "성공 건 저장", "로그 테이블", "DB 저장", "내부오더 생성", "BDC 실행", "오더유형", "책임코스트센터", "손익센터", "매출 실적 취합 오더", "BDC 결과 처리", "성공/실패 상태", "메시지 기록", "이력 저장", "중복 실행 방지"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:13+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "AUFK", "CSKS", "CSKT", "DD01L", "DD07T", "T001", "T003O", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0030"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KO01", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "e869dc938b1244d6aa36362ad126d8a261a22ed11dfc976b7ebe7652877459ba" +x-unit-count: 144 +x-chunk-count: 69 +x-declaration-count: 209 +--- + +## 업무 목적 + +예산 설정이 필요 없는 CO 내부오더(Internal Order, 예: 매출 실적 취합 오더)를 엑셀 업로드로 일괄 생성하는 프로그램이다. 엑셀(오더유형·오더번호·내역·책임코스트센터·요청코스트센터)을 읽어 AUFK 기존재/중복, CSKS/CSKT 코스트센터, T003O 오더유형을 검증하고 책임코스트센터의 손익센터(CSKS-PRCTR)를 보완한 뒤, KO01 트랜잭션 BDC(SAPMKAUF)로 오더를 생성하고 성공 건을 ZCOT0030 에 이력으로 저장한다. 오더유형이 I/S 로 시작하는 투자오더(예산 필요)는 ZCOC0090 에서 처리하도록 오류 처리한다. + +## 주 흐름 + +1. 회사코드·관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 ZCOC0110)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 경로 입력 여부를 확인하고 ALV 필드카탈로그·BDC 표시모드·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 엑셀 파일(2행부터)을 GT_UPLOAD 로 읽어들인다 (PROCESS_DATA, READ_DATA, UPLOAD_EXCEL_DATA) +4. ALPHA 변환·대문자 변환 후 GT_DATA 로 이관하며 회사코드·기능영역 3000·관리회계영역과 책임코스트센터의 손익센터(CSKS-PRCTR)를 채운다 (SET_BDC_FORM, TRANSFER_GT_DATA) +5. 오더번호 기존재(AUFK)·엑셀 내 중복, 책임/요청 코스트센터(CSKS/CSKT), 오더유형(T003O) 존재 여부와 오더유형이 I/S(투자오더)가 아닌지 검증한다 (VALIDATION_CHECK) +6. 검증 결과를 화면 100 ALV 로 표시하고 행 선택 시 메시지 상세 팝업을 보여준다 (CALL SCREEN 100, SHOW_ERROR_LOG) +7. '실행'(&BDC) 시 확인 팝업 후 각 행에 대해 KO01 BDC 로 내부오더를 생성하고 성공/실패 상태와 메시지를 기록한다 (EXECUTE_BDC, BDC_OPTION, RUN_BDC) +8. 오더 생성에 성공한 행을 ZCOT0030 에 이력으로 저장한다 (INSERT_LOG) + +## 핵심 내부테이블 + +- `GT_UPLOAD` — 엑셀 원본 행 (AUART, AUFNR, KTEXT, KOSTV, AKSTL) (채움: UPLOAD_EXCEL_DATA, UPLOAD_DATA / 소비: SET_BDC_FORM, TRANSFER_GT_DATA) +- `GT_DATA` — 메인 ALV 데이터: 오더유형·번호·내역·코스트센터·손익센터·상태·메시지 (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, RUN_BDC / 소비: DISPLAY_ALV_LIST, RUN_BDC, SHOW_ERROR_LOG, INSERT_LOG) +- `GT_AUFK` — 이미 존재하는 오더번호 (AUFK) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_KOSTL` — 유효 코스트센터 (CSKS/CSKT) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_AUART` — 유효 오더유형 (T003O) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_BDCDATA` — KO01 배치 인풋 화면 데이터 (채움: RUN_BDC, DYNPRO / 소비: RUN_BDC) + +## 테이블 / 외부 호출 + +- read: AENR, AUFK, CSKS, CSKT, DD01L, DD07T, T001, T003O, TKA01, TKT09 +- write: GT_DATA, ZCOT0030 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KO01, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (69건 / unit 59개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc0110top-121-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0110top-130-p_kokrs) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0110F01` L38-L50 (13줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0110 오더 생성 엑셀 양식을 연다.* + +> 이 unit 의 조각 1개가 8/13줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택화면 사용자 명령이 FC01 이면 Z_CO_OPEN_SMW0 를 호출해 SMW0 웹 리포지토리 문서(GC_SMW0)의 오더 일괄 생성 엑셀 양식을 다운로드/오픈한다. + +```abap + 41| L_UCOMM = SSCRFIELDS-UCOMM. + 42| CASE L_UCOMM. + 43| WHEN 'FC01'. + 44| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 45| EXPORTING + 46| P_DOCNAM = GC_SMW0 + 47| P_TITLE = '오더 일괄 생성(매출 실적 취합 오더 등) Upload'(F01). + 48| ENDCASE. +``` + +- **EN**: On function key FC01 calls Z_CO_OPEN_SMW0 to open the Excel upload template stored in SMW0 web repository. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키, SMW0 문서 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0110f01-39-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0110top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0110top-30-gc_smw0) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L41-L48` · confidence 0.85 · `ZCOC0110#ZCOC0110F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0110` L46-L53 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 47| PERFORM CHECK_INPUT. + 48| PERFORM INITIALIZE_DATA. + 49| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0110/ZCOC0110#L47-L49` · confidence 0.8 · `ZCOC0110#ZCOC0110#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0110F01` L59-L66 (8줄) + +*업로드 파일 경로(P_FNAME)가 입력되지 않았으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일명 P_FNAME이 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 오류(S000 E)를 표시하고 LEAVE LIST-PROCESSING 한다. + +```abap + 61| IF P_FNAME IS INITIAL. + 62| MESSAGE S000 DISPLAY LIKE 'E' WITH + 63| '업로드 파일을 선택하여 주시기 바랍니다'(F02). + 64| LEAVE LIST-PROCESSING. + 65| ENDIF. +``` + +- **EN**: Stop with an error message when no upload file path P_FNAME was entered. +- 업무 키워드: 필수 입력, 업로드 파일, 입력 검증 +- English: Input Validation, Upload File +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0110top-136-p_fname) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L61-L65` · confidence 0.85 · `ZCOC0110#ZCOC0110F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC0110F01` L72-L101 (30줄) + +*회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다.* + +> 이 unit 의 조각 1개가 5/30줄(17%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_COMPANY_BASE와 SET_KOKRS_BASE로 회사코드(P_BUKRS)·관리회계영역(P_KOKRS)의 기준정보와 명칭을 설정해 화면 텍스트(P_BUTXT, P_BEZEI)에 표시한다. + +```abap + 79| PERFORM SET_COMPANY_BASE USING P_BUKRS. + 80| P_BUTXT = GV_BUKRS_TXT. + 81| + 82| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 83| P_BEZEI = GV_KOKRS_BEZEI. +``` + +- **EN**: Set company code and controlling area base data via SET_COMPANY_BASE / SET_KOKRS_BASE and show their descriptions on the selection screen. +- 호출(파서): SET_COMPANY_BASE, SET_KOKRS_BASE +- SAP 객체: SET_COMPANY_BASE, SET_KOKRS_BASE +- 업무 키워드: 회사코드, 관리회계영역, 기준정보 설정 +- English: Company Code, Controlling Area +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zcoc0110top-121-p_bukrs), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`P_KOKRS`](#decl-zcoc0110top-130-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei) +- 선언을 못 찾은 이름: P_BUTXT, P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L79-L83` · confidence 0.75 · `ZCOC0110#ZCOC0110F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC0110F01` L330-L348 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 333| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 334| + 335| IF L_EXISTS = ABAP_FALSE. + 336| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 337| LEAVE LIST-PROCESSING. + 338| EXIT. + 339| ENDIF. + 340| + 341| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 342| 'GS_UPLOAD' + 343| P_NAME + 344| 1 "S_COL-LOW + 345| 2 "S_ROW-LOW + 346| 256 "S_COL-HIGH + 347| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc0110f01-331-l_exists) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L333-L347` · confidence 0.85 · `ZCOC0110#ZCOC0110F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0110top-136-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM SET_BDC_FORM — `ZCOC0110F01` L396-L486 (91줄) + +*대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다.* + +> 이 unit 의 조각 2개가 70/91줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 구조명(GT_DATA)으로 GET_FCAT_LIKE_ITAB을 통해 필드카탈로그를 얻고, 각 필드 도메인의 소문자 허용 여부(LOWERCASE)를 DD01L에서 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 415| L_TABNAME = P_STRUCT_NM. + 416| + 417| PERFORM GET_FCAT_LIKE_ITAB TABLES LT_FCAT + 418| USING L_TABNAME. + 419| + 420| SELECT DOMNAME LOWERCASE + 421| INTO TABLE LT_LOWERCASE + 422| FROM DD01L + 423| FOR ALL ENTRIES IN LT_FCAT + 424| WHERE DOMNAME = LT_FCAT-DOMNAME + 425| AND AS4LOCAL = 'A'. + 426| + 427| SORT LT_LOWERCASE. +``` + +- **EN**: Obtain the field catalog for the target structure and read the lowercase flag of each field domain from DD01L to decide whether uppercase conversion is allowed. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: DD01L, GET_FCAT_LIKE_ITAB, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 취득, 도메인 소문자 허용, 업로드 필드 속성 +- English: Field Catalog, DD01L, Domain, Lowercase +- 정의부(복사 시 함께 필요): [`L_TABNAME`](#decl-zcoc0110f01-398-l_tabname), [`LT_FCAT`](#decl-zcoc0110f01-397-lt_fcat), [`LT_LOWERCASE`](#decl-zcoc0110f01-406-lt_lowercase) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L415-L427` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#SET_BDC_FORM#C1` + +#### [calculation] 필드 데이터타입에 따라 숫자(INT/NUMC/QUAN/DEC/CURR)는 콤마 제거(BDC_CURR), 날짜(DATS)는 구분자 제거(BDC_DATE), 1자리 체크박스는 대문자(BDC_CHECKBOX), 변환루틴 있는 필드는 선행 0 채움(ZERO_I)을 GT_UPLOAD 전 행에 적용하고 소문자 미허용 도메인은 대문자로 바꾼다. + +```abap + 429| LOOP AT LT_FCAT ASSIGNING . + 430| CASE -DATATYPE. + 431| " 숫자 타입 + 432| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 433| 'DEC' OR 'CURR'. "숫자타입은 ',''을 삭제 + 434| L_TYPE = 'NUMB'. + 435| " 날짜 + 436| WHEN 'DATS'. " 날짜타입은 '/', '.', '-' 제거 + 437| L_TYPE = 'DATS'. + 438| WHEN 'CHAR'. " 체크 박스는 대문자로 변경 + 439| "CHECK BOX + 440| IF -VALEXI = 'X' AND -INTLEN = '000001'. + 441| L_TYPE = 'CHCK'. + 442| ENDIF. + 443| WHEN OTHERS. + 444| ENDCASE. + 445| + 446| IF -CONVEXIT IS NOT INITIAL. + 447| L_CONV_ALPHA = 'X'. + 448| ENDIF. + 449| + 450| IF L_TYPE IS INITIAL AND L_CONV_ALPHA IS INITIAL. + 451| CONTINUE. + 452| ENDIF. + 453| + 454| LOOP AT GT_UPLOAD ASSIGNING . + 455| CONCATENATE '-' -FIELDNAME + 456| INTO L_FSNAME. + 457| ASSIGN (L_FSNAME) TO . + 458| + 459| IF SY-SUBRC EQ 0. + 460| CASE L_TYPE. + 461| WHEN 'NUMB'. + 462| PERFORM BDC_CURR USING . + 463| WHEN 'DATS'. + 464| PERFORM BDC_DATE USING . + 465| WHEN 'CHCK'. + 466| PERFORM BDC_CHECKBOX USING . + 467| WHEN OTHERS. + 468| ENDCASE. + 469| + 470| IF L_CONV_ALPHA = 'X'. + 471| PERFORM ZERO_I USING . + 472| ENDIF. + 473| + 474| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = -DOMNAME + 475| BINARY SEARCH. + 476| + 477| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 478| TRANSLATE TO UPPER CASE. + 479| ENDIF. + 480| ENDIF. + 481| ENDLOOP. + 482| + 483| CLEAR : L_TYPE. + 484| CLEAR : L_CONV_ALPHA. + 485| ENDLOOP. +``` + +- **EN**: Per field type, clean every GT_UPLOAD row: strip commas from numeric fields, separators from dates, uppercase checkboxes, apply ALPHA conversion for fields with conversion exits, and uppercase values whose domain does not allow lowercase. +- 호출(파서): BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I +- SAP 객체: GT_UPLOAD, BDC_CURR, BDC_DATE, BDC_CHECKBOX, ZERO_I, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 업로드 데이터 정제, 숫자 콤마 제거, 날짜 형식 정리, 선행 0 채움, 대문자 변환 +- English: Data Cleansing, Conversion Exit, ALPHA, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zcoc0110f01-397-lt_fcat), [``](#decl-zcoc0110f01-404--fs_fcat-), [`L_TYPE`](#decl-zcoc0110f01-400-l_type), [`L_CONV_ALPHA`](#decl-zcoc0110f01-401-l_conv_alpha), [`GT_UPLOAD`](#decl-zcoc0110top-43-gt_upload), [``](#decl-zcoc0110f01-402--fs_upload-), [`L_FSNAME`](#decl-zcoc0110f01-399-l_fsname), [``](#decl-zcoc0110f01-403--fs-), [`LT_LOWERCASE`](#decl-zcoc0110f01-406-lt_lowercase) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L429-L485` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#SET_BDC_FORM#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0110F01` L131-L157 (27줄) + +*엑셀 원본 GT_UPLOAD 를 GT_DATA 로 이관하며 회사코드·기능영역·관리회계영역을 채우고 책임코스트센터의 손익센터(CSKS-PRCTR)를 보완한다.* + +> 이 unit 의 조각 1개가 24/27줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 행마다 회사코드 P_BUKRS·기능영역 GC_FUNC_AREA·관리회계영역 P_KOKRS 를 설정하고 책임코스트센터(KOSTV)의 현재 유효한 손익센터를 CSKS 에서 SELECT SINGLE 로 읽어 GT_DATA 에 추가하며, 숫자 변환 예외 시 오류 메시지로 중단한다. + +```abap + 132| TRY. + 133| LOOP AT GT_UPLOAD. + 134| MOVE-CORRESPONDING GT_UPLOAD TO GT_DATA. + 135| GT_DATA-STATUS = GC_STATUS_INIT. + 136| GT_DATA-BUKRS = P_BUKRS. + 137| GT_DATA-FUNC_AREA = GC_FUNC_AREA. + 138| * GT_DATA-GJAHR = P_GJAHR. + 139| GT_DATA-KOKRS = P_KOKRS. + 140| + 141| SELECT SINGLE PRCTR FROM CSKS + 142| INTO GT_DATA-PRCTR + 143| WHERE KOKRS = P_KOKRS + 144| AND KOSTL = GT_DATA-KOSTV + 145| AND DATBI >= SY-DATUM + 146| AND DATAB <= SY-DATUM. + 147| + 148| APPEND GT_DATA. + 149| CLEAR : GT_DATA. + 150| ENDLOOP. + 151| CATCH : CX_SY_CONVERSION_NO_NUMBER. + 152| MESSAGE S000 WITH '숫자필드에 문자캐릭터가 업로드 되었습니다.'(F03) + 153| DISPLAY LIKE 'E'. + 154| LEAVE LIST-PROCESSING. + 155| ENDTRY. +``` + +- **EN**: Transfers each uploaded row to GT_DATA with company code, functional area and controlling area, reading the profit center of the responsible cost center from CSKS; aborts on numeric conversion errors. +- 테이블(파서): read [CSKS](/tables/CSKS.md) / write - +- SAP 객체: CSKS +- 업무 키워드: 손익센터 보완, 책임코스트센터, 데이터 이관, 기능영역, 숫자 변환 오류 +- English: Profit Center, Cost Center, Functional Area, Data Transfer +- 정의부(복사 시 함께 필요): [`GT_UPLOAD`](#decl-zcoc0110top-43-gt_upload), [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`P_BUKRS`](#decl-zcoc0110top-121-p_bukrs), [`GC_FUNC_AREA`](#decl-zcoc0110top-31-gc_func_area), [`P_KOKRS`](#decl-zcoc0110top-130-p_kokrs) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L132-L155` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM VALIDATION_CHECK — `ZCOC0110F01` L167-L323 (157줄) + +*업로드 오더 데이터를 AUFK 기존재, CSKS/CSKT 책임·요청 코스트센터, T003O 오더유형, 엑셀 내 중복, 투자오더(I/S) 제외 조건으로 검증하여 행별 오류 상태·메시지를 설정한다.* + +> 이 unit 의 조각 4개가 126/157줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드된 오더번호가 이미 AUFK 에 존재하는지 확인하기 위해 기존 오더번호를 GT_AUFK 로 조회한다. + +```abap + 183| SELECT AUFNR FROM AUFK + 184| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK + 185| FOR ALL ENTRIES IN GT_DATA + 186| WHERE AUFNR = GT_DATA-AUFNR. + 187| + 188| SORT GT_AUFK. +``` + +- **EN**: Selects existing order numbers from AUFK to detect orders that already exist. +- 테이블(파서): read [AUFK](/tables/AUFK.md) / write - +- SAP 객체: AUFK +- 업무 키워드: 오더 기존재 확인, 오더번호, 중복 생성 방지 +- English: Internal Order, Order Master, Existence Check +- 정의부(복사 시 함께 필요): [`GT_AUFK`](#decl-zcoc0110top-90-gt_aufk), [`GT_DATA`](#decl-zcoc0110top-55-gt_data) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L183-L188` · confidence 0.92 · `ZCOC0110#ZCOC0110F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] 관리회계영역 P_KOKRS 에서 현재 유효한 책임(KOSTV)·요청(AKSTL) 코스트센터를 CSKS/CSKT 조인으로 GT_KOSTL 에, 오더유형을 T003O 에서 GT_AUART 로 조회한다. + +```abap + 197| SELECT A~KOSTL B~KTEXT + 198| FROM CSKS AS A INNER JOIN CSKT AS B + 199| ON A~KOKRS = B~KOKRS + 200| AND A~KOSTL = B~KOSTL + 201| AND A~DATBI = B~DATBI + 202| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL + 203| FOR ALL ENTRIES IN GT_DATA + 204| WHERE A~KOKRS = P_KOKRS + 205| AND ( A~KOSTL = GT_DATA-KOSTV + 206| OR A~KOSTL = GT_DATA-AKSTL ) + 207| AND A~DATBI >= SY-DATUM + 208| AND A~DATAB <= SY-DATUM + 209| AND B~SPRAS = SY-LANGU. + 210| + 211| SORT GT_KOSTL. + 212| + 213| SELECT AUART + 214| FROM T003O + 215| INTO CORRESPONDING FIELDS OF TABLE GT_AUART + 216| FOR ALL ENTRIES IN GT_DATA + 217| WHERE AUART = GT_DATA-AUART. + 218| + 219| SORT GT_AUART. +``` + +- **EN**: Selects valid responsible and requesting cost centers from CSKS joined with CSKT and valid order types from T003O for validation. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [T003O](/tables/T003O.md) / write - +- SAP 객체: CSKS, CSKT, T003O +- 업무 키워드: 코스트센터 유효성, 책임코스트센터, 요청코스트센터, 오더유형 +- English: Cost Center, Order Type, Controlling Area, Validity Date +- 정의부(복사 시 함께 필요): [`GT_KOSTL`](#decl-zcoc0110top-99-gt_kostl), [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`P_KOKRS`](#decl-zcoc0110top-130-p_kokrs), [`GT_AUART`](#decl-zcoc0110top-109-gt_auart) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L197-L219` · confidence 0.92 · `ZCOC0110#ZCOC0110F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행마다 오더번호 기존재(AUFK), 책임코스트센터·요청코스트센터 존재(CSKS), 오더유형 존재(T003O)를 점검하여 오류 시 메시지·적색 상태·필드 강조를 설정한다. + +```abap + 223| LOOP AT GT_DATA. + 224| READ TABLE GT_AUFK WITH KEY AUFNR = GT_DATA-AUFNR + 225| BINARY SEARCH. + 226| + 227| IF SY-SUBRC EQ 0. + 228| GT_DATA-MESSAGE = '이미 존재하는 오더 번호입니다.'(F04). + 229| GT_DATA-STATUS = GC_STATUS_RED. + 230| GV_UPLOAD_ERROR = 'X'. + 231| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 232| PERFORM ADD_DATA_MESSAGE USING 'E' + 233| GT_DATA-AUFNR + 234| GT_DATA-MESSAGE. + 235| ENDIF. + 236| + 237| * READ TABLE GT_GSBER WITH KEY GSBER = GT_DATA-GSBER + 238| * BINARY SEARCH. + 239| * + 240| * IF SY-SUBRC NE 0. + 241| * GT_DATA-MESSAGE = '존재하지 않는 사업영역 입니다.'(F05). + 242| * GT_DATA-STATUS = GC_STATUS_RED. + 243| * GV_UPLOAD_ERROR = 'X'. + 244| * PERFORM SET_ERROR_FIELD_RED USING 'GSBER'. + 245| * PERFORM ADD_DATA_MESSAGE USING 'E' + 246| * GT_DATA-GSBER + 247| * GT_DATA-MESSAGE. + 248| * ENDIF. + 249| + 250| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-KOSTV + 251| BINARY SEARCH. + 252| + 253| IF SY-SUBRC NE 0. + 254| GT_DATA-MESSAGE = '존재하지 않는 책임코스트센터 입니다.'(F06). + 255| GT_DATA-STATUS = GC_STATUS_RED. + 256| GV_UPLOAD_ERROR = 'X'. + 257| PERFORM SET_ERROR_FIELD_RED USING 'KOSTV'. + 258| PERFORM ADD_DATA_MESSAGE USING 'E' + 259| GT_DATA-KOSTV + 260| GT_DATA-MESSAGE. + 261| ENDIF. + 262| + 263| READ TABLE GT_KOSTL WITH KEY KOSTL = GT_DATA-AKSTL + 264| BINARY SEARCH. + 265| + 266| IF SY-SUBRC NE 0. + 267| GT_DATA-MESSAGE = '존재하지 않는 요청코스트센터 입니다.'(F07). + 268| GT_DATA-STATUS = GC_STATUS_RED. + 269| GV_UPLOAD_ERROR = 'X'. + 270| PERFORM SET_ERROR_FIELD_RED USING 'AKSTL'. + 271| PERFORM ADD_DATA_MESSAGE USING 'E' + 272| GT_DATA-AKSTL + 273| GT_DATA-MESSAGE. + 274| ENDIF. + 275| + 276| READ TABLE GT_AUART WITH KEY AUART = GT_DATA-AUART + 277| BINARY SEARCH. + 278| + 279| IF SY-SUBRC NE 0. + 280| GT_DATA-MESSAGE = '존재하지 않는 오더 유형입니다.'(F09). + 281| GT_DATA-STATUS = GC_STATUS_RED. + 282| GV_UPLOAD_ERROR = 'X'. + 283| PERFORM SET_ERROR_FIELD_RED USING 'AUART'. + 284| PERFORM ADD_DATA_MESSAGE USING 'E' + 285| GT_DATA-AUART + 286| GT_DATA-MESSAGE. + 287| ENDIF. +``` + +- **EN**: Validates per row that the order does not already exist, that responsible and requesting cost centers exist and that the order type is valid, flagging errors. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: AUFK, CSKS, T003O +- 업무 키워드: 오더 존재 검증, 코스트센터 검증, 오더유형 검증, 오류 표시 +- English: Validation, Internal Order, Cost Center, Order Type +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`GT_AUFK`](#decl-zcoc0110top-90-gt_aufk), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0110top-22-gv_upload_error), [`GT_KOSTL`](#decl-zcoc0110top-99-gt_kostl), [`GT_AUART`](#decl-zcoc0110top-109-gt_auart) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L223-L287` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#VALIDATION_CHECK#C3` + +#### [validation] 엑셀 내 같은 오더번호가 2건 이상이면 중복 오류로 표시하고, 오더유형이 I(투자) 또는 S(자가소비)로 시작하면 예산 설정이 필요하므로 ZCOC0090 에서 처리하도록 오류 처리한 뒤 GT_DATA 를 갱신한다. + +```abap + 289| CLEAR : LV_CNT . + 290| LOOP AT LT_DATA TRANSPORTING NO FIELDS + 291| WHERE AUFNR = GT_DATA-AUFNR. + 292| + 293| ADD 1 TO LV_CNT . + 294| + 295| CHECK LV_CNT = 1. + 296| + 297| ENDLOOP. + 298| + 299| IF LV_CNT >= 2. + 300| GT_DATA-MESSAGE = '중복된 오더 번호가 입력되었습니다.'(F10). + 301| GT_DATA-STATUS = GC_STATUS_RED. + 302| GV_UPLOAD_ERROR = 'X'. + 303| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 304| PERFORM ADD_DATA_MESSAGE USING 'E' + 305| GT_DATA-AUFNR + 306| GT_DATA-MESSAGE. + 307| ENDIF. + 308| + 309| IF GT_DATA-AUART+0(1) = 'I' OR GT_DATA-AUART+0(1) = 'S' . + 310| GT_DATA-MESSAGE = '예산 설정이 필요한 오더입니다. ZCOC0090에서 입력하여 주십시오'(F20). + 311| GT_DATA-STATUS = GC_STATUS_RED. + 312| GV_UPLOAD_ERROR = 'X'. + 313| PERFORM SET_ERROR_FIELD_RED USING 'AUART'. + 314| PERFORM ADD_DATA_MESSAGE USING 'E' + 315| GT_DATA-AUART + 316| GT_DATA-MESSAGE. + 317| ENDIF. + 318| + 319| CLEAR : GT_AUFK, GT_GSBER, GT_KOSTL, GT_ANKT, GT_AUART. + 320| MODIFY GT_DATA. CLEAR : GT_DATA. +``` + +- **EN**: Detects duplicate order numbers within the upload and rejects investment-type orders (I/S) that require budget, directing them to ZCOC0090. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOC0090 +- 업무 키워드: 중복 오더번호, 투자오더 제외, 예산 필요 오더, 오더유형 +- English: Duplicate Check, Investment Order, Order Type, Budget +- 정의부(복사 시 함께 필요): [`LV_CNT`](#decl-zcoc0110f01-170-lv_cnt), [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`LT_DATA`](#decl-zcoc0110f01-169-lt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0110top-22-gv_upload_error), [`GT_AUFK`](#decl-zcoc0110top-90-gt_aufk), [`GT_GSBER`](#decl-zcoc0110top-94-gt_gsber), [`GT_KOSTL`](#decl-zcoc0110top-99-gt_kostl), [`GT_ANKT`](#decl-zcoc0110top-104-gt_ankt), [`GT_AUART`](#decl-zcoc0110top-109-gt_auart) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L289-L320` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#VALIDATION_CHECK#C4` + +### FORM ADD_DATA_MESSAGE — `ZCOC0110F01` L690-L714 (25줄) + +*상태(S/E)에 따른 신호등 아이콘과 '값 : 메시지' 텍스트로 메시지 항목을 만들어 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 16/25줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] P_VALUE가 있으면 '값 : 메시지' 형태로 결합하고 상태 S→초록, E→빨강 아이콘을 매핑해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT한다. + +```abap + 697| IF P_VALUE IS NOT INITIAL. + 698| CONCATENATE P_VALUE ` : ` P_MESSAGE + 699| INTO LV_MESSAGE. + 700| ELSE. + 701| LV_MESSAGE = P_MESSAGE. + 702| ENDIF. + 703| + 704| IF P_STATUS = 'S'. + 705| LV_STATUS = GC_STATUS_GREEN. + 706| ELSEIF P_STATUS = 'E'. + 707| LV_STATUS = GC_STATUS_RED. + 708| ENDIF. + 709| GS_MSG_T_S-STATUS = LV_STATUS. + 710| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 711| + 712| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Compose the message text (optionally prefixed by the field value), map status S/E to green/red icons and insert the entry into GT_DATA-MSG_LIST. +- 업무 키워드: 메시지 누적, 상태 아이콘, 검증 결과 +- English: Message List, Status Icon +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc0110f01-692-lv_message), [`LV_STATUS`](#decl-zcoc0110f01-693-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GS_MSG_T_S`](#decl-zcoc0110top-79-gs_msg_t_s), [`GT_DATA`](#decl-zcoc0110top-55-gt_data) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L697-L712` · confidence 0.8 · `ZCOC0110#ZCOC0110F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC0110` L54-L65 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 55| IF SY-BATCH NE 'X'. + 56| IF GT_DATA[] IS NOT INITIAL. + 57| CALL SCREEN 100. + 58| ELSE. + 59| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 60| ENDIF. + 61| ELSE. + 62| IF GT_DATA[] IS NOT INITIAL. + 63| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 64| ENDIF. + 65| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0110top-55-gt_data) +- 위치: `abap://ZCOC0110/ZCOC0110#L55-L65` · confidence 0.85 · `ZCOC0110#ZCOC0110#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0110/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0110/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0110/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0110/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0110/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0110#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0110top-130-p_kokrs) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0110#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0110/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0110#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_ERROR_LOG — `ZCOC0110F01` L623-L681 (59줄) + +*ALV에서 선택한 행의 처리 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 ALV(W_POPUP_GRID)로 보여주는 FORM이다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 MSG_LIST를 오더번호·상태·메시지 구조 LT_POPUP으로 옮기고 팝업 레이아웃을 설정한 뒤 W_POPUP_GRID 객체를 생성해 SHOW_DATA로 오류/처리 로그 팝업을 표시한다. + +```abap + 658| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 659| LT_POPUP-AUFNR = GT_DATA-AUFNR. + 660| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 661| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 662| APPEND LT_POPUP. + 663| CLEAR : LT_POPUP. + 664| ENDLOOP. + 665| + 666| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 667| + 668| CREATE OBJECT W_POPUP_GRID + 669| EXPORTING + 670| I_T_FIELDCATALOG = POPUP_FIELDCAT + 671| I_S_LAYOUT = LS_LAYO + 672| I_CAPTION = '' + 673| I_LEFT = 100 + 674| I_TOP = 150 + 675| I_HEIGHT = 400 + 676| I_WIDTH = 900. + 677| + 678| CALL METHOD W_POPUP_GRID->SHOW_DATA + 679| EXPORTING + 680| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Copy the row's message list into LT_POPUP (order number, status, message), set the popup layout and display it in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 처리 메시지, 오더번호 +- English: Popup ALV, Message Log, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`GS_MSG_T_S`](#decl-zcoc0110top-79-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc0110top-81-gt_log_pop), [`LT_POPUP`](#decl-zcoc0110f01-626-lt_popup), [`LS_LAYO`](#decl-zcoc0110f01-625-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0110top-88-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0110f01-624-popup_fieldcat) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L658-L680` · confidence 0.8 · `ZCOC0110#ZCOC0110F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BDC — `ZCOC0110F01` L493-L518 (26줄) + +*오더 생성 버튼(&BDC) 처리: 중복 실행을 막고 확인 팝업 승인 후 BDC 옵션을 설정하고 RUN_BDC(KO01 오더 생성)를 수행한다.* + +> 이 unit 의 조각 1개가 20/26줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 처리(GV_ALREADY_POST)된 경우 오류로 중단하고, POPUP_TO_CONFIRM_02 에서 '오더를 생성 하시겠습니까?' 승인('J') 시 처리 플래그를 세우고 BDC 옵션 설정 후 RUN_BDC 로 KO01 오더 생성을 실행한다. + +```abap + 498| IF GV_ALREADY_POST = 'X'. + 499| MESSAGE S000 DISPLAY LIKE 'E' WITH + 500| '이미 처리하였습니다'(F18). + 501| EXIT. + 502| ENDIF. + 503| + 504| IF GV_UPLOAD_ERROR = 'X'. + 505| * PERFORM PGM_MSG USING 'F11' 'E'. + 506| ENDIF. + 507| + 508| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 509| '오더를 생성 하시겠습니까?'(F11) ' ' + 510| CHANGING L_ANSWER. + 511| IF L_ANSWER <> 'J'. + 512| EXIT. + 513| ENDIF. + 514| + 515| GV_ALREADY_POST = 'X'. + 516| PERFORM BDC_OPTION USING P_DSMOD. + 517| PERFORM RUN_BDC. +``` + +- **EN**: Prevents duplicate execution, asks the user for confirmation, then sets BDC options and runs KO01 order creation via RUN_BDC. +- 호출(파서): POPUP_TO_CONFIRM_02, BDC_OPTION, RUN_BDC +- SAP 객체: KO01 +- 업무 키워드: 중복 실행 방지, 확인 팝업, 오더 생성 실행 +- English: Confirmation Popup, Internal Order, Batch Input +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0110top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc0110top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc0110f01-494-l_answer), [`P_DSMOD`](#decl-zcoc0110top-144-p_dsmod) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L498-L517` · confidence 0.88 · `ZCOC0110#ZCOC0110F01#FORM#EXECUTE_BDC#C1` + +### FORM RUN_BDC — `ZCOC0110F01` L544-L615 (72줄) + +*GT_DATA 각 행에 대해 KO01 트랜잭션 BDC(SAPMKAUF)로 내부오더를 생성하고 결과 상태·메시지를 반영한 뒤 성공 건을 ZCOT0030 에 기록한다.* + +> 이 unit 의 조각 2개가 60/72줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 행마다 진행률 표시 후 KO01 화면(SAPMKAUF 0100 오더유형 → 0600 오더번호·내역·회사코드·손익센터·책임/요청 코스트센터 → 저장)의 BDC 데이터를 구성하고 CALL TRANSACTION 'KO01' 로 오더를 생성한다. + +```abap + 553| LOOP AT GT_DATA. + 554| LV_CURRENT = SY-TABIX. + 555| + 556| PERFORM BAR_MSG_PER USING '오더를 생성중입니다...'(F19) + 557| LV_CURRENT LV_TOTAL. + 558| + 559| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 560| CLEAR : GT_BDCDATA, GT_BDCDATA[]. + 561| CLEAR : GT_MESSTAB, GT_MESSTAB[]. + 562| + 563| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 564| 'X' 'SAPMKAUF' '0100', + 565| ' ' 'BDC_OKCODE' '/00', + 566| ' ' 'COAS-AUART' GT_DATA-AUART, + 567| + 568| 'X' 'SAPMKAUF' '0600', + 569| ' ' 'BDC_OKCODE' '/00', + 570| ' ' 'COAS-AUFNR' GT_DATA-AUFNR, + 571| ' ' 'COAS-KTEXT' GT_DATA-KTEXT, + 572| ' ' 'COAS-BUKRS' GT_DATA-BUKRS, + 573| * ' ' 'COAS-GSBER' GT_DATA-GSBER, + 574| ' ' 'COAS-PRCTR' GT_DATA-PRCTR, + 575| ' ' 'COAS-KOSTV' GT_DATA-KOSTV, + 576| ' ' 'COAS-AKSTL' GT_DATA-AKSTL, + 577| + 578| 'X' 'SAPMKAUF' '0600', + 579| ' ' 'BDC_OKCODE' '=SICH'. + 580| + 581| CALL TRANSACTION 'KO01' + 582| USING GT_BDCDATA[] + 583| OPTIONS FROM GS_BDC_OPTION + 584| MESSAGES INTO GT_MESSTAB[]. + 585| + 586| LV_BDC_SUBRC = SY-SUBRC. +``` + +- **EN**: Builds the KO01 batch-input screen data (order type, order number, description, company code, profit center, responsible and requesting cost centers) and creates the internal order with CALL TRANSACTION KO01. +- 호출(파서): BAR_MSG_PER, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, KO01 +- SAP 객체: KO01, SAPMKAUF, COAS +- 업무 키워드: 내부오더 생성, BDC 실행, 오더유형, 책임코스트센터, 손익센터, 매출 실적 취합 오더 +- English: Internal Order, Batch Input, Call Transaction, Cost Center, Profit Center +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`LV_CURRENT`](#decl-zcoc0110f01-547-lv_current), [`LV_TOTAL`](#decl-zcoc0110f01-546-lv_total), [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`LV_BDC_SUBRC`](#decl-zcoc0110f01-545-lv_bdc_subrc) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L553-L586` · confidence 0.93 · `ZCOC0110#ZCOC0110F01#FORM#RUN_BDC#C1` + +#### [interface] BDC 메시지(GT_MESSTAB)를 행 메시지 목록에 기록하고 SY-SUBRC 에 따라 성공(녹색, SET_BG_RESULT='S')/실패(적색) 상태를 설정한 뒤 INSERT_LOG 로 성공 건을 ZCOT0030 에 저장하고 완료 메시지를 표시한다. + +```abap + 588| LOOP AT GT_MESSTAB. + 589| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 590| CHANGING GT_DATA-MESSAGE. + 591| PERFORM ADD_DATA_MESSAGE USING + 592| GT_MESSTAB-MSGTYP '' + 593| GT_DATA-MESSAGE. + 594| ENDLOOP. + 595| + 596| IF LV_BDC_SUBRC EQ 0. + 597| * 성공 메세지 처리 + 598| GT_DATA-STATUS = GC_STATUS_GREEN. + 599| GT_DATA-SET_BG_RESULT = 'S'. + 600| ELSE. + 601| GT_DATA-STATUS = GC_STATUS_RED. + 602| * 실패 메세지 처리 + 603| ENDIF. + 604| + 605| MODIFY GT_DATA. + 606| CLEAR : GT_DATA. + 607| ENDLOOP. + 608| + 609| PERFORM INSERT_LOG. + 610| + 611| GV_REFRESH = 'X'. + 612| + 613| MESSAGE S000 WITH '처리가 완료되었습니다.'(F12). +``` + +- **EN**: Logs BDC messages per row, sets success or error status by return code, saves successful orders to ZCOT0030 via INSERT_LOG and shows completion message. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BUILD_MESSAGE, ADD_DATA_MESSAGE, INSERT_LOG +- SAP 객체: BDCMSGCOLL, ZCOT0030 +- 업무 키워드: BDC 결과 처리, 성공/실패 상태, 메시지 기록, 이력 저장 +- English: BDC Messages, Status, Log Table +- 정의부(복사 시 함께 필요): [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`LV_BDC_SUBRC`](#decl-zcoc0110f01-545-lv_bdc_subrc), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L588-L613` · confidence 0.9 · `ZCOC0110#ZCOC0110F01#FORM#RUN_BDC#C2` + +### FORM INSERT_LOG — `ZCOC0110F01` L722-L740 (19줄) + +*KO01 BDC 로 오더 생성에 성공한 건(SET_BG_RESULT='S')을 생성자·일시와 함께 ZCOT0030 이력 테이블에 저장한다.* + +> 이 unit 의 조각 1개가 12/19줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] 오더 생성 성공 건만 골라 생성일(ERDAT)·생성자(ERNAM)·시각(ERZEIT)을 채운 뒤 MODIFY ZCOT0030 으로 오더 생성 이력을 저장한다. + +```abap + 728| LOOP AT GT_DATA WHERE SET_BG_RESULT = 'S'. + 729| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0030. + 730| LT_ZCOT0030-ERDAT = SY-DATUM. + 731| LT_ZCOT0030-ERNAM = SY-UNAME. + 732| LT_ZCOT0030-ERZEIT = SY-UZEIT. + 733| APPEND LT_ZCOT0030. + 734| CLEAR : LT_ZCOT0030. + 735| ENDLOOP. + 736| + 737| IF LT_ZCOT0030[] IS NOT INITIAL. + 738| MODIFY ZCOT0030 FROM TABLE LT_ZCOT0030. + 739| ENDIF. +``` + +- **EN**: Collects successfully created order rows with creation user/date/time and writes them to custom log table ZCOT0030 via MODIFY. +- 테이블(파서): read - / write [ZCOT0030](/tables/ZCOT0030.md) +- SAP 객체: ZCOT0030 +- 업무 키워드: 오더 생성 이력, 성공 건 저장, 로그 테이블, DB 저장 +- English: Internal Order, Log Table, Database Update +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0110top-55-gt_data), [`LT_ZCOT0030`](#decl-zcoc0110f01-724-lt_zcot0030) +- 위치: `abap://ZCOC0110/ZCOC0110F01#L728-L739` · confidence 0.92 · `ZCOC0110#ZCOC0110F01#FORM#INSERT_LOG#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0110I01` L6-L27 (22줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 정리하고 화면을 빠져나가며, &BDC 버튼이면 EXECUTE_BDC로 투자오더 생성·예산 등록을 실행하는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 CLEAR_CONTAINER_PROC로 컨테이너를 해제하고 종료하며, '&BDC' 기능코드면 EXECUTE_BDC를 호출해 KO01 오더 생성 및 예산 업로드를 수행한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BDC. + 24| WHEN OTHERS. + 25| ENDCASE. +``` + +- **EN**: Dispatch OK codes: free ALV containers and leave on BACK/CANC/EXIT, and call EXECUTE_BDC (KO01 order creation and budget posting) on '&BDC'. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BDC +- SAP 객체: CLEAR_CONTAINER_PROC, EXECUTE_BDC, KO01 +- 업무 키워드: 기능코드 분기, 오더 생성 실행, 화면 종료 +- English: OK code, PAI, BDC, KO01 +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0110top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0110c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0110/ZCOC0110I01#L9-L25` · confidence 0.85 · `ZCOC0110#ZCOC0110I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (314건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0110C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0110c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0110TOP` (35건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0110top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0110top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0110top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0110top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0110top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0110top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0110top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0110top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0110top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0110top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0110top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0110top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0110top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0110top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc0110top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SMW0 — constants · L30-L30 {#decl-zcoc0110top-30-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0110'. +``` + +#### GC_FUNC_AREA — constants · L31-L31 {#decl-zcoc0110top-31-gc_func_area} + +```abap +CONSTANTS : GC_FUNC_AREA LIKE AUFK-FUNC_AREA VALUE '3000'. +``` + +#### GC_IVPRO — constants · L32-L32 {#decl-zcoc0110top-32-gc_ivpro} + +```abap +CONSTANTS : GC_IVPRO LIKE AUFK-IVPRO VALUE 'Z00001'. +``` + +#### GT_MAIN_FIELDCAT — data · L38-L38 {#decl-zcoc0110top-38-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L43-L50 {#decl-zcoc0110top-43-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + AUART(4) TYPE C, + AUFNR(12) TYPE C, + KTEXT(40) TYPE C, +* GSBER(4) TYPE C, + KOSTV(10) TYPE C, " 책임코스트센터 + AKSTL(10) TYPE C, " 요청코스트센터 +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L53-L53 {#decl-zcoc0110top-53-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L55-L76 {#decl-zcoc0110top-55-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + AUART LIKE AUFK-AUART, + AUFNR LIKE AUFK-AUFNR, + KTEXT LIKE AUFK-KTEXT, + BUKRS LIKE AUFK-BUKRS, + KOSTV LIKE AUFK-KOSTV, + AKSTL LIKE AUFK-AKSTL, + FUNC_AREA LIKE AUFK-FUNC_AREA, + OBJNR LIKE ANLI-OBJNR, + GJAHR LIKE BPEJ-GJAHR, + KOKRS LIKE TKA01-KOKRS, + PRCTR LIKE CSKS-PRCTR, + + SET_BG_RESULT TYPE C, " S: 성공, E : 실패. + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L78-L78 {#decl-zcoc0110top-78-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GS_MSG_T_S — data · L79-L79 {#decl-zcoc0110top-79-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_LOG_POP — data · L81-L85 {#decl-zcoc0110top-81-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + AUFNR LIKE AUFK-AUFNR, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L88-L88 {#decl-zcoc0110top-88-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_AUFK — data · L90-L92 {#decl-zcoc0110top-90-gt_aufk} + +```abap +DATA : BEGIN OF GT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, +END OF GT_AUFK. +``` + +#### GT_GSBER — data · L94-L97 {#decl-zcoc0110top-94-gt_gsber} + +```abap +DATA : BEGIN OF GT_GSBER OCCURS 0, + GSBER LIKE AUFK-GSBER, + GTEXT LIKE TGSBT-GTEXT, +END OF GT_GSBER. +``` + +#### GT_KOSTL — data · L99-L102 {#decl-zcoc0110top-99-gt_kostl} + +```abap +DATA : BEGIN OF GT_KOSTL OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, +END OF GT_KOSTL. +``` + +#### GT_ANKT — data · L104-L107 {#decl-zcoc0110top-104-gt_ankt} + +```abap +DATA : BEGIN OF GT_ANKT OCCURS 0, + ANLKL LIKE ANKT-ANLKL, + TXK20 LIKE ANKT-TXK20, +END OF GT_ANKT. +``` + +#### GT_AUART — data · L109-L111 {#decl-zcoc0110top-109-gt_auart} + +```abap +DATA : BEGIN OF GT_AUART OCCURS 0, + AUART LIKE T003O-AUART, +END OF GT_AUART. +``` + +#### P_BUKRS — parameter · L121-L122 {#decl-zcoc0110top-121-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L130-L131 {#decl-zcoc0110top-130-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_FNAME — parameter · L136-L137 {#decl-zcoc0110top-136-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0110_P_FNAME. +``` + +#### P_DSMOD — parameter · L144-L144 {#decl-zcoc0110top-144-p_dsmod} + +```abap +PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0110F01` (23건) + +#### L_UCOMM — data · unit 로컬 · L39-L39 {#decl-zcoc0110f01-39-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_DATA — data · unit 로컬 · L169-L169 {#decl-zcoc0110f01-169-lt_data} + +```abap + DATA : LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L170-L170 {#decl-zcoc0110f01-170-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L331-L331 {#decl-zcoc0110f01-331-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### LT_FCAT — data · unit 로컬 · L397-L397 {#decl-zcoc0110f01-397-lt_fcat} + +```abap + DATA : LT_FCAT LIKE TABLE OF LVC_S_FCAT. +``` + +#### L_TABNAME — data · unit 로컬 · L398-L398 {#decl-zcoc0110f01-398-l_tabname} + +```abap + DATA : L_TABNAME LIKE DD02L-TABNAME. +``` + +#### L_FSNAME — data · unit 로컬 · L399-L399 {#decl-zcoc0110f01-399-l_fsname} + +```abap + DATA : L_FSNAME(30) TYPE C. +``` + +#### L_TYPE — data · unit 로컬 · L400-L400 {#decl-zcoc0110f01-400-l_type} + +```abap + DATA : L_TYPE(4) TYPE C. +``` + +#### L_CONV_ALPHA — data · unit 로컬 · L401-L401 {#decl-zcoc0110f01-401-l_conv_alpha} + +```abap + DATA : L_CONV_ALPHA(1) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L402-L402 {#decl-zcoc0110f01-402--fs_upload-} + +```abap + FIELD-SYMBOLS : LIKE LINE OF GT_UPLOAD. +``` + +#### — field-symbol · unit 로컬 · L403-L403 {#decl-zcoc0110f01-403--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L404-L404 {#decl-zcoc0110f01-404--fs_fcat-} + +```abap + FIELD-SYMBOLS : LIKE LVC_S_FCAT. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L406-L409 {#decl-zcoc0110f01-406-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, +END OF LT_LOWERCASE. +``` + +#### L_ANSWER — data · unit 로컬 · L494-L494 {#decl-zcoc0110f01-494-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L545-L545 {#decl-zcoc0110f01-545-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### LV_TOTAL — data · unit 로컬 · L546-L546 {#decl-zcoc0110f01-546-lv_total} + +```abap + DATA : LV_TOTAL TYPE I. +``` + +#### LV_CURRENT — data · unit 로컬 · L547-L547 {#decl-zcoc0110f01-547-lv_current} + +```abap + DATA : LV_CURRENT TYPE I. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L624-L624 {#decl-zcoc0110f01-624-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L625-L625 {#decl-zcoc0110f01-625-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L626-L626 {#decl-zcoc0110f01-626-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L692-L692 {#decl-zcoc0110f01-692-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L693-L693 {#decl-zcoc0110f01-693-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LT_ZCOT0030 — data · unit 로컬 · L724-L724 {#decl-zcoc0110f01-724-lt_zcot0030} + +```abap + DATA : LT_ZCOT0030 LIKE ZCOT0030 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0110 L24-30 | 0 | INITIALIZATION 에서 화면 기본값(SET_DYNP)과 엑셀 양식 다운로드 버튼(FC01_ACTIVE)을 설정한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0110 L31-33 | 0 | AT SELECTION-SCREEN 에서 CONTROL_FCXX 를 호출하여 선택화면 기능키(FC01 엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0110 L34-39 | 0 | 선택화면 PBO 에서 LOOP_AT_SCREEN 을 호출하여 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0110 L40-45 | 0 | 업로드 파일 경로 P_FNAME 의 F4 도움말로 파일 선택 다이얼로그(F4_FNAME)를 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC0110 L46-53 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0110 L54-65 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0110C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0110C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0110C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0110C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0110C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0110C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0110C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0110C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0110C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0110C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0110C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0110C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0110C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0110C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0110C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0110C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC0110C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC0110C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0110C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0110C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0110C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC0110C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0110C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0110C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0110C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0110F01 L6-15 | 0 | 선택화면에서 MG1 그룹 필드(회사코드·관리회계영역 텍스트 등)를 입력 불가로 설정한다. | +| SET_DYNP | FORM | ZCOC0110F01 L22-29 | 0 | 선택화면 초기화 시 회사코드(P_BUKRS)·관리회계영역(P_KOKRS) 기본 정보를 읽어 텍스트(P_BUTXT, P_BEZEI)를 화면에 설정한다. | +| CONTROL_FCXX | FORM | ZCOC0110F01 L38-50 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0110 오더 생성 엑셀 양식을 연다. | +| CHECK_INPUT | FORM | ZCOC0110F01 L59-66 | 1 | 업로드 파일 경로(P_FNAME)가 입력되지 않았으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0110F01 L72-101 | 1 | 회사코드·관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, BDC 표시모드(P_DSMOD) 설정 및 상태 플래그 초기화를 수행하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0110F01 L107-110 | 0 | 진행 메시지를 표시하고 READ_DATA 로 엑셀 읽기·검증 흐름을 호출한다. | +| FC01_ACTIVE | FORM | ZCOC0110F01 L119-122 | 0 | 선택화면 버튼 FC01 을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC0110F01 L131-157 | 1 | 엑셀 원본 GT_UPLOAD 를 GT_DATA 로 이관하며 회사코드·기능영역·관리회계영역을 채우고 책임코스트센터의 손익센터(CSKS-PRCTR)를 보완한다. | +| VALIDATION_CHECK | FORM | ZCOC0110F01 L167-323 | 4 | 업로드 오더 데이터를 AUFK 기존재, CSKS/CSKT 책임·요청 코스트센터, T003O 오더유형, 엑셀 내 중복, 투자오더(I/S) 제외 조건으로 검증하여 행별 오류 상태·메시지를 설정한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC0110F01 L330-348 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC0110F01 L357-371 | 0 | 엑셀 읽기(UPLOAD_EXCEL_DATA), 입력 형식 정리(SET_BDC_FORM), GT_DATA 이관(TRANSFER_GT_DATA), 검증(VALIDATION_CHECK)을 순서대로 수행하는 흐름 FORM 이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0110F01 L379-387 | 0 | 오류 필드명을 ALV 셀 색상 테이블(F_COL)에 적색(COL=6)으로 등록하여 해당 셀을 강조 표시하는 헬퍼이다. | +| SET_BDC_FORM | FORM | ZCOC0110F01 L396-486 | 2 | 대상 구조의 필드카탈로그와 도메인 소문자 허용 여부(DD01L)를 참고해 GT_UPLOAD의 숫자·날짜·체크박스·변환루틴 필드를 정리하고 대문자 변환하는 FORM이다. | +| EXECUTE_BDC | FORM | ZCOC0110F01 L493-518 | 1 | 오더 생성 버튼(&BDC) 처리: 중복 실행을 막고 확인 팝업 승인 후 BDC 옵션을 설정하고 RUN_BDC(KO01 오더 생성)를 수행한다. | +| BDC_OPTION | FORM | ZCOC0110F01 L527-535 | 0 | KO01 BDC 실행 옵션(DEFSIZE, 업데이트 모드 S, 표시 모드 PV_DSMOD)을 SET_BDC_OPTION 으로 GS_BDC_OPTION 에 설정하는 단순 래퍼이다. | +| RUN_BDC | FORM | ZCOC0110F01 L544-615 | 2 | GT_DATA 각 행에 대해 KO01 트랜잭션 BDC(SAPMKAUF)로 내부오더를 생성하고 결과 상태·메시지를 반영한 뒤 성공 건을 ZCOT0030 에 기록한다. | +| SHOW_ERROR_LOG | FORM | ZCOC0110F01 L623-681 | 1 | ALV에서 선택한 행의 처리 메시지 목록(MSG_LIST)을 오더번호·상태·메시지 컬럼의 팝업 ALV(W_POPUP_GRID)로 보여주는 FORM이다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0110F01 L690-714 | 1 | 상태(S/E)에 따른 신호등 아이콘과 '값 : 메시지' 텍스트로 메시지 항목을 만들어 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| INSERT_LOG | FORM | ZCOC0110F01 L722-740 | 1 | KO01 BDC 로 오더 생성에 성공한 건(SET_BG_RESULT='S')을 생성자·일시와 함께 ZCOT0030 이력 테이블에 저장한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0110I01 L6-27 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 정리하고 화면을 빠져나가며, &BDC 버튼이면 EXECUTE_BDC로 투자오더 생성·예산 등록을 실행하는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0110O01 L6-15 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0110O01 L21-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0110O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0110O01 L127-147 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0110O01 L155-164 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0110O01 L172-194 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0110O01 L203-231 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0110O01 L240-260 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0110O01 L270-343 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0110O01 L351-378 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0120.md b/wiki/programs/ZCOC0120.md new file mode 100644 index 0000000..e6ed74d --- /dev/null +++ b/wiki/programs/ZCOC0120.md @@ -0,0 +1,6392 @@ +--- +type: abap-program +title: "ZCOC0120 — 본자산 생성 및 투자 오더 정산규칙 Upload" +description: "투자오더(I)/자가소비오더(S)의 비용을 본자산(Fixed Asset)으로 정산하기 위해, 엑셀(구분 1:신규/2:기존, 오더번호, 코스트센터, 자산클래스, 자산내역, 기존 자산번호, 정산금액/정산%)을 업로드하여 CSKS/CSKT·ANKT·AUFK/ONROR·ANLA 로 검증하고 Z_CO_CHECK_BUDGET 로 오더 예산 초과를 점검한 뒤, 신규 건은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 정산규칙 내역을 ZCOT0040 에 저장한다(자산생성 모드 P_SAV). 정산규칙 모드(P_SETT)에서는 ZCOT0040 에 저장된 내역(미처리/실패/성공)을 조회·수정·재검증한 뒤 KO02 BDC(SAPLKOBS 정산규칙 화면)로 오더에 자산별 정산규칙(Settlement Rule, COBRB 기간/연도, 금액 또는 %)을 생성하고 결과를 ZCOT0040 에 반영한다. COSP 로 오더의 실제/약정 누계(WKG_SUM)를 함께 표시하며 KOB1 실적 라인아이템 조회를 호출할 수 있다." +resource: "abap://ZCOC0120" +tags: ["오더정산", "정산규칙", "본자산생성", "투자오더", "자산화", "엑셀업로드", "사용자 명령", "자산 생성", "재검증", "화면 종료", "정산규칙 내역", "자산 생성 성공", "저장 데이터 구성", "회사코드", "기간", "정산규칙 저장", "DB 저장", "성공 메시지", "결과 기록", "본자산 생성"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:13+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "ANKT", "ANLA", "AUFK", "COSP", "CSKS", "CSKT", "DD01L", "DD07T", "ONRKS", "ONROR", "T001", "TKA01", "TKT09", "ZCOT0040"] +x-tables-write: ["GT_DATA", "ZCOT0040"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_FIXEDASSET_CREATE", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KO02", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RKAEP000", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST"] +x-code-hash: "7088ca07dee33921e39eccf48d55a3f8124ca404e85faa15d9ee594b49795178" +x-unit-count: 155 +x-chunk-count: 99 +x-declaration-count: 222 +--- + +## 업무 목적 + +투자오더(I)/자가소비오더(S)의 비용을 본자산(Fixed Asset)으로 정산하기 위해, 엑셀(구분 1:신규/2:기존, 오더번호, 코스트센터, 자산클래스, 자산내역, 기존 자산번호, 정산금액/정산%)을 업로드하여 CSKS/CSKT·ANKT·AUFK/ONROR·ANLA 로 검증하고 Z_CO_CHECK_BUDGET 로 오더 예산 초과를 점검한 뒤, 신규 건은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 정산규칙 내역을 ZCOT0040 에 저장한다(자산생성 모드 P_SAV). 정산규칙 모드(P_SETT)에서는 ZCOT0040 에 저장된 내역(미처리/실패/성공)을 조회·수정·재검증한 뒤 KO02 BDC(SAPLKOBS 정산규칙 화면)로 오더에 자산별 정산규칙(Settlement Rule, COBRB 기간/연도, 금액 또는 %)을 생성하고 결과를 ZCOT0040 에 반영한다. COSP 로 오더의 실제/약정 누계(WKG_SUM)를 함께 표시하며 KOB1 실적 라인아이템 조회를 호출할 수 있다. + +## 주 흐름 + +1. 회사코드·관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 ZCOC0120)을 활성화하며, 모드(P_SAV 자산생성 / P_SETT 정산규칙)에 따라 파일·상태 선택 필드를 표시/숨김한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX, LOOP_AT_SCREEN) +2. 자산생성 모드에서 파일 경로 입력 여부를 확인하고 ALV 필드카탈로그·BDC 모드·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회한 뒤 모드에 따라 분기한다 (PROCESS_DATA) +4. [자산생성 모드] ZCOS0180 구조로 동적 업로드 테이블을 만들어 엑셀을 읽고 CONVERSION_EXIT·숫자·날짜 변환 후 GT_DATA 로 이관한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, CONVERT_KRW_DATA) +5. [자산생성 모드] 구분값(1/2), 코스트센터(CSKS/CSKT/ONRKS), 자산클래스(ANKT), 기존 자산번호(ANLA), 오더(AUFK/ONROR, I/S 유형만 허용), 금액·정산% 택일, 오더별 % 합계 100%, ZCOT0040 중복, Z_CO_CHECK_BUDGET 오더 예산 초과를 검증하고 COSP 에서 오더 실적/약정 누계를 조회한다 (VALIDATION_CHECK_A, CHECK_VALUE_FIELD, SELECT_COSP, EDIT_DATA_A) +6. [자산생성 모드] '저장'(&SAV) 시 신규(구분 1) 행은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성(자산클래스·내역·수량 EA·코스트센터)하고 성공 건을 ZCOT0040 에 저장한다 (EXECUTE_BAPI, CREATE_FIXED_ASSET, SAVE_DB) +7. [정산규칙 모드] ZCOT0040 에서 미처리/실패/성공 내역을 조회하고 오더 실적 누계와 함께 금액·%·예산을 재검증한다; ALV 에서 금액·% 를 수정하면 ZCOT0040 에 즉시 반영된다 (PROCESS_SETTLEMENT, SELECT_DATA, SELECT_COSP, VALIDATION_CHECK_C, DATA_CHANGED_MODIFY) +8. [정산규칙 모드] '실행'(&RUN) 시 오더별로 KO02 BDC(SAPMKAUF → SAPLKOBS 정산규칙, COBL-ANLN1, COBRB 유효기간/금액/%)를 수행하여 정산규칙을 생성하고 성공/실패를 ZCOT0040 에 갱신한다 (EXECUTE_BDC, BDC_OPTION, CREATE_SETTLEMENT_RULE, MODIFY_DB) +9. 행 더블클릭 등으로 오더 실제 라인아이템 리포트 KOB1(RKAEP000)을 호출하거나 메시지 상세 팝업을 표시한다 (CALL_KOB1, SHOW_ERROR_LOG) + +## 핵심 내부테이블 + +- `` — ZCOS0180 구조 기반 동적 엑셀 업로드 테이블 (전 필드 CHAR) (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_DATA` — 메인 ALV 데이터 (ZCOS0180 + 텍스트, 오브젝트번호, 자산/정산 성공 여부, 실적누계 WKG_SUM, 상태·메시지) (채움: TRANSFER_GT_DATA, SELECT_DATA, VALIDATION_CHECK_A, VALIDATION_CHECK_C, SELECT_COSP, EDIT_DATA_A, CREATE_FIXED_ASSET, CREATE_SETTLEMENT_RULE / 소비: DISPLAY_ALV_LIST, CREATE_FIXED_ASSET, CREATE_SETTLEMENT_RULE, SAVE_DB, MODIFY_DB, CALL_KOB1, SHOW_ERROR_LOG) +- `GT_ZCOT0040` — 선택 연도/기간의 기존 자산·정산규칙 저장 내역 (ZCOT0040) (채움: PROCESS_DATA / 소비: VALIDATION_CHECK_A, SELECT_DATA, MODIFY_DB) +- `GT_KOSTL_ST` — 유효 코스트센터 및 오브젝트번호 (CSKS/CSKT/ONRKS) (채움: VALIDATION_CHECK_A / 소비: VALIDATION_CHECK_A) +- `GT_AUFK_ST` — 오더 존재 여부·텍스트·오브젝트번호·유형 (AUFK/ONROR) (채움: VALIDATION_CHECK_A, VALIDATION_CHECK_C / 소비: VALIDATION_CHECK_A, VALIDATION_CHECK_C) +- `GT_ANLA` — 기존 자산번호·내역 (ANLA) (채움: VALIDATION_CHECK_A, VALIDATION_CHECK_C / 소비: VALIDATION_CHECK_A, VALIDATION_CHECK_C) +- `GT_COSP` — 오더별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 월별 합계 (채움: SELECT_COSP / 소비: SELECT_COSP) +- `GT_BDCDATA` — KO02 정산규칙 배치 인풋 화면 데이터 (채움: CREATE_SETTLEMENT_RULE, DYNPRO / 소비: CREATE_SETTLEMENT_RULE) + +## 테이블 / 외부 호출 + +- read: AENR, ANKT, ANLA, AUFK, COSP, CSKS, CSKT, DD01L, DD07T, ONRKS, ONROR, T001, TKA01, TKT09, ZCOT0040 +- write: GT_DATA, ZCOT0040 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_FIXEDASSET_CREATE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KO02, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM + +## 로직 조각 (99건 / unit 70개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC0120F01` L46-L59 (14줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0120 엑셀 양식을 연다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택화면 사용자 명령이 FC01 이면 Z_CO_OPEN_SMW0 를 호출해 SMW0 웹 리포지토리 문서(GC_SMW0)의 업로드용 엑셀 양식을 다운로드/오픈한다. + +```abap + 50| L_UCOMM = SSCRFIELDS-UCOMM. + 51| CASE L_UCOMM. + 52| WHEN 'FC01'. + 53| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 54| EXPORTING + 55| P_DOCNAM = GC_SMW0 + 56| P_TITLE = '본자산 생성 및 투자 오더 정산규칙 Upload'(F02). + 57| ENDCASE. +``` + +- **EN**: On function key FC01 calls Z_CO_OPEN_SMW0 to open the Excel upload template stored in SMW0 web repository. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키, SMW0 문서 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0120f01-47-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0120top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0120top-34-gc_smw0) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L50-L57` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC0120` L47-L54 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC0120/ZCOC0120#L48-L50` · confidence 0.8 · `ZCOC0120#ZCOC0120#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC0120F01` L68-L75 (8줄) + +*자산생성 모드(P_SAV)에서 업로드 파일 경로(P_FNAME)가 입력되지 않으면 오류 메시지를 내고 처리를 중단한다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 자산생성 모드에서 엑셀 업로드 파일명 P_FNAME 이 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 오류를 표시하고 LEAVE LIST-PROCESSING 으로 중단한다. + +```abap + 70| IF P_FNAME IS INITIAL AND P_SAV = 'X'. + 71| MESSAGE S000 DISPLAY LIKE 'E' WITH + 72| '업로드 파일을 선택하여 주시기 바랍니다.'(F01). + 73| LEAVE LIST-PROCESSING. + 74| ENDIF. +``` + +- **EN**: Checks that an upload file path is entered in asset creation mode and stops processing with an error message otherwise. +- 업무 키워드: 입력 검증, 업로드 파일 필수, 자산생성 모드 +- English: Input Validation, File Upload, Mandatory Field +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`P_SAV`](#decl-zcoc0120top-126-p_sav) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L70-L74` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM PROCESS_DATA — `ZCOC0120F01` L118-L136 (19줄) + +*선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회하고 모드(P_SAV 자산생성/P_SETT 정산규칙)에 따라 READ_DATA 또는 PROCESS_SETTLEMENT 로 분기한다.* + +> 이 unit 의 조각 1개가 12/19줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·관리회계영역·회계연도·기간 기준으로 ZCOT0040 의 기존 자산/정산규칙 저장 내역을 GT_ZCOT0040 에 조회한 뒤 자산생성 모드면 엑셀 읽기(READ_DATA), 정산규칙 모드면 PROCESS_SETTLEMENT 를 수행한다. + +```abap + 121| SELECT * FROM ZCOT0040 INTO TABLE GT_ZCOT0040 + 122| WHERE BUKRS = P_BUKRS + 123| AND KOKRS = P_KOKRS + 124| AND GJAHR = P_GJAHR + 125| AND PERBL = P_PERBL. + 126| + 127| IF P_SAV = 'X'. + 128| PERFORM BAR_MSG USING 60 'Read From Excel...'(F03). + 129| PERFORM READ_DATA. + 130| ELSEIF P_SETT = 'X'. + 131| PERFORM PROCESS_SETTLEMENT. + 132| ENDIF. +``` + +- **EN**: Selects saved asset/settlement rule records from ZCOT0040 for the company code, controlling area, year and period, then branches to Excel upload or settlement processing by mode. +- 테이블(파서): read [ZCOT0040](/tables/ZCOT0040.md) / write - +- 호출(파서): BAR_MSG, READ_DATA, PROCESS_SETTLEMENT +- SAP 객체: ZCOT0040 +- 업무 키워드: 저장 내역 조회, 정산규칙 내역, 모드 분기, 회계연도, 기간 +- English: Settlement Rule, Custom Table, Fiscal Year, Period +- 정의부(복사 시 함께 필요): [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`P_SAV`](#decl-zcoc0120top-126-p_sav), [`P_SETT`](#decl-zcoc0120top-130-p_sett) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L121-L132` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#PROCESS_DATA#C1` + +### FORM READ_DATA — `ZCOC0120F01` L555-L580 (26줄) + +*자산생성 모드의 엑셀 읽기 흐름: 동적 업로드 테이블 생성, 엑셀 읽기(UPLOAD_XLS_STRUCT), GT_DATA 이관, 통화 변환·검증(VALIDATION_CHECK_A)·COSP 실적 조회, 표시 편집을 수행한다.* + +> 이 unit 의 조각 1개가 22/26줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] ZCOS0180 구조의 동적 테이블을 만들고 파일 P_FNAME 의 엑셀(2행부터 65536행, 256열)을 UPLOAD_XLS_STRUCT 로 읽어 GT_DATA 로 이관한 뒤 통화 변환, 마스터 검증, COSP 실적 누계 조회, 구분 텍스트 편집을 순서대로 수행한다. + +```abap + 558| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 559| * 2. 업로드 파일 취득 + 560| PERFORM UPLOAD_XLS_STRUCT TABLES + 561| USING P_FNAME " 파일명 + 562| 1 "S_COL-LOW + 563| 2 "S_ROW-LOW + 564| 256 "S_COL-HIGH + 565| 65536. "S_ROW-HIGH + 566| CHECK [] IS NOT INITIAL. + 567| *3. 인터널 테이블로 이전 + 568| PERFORM TRANSFER_GT_DATA. + 569| + 570| CHECK GT_DATA[] IS NOT INITIAL. + 571| + 572| "4. Validation + 573| PERFORM CONVERT_KRW_DATA. + 574| PERFORM VALIDATION_CHECK_A. + 575| PERFORM SELECT_COSP. + 576| + 577| + 578| *5. 인터널 테이블 데이터 + 579| PERFORM EDIT_DATA_A. +``` + +- **EN**: Orchestrates Excel upload: create dynamic table, read the file with UPLOAD_XLS_STRUCT, transfer to GT_DATA, convert currency, validate master data, read COSP actuals and edit display fields. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK_A, SELECT_COSP, EDIT_DATA_A +- SAP 객체: ZCOS0180, COSP +- 업무 키워드: 엑셀 업로드, 처리 흐름, 유효성 검증, 실적 누계 +- English: Excel Upload, Process Flow, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc0120top-32-gc_upload_struct), [``](#decl-zcoc0120top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`GT_DATA`](#decl-zcoc0120top-58-gt_data) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L558-L579` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC0120F01` L839-L885 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 845| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 846| EXPORTING + 847| I_STRUCTURE_NAME = LV_STRNM + 848| I_BYPASSING_BUFFER = 'X' + 849| CHANGING + 850| CT_FIELDCAT = GT_UPLD_FCAT + 851| EXCEPTIONS + 852| INCONSISTENT_INTERFACE = 1 + 853| PROGRAM_ERROR = 2 + 854| OTHERS = 3. + 855| + 856| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 857| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 858| + 859| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 860| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 861| ENDIF. + 862| + 863| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 864| GS_UPLD_FCAT-INTLEN = '10'. + 865| ENDIF. + 866| + 867| " 올린 그대로 받기 위해 CHAR로 변환. + 868| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 869| GS_UPLD_FCAT-INTTYPE = 'C'. + 870| + 871| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 872| ENDLOOP. + 873| + 874| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 875| EXPORTING + 876| IT_FIELDCATALOG = LT_UPLD_FCAT + 877| IMPORTING + 878| EP_TABLE = GF_UPLOADT. + 879| + 880| ASSIGN GF_UPLOADT->* TO . + 881| + 882| CREATE DATA GF_UPLOADS LIKE LINE OF . + 883| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc0120f01-840-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc0120top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc0120f01-841-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc0120top-49-gf_uploadt), [``](#decl-zcoc0120top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc0120top-50-gf_uploads), [``](#decl-zcoc0120top-47--gf_uploads-) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L845-L883` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC0120F01` L157-L252 (96줄) + +*동적 업로드 테이블 의 문자 데이터를 대문자 변환·%제거·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이관한다.* + +> 이 unit 의 조각 2개가 78/96줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 필드카탈로그의 도메인별 소문자 허용 여부(LOWERCASE)를 DD01L 에서 조회해 대문자 변환 대상을 판단한다. + +```abap + 173| SELECT DOMNAME LOWERCASE + 174| INTO TABLE LT_LOWERCASE + 175| FROM DD01L + 176| FOR ALL ENTRIES IN GT_UPLD_FCAT + 177| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 178| AND AS4LOCAL = 'A'. + 179| + 180| SORT LT_LOWERCASE. + 181| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE + 182| COMPARING ALL FIELDS. +``` + +- **EN**: Reads the lowercase flag per domain from DD01L to decide which uploaded fields must be converted to upper case. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L +- 업무 키워드: 도메인 소문자 허용, 대문자 변환 판단 +- English: Domain, Lowercase Flag, DDIC +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc0120f01-158-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L173-L182` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 업로드 행의 각 컬럼을 필드카탈로그 순서로 읽어 대문자 변환, PROZS 의 퍼센트 기호 제거, CONVERSION_EXIT_xxx_INPUT 호출, 숫자(BDC_CURR)·날짜(BDC_DATE) 변환 후 GS_DATA 로 옮기고 초기 상태로 GT_DATA 에 추가한다. + +```abap + 184| LOOP AT INTO . + 185| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 186| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 187| TO . + 188| + 189| IF SY-SUBRC NE 0. + 190| MESSAGE S000 WITH 'Field assign Fail.'. + 191| LEAVE LIST-PROCESSING. + 192| ENDIF. + 193| + 194| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 195| BINARY SEARCH. + 196| + 197| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 198| TRANSLATE TO UPPER CASE. + 199| ENDIF. + 200| + 201| IF GS_UPLD_FCAT-FIELDNAME = 'PROZS'. + 202| REPLACE ALL OCCURRENCES OF '%' IN WITH ''. + 203| ENDIF. + 204| + 205| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 206| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 207| INTO LV_CONVFUNC. + 208| + 209| CALL FUNCTION LV_CONVFUNC + 210| EXPORTING + 211| INPUT = + 212| IMPORTING + 213| OUTPUT = + 214| EXCEPTIONS + 215| OTHERS = 1. + 216| ENDIF. + 217| + 218| CASE GS_UPLD_FCAT-DATATYPE. + 219| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 220| 'DEC' OR 'CURR'. + 221| PERFORM BDC_CURR USING . + 222| WHEN 'DATS'. + 223| PERFORM BDC_DATE USING . + 224| ENDCASE. + 225| + 226| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 227| TO . + 228| + 229| IF SY-SUBRC NE 0. + 230| MESSAGE S000 WITH 'Field assign Fail.'. + 231| LEAVE LIST-PROCESSING. + 232| ENDIF. + 233| + 234| TRY . + 235| = . + 236| + 237| CATCH CX_ROOT INTO LF_OREF. + 238| LV_TEXT = LF_OREF->GET_TEXT( ). + 239| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 240| 'Type conversion error :' LV_TEXT. + 241| LEAVE LIST-PROCESSING. + 242| ENDTRY. + 243| ENDLOOP. + 244| + 245| GS_DATA-STATUS = GC_STATUS_INIT. + 246| + 247| APPEND GS_DATA TO GT_DATA. + 248| CLEAR GS_DATA. + 249| CLEAR : LT_LOWERCASE. + 250| + 251| ENDLOOP. +``` + +- **EN**: Maps each uploaded cell to GT_DATA applying upper-case, percent sign removal, dynamic CONVERSION_EXIT input routines and numeric/date conversion, appending rows with initial status. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 엑셀 데이터 이관, 변환 엑시트, 숫자 변환, 날짜 변환, 정산 비율 +- English: Conversion Exit, Excel Upload, Data Transfer, Type Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc0120top-46--gf_uploadt-), [``](#decl-zcoc0120top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc0120top-53-gs_upld_fcat), [``](#decl-zcoc0120f01-163--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc0120f01-158-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc0120f01-165-lv_convfunc), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GS_DATA`](#decl-zcoc0120top-82-gs_data), [``](#decl-zcoc0120f01-164--fs_data_field-), [`LF_OREF`](#decl-zcoc0120f01-166-lf_oref), [`LV_TEXT`](#decl-zcoc0120f01-167-lv_text) 외 1건 +- 위치: `abap://ZCOC0120/ZCOC0120F01#L184-L251` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM CONVERT_KRW_DATA — `ZCOC0120F01` L929-L949 (21줄) + +*ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR' 필드를 찾아 GT_DATA 각 행의 금액을 동적 ASSIGN한 뒤 CONV_DB_WAERS로 통화 GV_WAERS(KRW) 기준 내부 금액 형식으로 변환한다. + +```abap + 935| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 936| WHERE DATATYPE = 'CURR'. + 937| + 938| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 939| INTO LV_FIELD. + 940| + 941| LOOP AT GT_DATA ASSIGNING . + 942| ASSIGN (LV_FIELD) TO . + 943| + 944| IF SY-SUBRC EQ 0. + 945| PERFORM CONV_DB_WAERS USING GV_WAERS. + 946| ENDIF. + 947| ENDLOOP. + 948| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the amount in each GT_DATA row and convert it to the internal DB currency format for GV_WAERS via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: CONV_DB_WAERS, LVC_S_FCAT +- 업무 키워드: 통화 금액 변환, 원화, 내부 형식, 동적 필드 할당 +- English: Currency Conversion, KRW, Field Catalog, Dynamic ASSIGN +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0120top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-930-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0120f01-933-lv_field), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [``](#decl-zcoc0120f01-932--fs_data-), [``](#decl-zcoc0120f01-931--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L935-L948` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM VALIDATION_CHECK_A — `ZCOC0120F01` L262-L546 (285줄) + +*엑셀 업로드 데이터(자산생성 모드)를 코스트센터·자산클래스·오더·기존 자산 마스터로 검증하고 금액/% 규칙, 중복 저장, 예산 초과, 오더유형(I/S)을 점검하여 행별 오류 상태·메시지를 설정한다.* + +> 이 unit 의 조각 10개가 251/285줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드된 코스트센터를 중복 제거한 뒤 CSKS·CSKT·ONRKS 를 조인하여 관리회계영역 P_KOKRS 에서 현재 유효한(DATBI/DATAB) 코스트센터의 텍스트와 오브젝트번호를 GT_KOSTL_ST 로 조회한다. + +```abap + 279| CLEAR : LT_FORALL, LT_FORALL[]. + 280| LT_FORALL[] = GT_DATA[]. + 281| SORT LT_FORALL BY KOSTL. + 282| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 283| COMPARING KOSTL. + 284| + 285| SELECT A~KOSTL C~OBJNR B~KTEXT + 286| FROM CSKS AS A + 287| INNER JOIN CSKT AS B + 288| ON A~KOKRS = B~KOKRS + 289| AND A~KOSTL = B~KOSTL + 290| AND A~DATBI = B~DATBI + 291| INNER JOIN ONRKS AS C + 292| ON A~KOSTL = C~KOSTL + 293| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_ST + 294| FOR ALL ENTRIES IN LT_FORALL + 295| WHERE A~KOKRS = P_KOKRS + 296| AND A~KOSTL = LT_FORALL-KOSTL + 297| AND A~DATBI >= SY-DATUM + 298| AND A~DATAB <= SY-DATUM + 299| AND B~SPRAS = SY-LANGU. + 300| + 301| SORT GT_KOSTL_ST BY KOSTL OBJNR. +``` + +- **EN**: Selects valid cost centers with text and object number from CSKS joined with CSKT and ONRKS for the controlling area, valid on the current date. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [ONRKS](/tables/ONRKS.md) / write - +- SAP 객체: CSKS, CSKT, ONRKS +- 업무 키워드: 코스트센터 유효성, 코스트센터 텍스트, 오브젝트번호, 관리회계영역 +- English: Cost Center, Controlling Area, Object Number, Validity Date +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_KOSTL_ST`](#decl-zcoc0120top-95-gt_kostl_st), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L279-L301` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C1` + +#### [sql_select] 업로드된 자산클래스를 중복 제거한 뒤 ANKT 에서 로그온 언어의 자산클래스 텍스트를 GT_ANKT 로 조회한다. + +```abap + 303| CLEAR : LT_FORALL, LT_FORALL[]. + 304| LT_FORALL[] = GT_DATA[]. + 305| SORT LT_FORALL BY ANLKL. + 306| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 307| COMPARING ANLKL. + 308| + 309| SELECT * FROM ANKT + 310| INTO TABLE GT_ANKT + 311| FOR ALL ENTRIES IN LT_FORALL + 312| WHERE ANLKL = LT_FORALL-ANLKL + 313| AND SPRAS = SY-LANGU. + 314| + 315| SORT GT_ANKT BY ANLKL. +``` + +- **EN**: Selects asset class descriptions from ANKT for the distinct uploaded asset classes. +- 테이블(파서): read [ANKT](/tables/ANKT.md) / write - +- SAP 객체: ANKT +- 업무 키워드: 자산클래스 존재 확인, 자산클래스 텍스트 +- English: Asset Class, Asset Class Text +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_ANKT`](#decl-zcoc0120top-101-gt_ankt) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L303-L315` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C2` + +#### [sql_select] 업로드된 오더번호를 중복 제거한 뒤 AUFK 와 ONROR 를 조인해 오더 텍스트·오브젝트번호·오더유형(AUART)을 GT_AUFK_ST 로 조회한다. + +```abap + 317| CLEAR : LT_FORALL, LT_FORALL[]. + 318| LT_FORALL[] = GT_DATA[]. + 319| SORT LT_FORALL BY AUFNR. + 320| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 321| COMPARING AUFNR. + 322| + 323| SELECT A~AUFNR A~KTEXT B~OBJNR A~AUART + 324| FROM AUFK AS A INNER JOIN ONROR AS B + 325| ON A~AUFNR = B~AUFNR + 326| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK_ST + 327| FOR ALL ENTRIES IN LT_FORALL + 328| WHERE A~AUFNR = LT_FORALL-AUFNR. + 329| + 330| SORT GT_AUFK_ST BY AUFNR OBJNR. +``` + +- **EN**: Selects order text, object number and order type from AUFK joined with ONROR for the distinct uploaded orders. +- 테이블(파서): read [AUFK](/tables/AUFK.md), [ONROR](/tables/ONROR.md) / write - +- SAP 객체: AUFK, ONROR +- 업무 키워드: 오더 존재 확인, 오더유형, 오브젝트번호, 투자오더 +- English: Internal Order, Order Type, Object Number +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L317-L330` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C3` + +#### [sql_select] 업로드된 기존 자산번호를 중복 제거한 뒤 회사코드 P_BUKRS 의 ANLA 에서 자산번호와 자산내역(TXT50)을 GT_ANLA 로 조회한다. + +```abap + 332| CLEAR : LT_FORALL, LT_FORALL[]. + 333| LT_FORALL[] = GT_DATA[]. + 334| SORT LT_FORALL BY ANLN1. + 335| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 336| COMPARING ANLN1. + 337| + 338| SELECT ANLN1 TXT50 + 339| FROM ANLA + 340| INTO CORRESPONDING FIELDS OF TABLE GT_ANLA + 341| FOR ALL ENTRIES IN LT_FORALL + 342| WHERE BUKRS = P_BUKRS + 343| AND ANLN1 = LT_FORALL-ANLN1. + 344| + 345| SORT GT_ANLA BY ANLN1. +``` + +- **EN**: Selects existing fixed asset numbers and descriptions from ANLA for the company code. +- 테이블(파서): read [ANLA](/tables/ANLA.md) / write - +- SAP 객체: ANLA +- 업무 키워드: 기존 자산 확인, 자산내역, 본자산 +- English: Fixed Asset Master, Asset Description +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L332-L345` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C4` + +#### [validation] 각 업로드 행의 구분값(GUBUN)이 1(신규) 또는 2(기존)가 아니면 '구분값 필수' 오류로 상태를 적색 처리하고 메시지를 기록한다. + +```abap + 349| LOOP AT GT_DATA. + 350| + 351| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 352| + 353| IF NOT ( GT_DATA-GUBUN = '1' OR GT_DATA-GUBUN = '2' ). + 354| GT_DATA-MESSAGE = '신규 생성/기존 구분값은 필수 입니다.(1: 신규, 2: 기존)'(F05). + 355| GT_DATA-STATUS = GC_STATUS_RED. + 356| GV_UPLOAD_ERROR = 'X'. + 357| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. + 358| PERFORM ADD_DATA_MESSAGE USING 'E' + 359| '' + 360| GT_DATA-MESSAGE. + 361| ENDIF. +``` + +- **EN**: Validates that the creation type flag GUBUN is 1 (new) or 2 (existing) and flags an error otherwise. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 구분값 검증, 신규/기존 구분, 필수 입력 +- English: Validation, Mandatory Field +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L349-L361` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C5` + +#### [validation] 신규(1) 건은 코스트센터·자산클래스·자산내역 필수 여부와 CSKS/ANKT 존재를 검증하여 텍스트를 채우고 기존 자산번호를 지우며, 기존(2) 건은 ANLA 자산번호 존재를 검증하고 신규 생성 필드를 지운다. + +```abap + 363| IF GT_DATA-GUBUN = '1'. + 364| IF GT_DATA-KOSTL IS INITIAL OR GT_DATA-ANLKL IS INITIAL OR + 365| GT_DATA-TXT50 IS INITIAL. + 366| GT_DATA-MESSAGE = '자산 생성을 위한 필수 항목이 누락되었습니다.'(F06). + 367| GT_DATA-STATUS = GC_STATUS_RED. + 368| GV_UPLOAD_ERROR = 'X'. + 369| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 370| PERFORM SET_ERROR_FIELD_RED USING 'ANLKL'. + 371| PERFORM SET_ERROR_FIELD_RED USING 'TXT50'. + 372| PERFORM ADD_DATA_MESSAGE USING 'E' + 373| '' + 374| GT_DATA-MESSAGE. + 375| ENDIF. + 376| + 377| READ TABLE GT_KOSTL_ST WITH KEY KOSTL = GT_DATA-KOSTL + 378| BINARY SEARCH. + 379| + 380| IF SY-SUBRC NE 0. + 381| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다.'(F07). + 382| GT_DATA-STATUS = GC_STATUS_RED. + 383| GV_UPLOAD_ERROR = 'X'. + 384| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. + 385| PERFORM ADD_DATA_MESSAGE USING 'E' + 386| GT_DATA-KOSTL + 387| GT_DATA-MESSAGE. + 388| ELSE. + 389| GT_DATA-KOSTL_T = GT_KOSTL_ST-KTEXT. + 390| ENDIF. + 391| + 392| READ TABLE GT_ANKT WITH KEY ANLKL = GT_DATA-ANLKL + 393| BINARY SEARCH. + 394| + 395| IF SY-SUBRC NE 0. + 396| GT_DATA-MESSAGE = '존재하지 않는 자산클래스입니다.'(F08). + 397| GT_DATA-STATUS = GC_STATUS_RED. + 398| GV_UPLOAD_ERROR = 'X'. + 399| PERFORM SET_ERROR_FIELD_RED USING 'ANLKL'. + 400| PERFORM ADD_DATA_MESSAGE USING 'E' + 401| GT_DATA-ANLKL + 402| GT_DATA-MESSAGE. + 403| ELSE. + 404| GT_DATA-ANLKL_T = GT_ANKT-TXK20. + 405| ENDIF. + 406| + 407| " 신규 생성 내역이므로 기존 자산 필드는 CLEAR. + 408| CLEAR : GT_DATA-ANLN1. + 409| ELSEIF GT_DATA-GUBUN = '2'. + 410| READ TABLE GT_ANLA WITH KEY ANLN1 = GT_DATA-ANLN1 + 411| BINARY SEARCH. + 412| + 413| IF SY-SUBRC NE 0. + 414| GT_DATA-MESSAGE = '존재하지 않는 자산번호입니다.'(F09). + 415| GT_DATA-STATUS = GC_STATUS_RED. + 416| GV_UPLOAD_ERROR = 'X'. + 417| PERFORM SET_ERROR_FIELD_RED USING 'ANLN1'. + 418| PERFORM ADD_DATA_MESSAGE USING 'E' + 419| GT_DATA-ANLN1 + 420| GT_DATA-MESSAGE. + 421| ELSE. + 422| GT_DATA-ANLN1_T = GT_ANLA-TXT50. + 423| ENDIF. + 424| + 425| " 기존 자산 내역이므로 신규 생성 내역은 삭제. + 426| CLEAR : GT_DATA-ANLKL, GT_DATA-TXT50, GT_DATA-KOSTL. + 427| ENDIF. +``` + +- **EN**: For new assets checks mandatory cost center, asset class and description and their existence in CSKS/ANKT; for existing assets checks the asset number in ANLA, clearing the irrelevant fields. +- 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS, ANKT, ANLA +- 업무 키워드: 코스트센터 존재, 자산클래스 존재, 자산번호 존재, 필수 항목 검증, 신규 자산, 기존 자산 +- English: Cost Center, Asset Class, Fixed Asset, Master Data Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`GT_KOSTL_ST`](#decl-zcoc0120top-95-gt_kostl_st), [`GT_ANKT`](#decl-zcoc0120top-101-gt_ankt), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L363-L427` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C6` + +#### [validation] 금액(BETRR)/정산%(PROZS) 중 하나는 필수이고 동시에 입력되면 안 됨을 CHECK_VALUE_FIELD 로 검사하며, 오더번호가 AUFK 에 존재하는지 확인하여 오더 텍스트·오브젝트번호·오더유형을 채운다. + +```abap + 429| IF GT_DATA-BETRR IS INITIAL AND GT_DATA-PROZS IS INITIAL. + 430| GT_DATA-MESSAGE = '금액, 정산% 중에 하나는 필수 입력입니다.'(F10). + 431| GT_DATA-STATUS = GC_STATUS_RED. + 432| GV_UPLOAD_ERROR = 'X'. + 433| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 434| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 435| PERFORM ADD_DATA_MESSAGE USING 'E' + 436| '' + 437| GT_DATA-MESSAGE. + 438| ENDIF. + 439| + 440| READ TABLE GT_AUFK_ST WITH KEY AUFNR = GT_DATA-AUFNR + 441| BINARY SEARCH. + 442| + 443| IF SY-SUBRC NE 0. + 444| GT_DATA-MESSAGE = '존재하지 않는 오더번호입니다.'(F11). + 445| GT_DATA-STATUS = GC_STATUS_RED. + 446| GV_UPLOAD_ERROR = 'X'. + 447| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 448| PERFORM ADD_DATA_MESSAGE USING 'E' + 449| GT_DATA-AUFNR + 450| GT_DATA-MESSAGE. + 451| ELSE. + 452| GT_DATA-AUFNR_T = GT_AUFK_ST-KTEXT. + 453| GT_DATA-OBJNR = GT_AUFK_ST-OBJNR. + 454| GT_DATA-AUART = GT_AUFK_ST-AUART. + 455| ENDIF. + 456| + 457| PERFORM CHECK_VALUE_FIELD USING LV_ERR. + 458| + 459| IF LV_ERR = 'X'. + 460| GT_DATA-MESSAGE = '금액, 정산% 하나만 입력되어야 합니다.'(F12). + 461| GT_DATA-STATUS = GC_STATUS_RED. + 462| GV_UPLOAD_ERROR = 'X'. + 463| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 464| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 465| PERFORM ADD_DATA_MESSAGE USING 'E' + 466| '' + 467| GT_DATA-MESSAGE. + 468| ENDIF. +``` + +- **EN**: Validates that exactly one of settlement amount or percentage is entered and that the order exists in AUFK, filling order text, object number and order type. +- 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, CHECK_VALUE_FIELD, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: AUFK +- 업무 키워드: 금액/비율 택일, 오더 존재 확인, 오더 텍스트, 필수 입력 +- English: Settlement Amount, Settlement Percentage, Internal Order, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st), [`LV_ERR`](#decl-zcoc0120f01-265-lv_err) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L429-L468` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C7` + +#### [validation] 오더·자산번호 조합이 이미 ZCOT0040 에 저장되어 있으면 중복 오류 처리하고, 같은 오더의 정산% 합계가 0 또는 100이 아니면 '합은 100%' 오류로 표시한다. + +```abap + 470| READ TABLE GT_ZCOT0040 WITH KEY + 471| AUFNR = GT_DATA-AUFNR + 472| ANLN1 = GT_DATA-ANLN1 + 473| BINARY SEARCH. + 474| + 475| IF SY-SUBRC EQ 0. + 476| GT_DATA-MESSAGE = '이미 저장된 자산 번호 입니다.'(F13). + 477| GT_DATA-STATUS = GC_STATUS_RED. + 478| GV_UPLOAD_ERROR = 'X'. + 479| PERFORM SET_ERROR_FIELD_RED USING 'ANLN1'. + 480| PERFORM ADD_DATA_MESSAGE USING 'E' + 481| '' + 482| GT_DATA-MESSAGE. + 483| ENDIF. + 484| + 485| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. + 486| LV_PERCENT = LV_PERCENT + LT_CHECK-PROZS. + 487| ENDLOOP. + 488| + 489| IF ( LV_PERCENT NE 100 ) AND ( LV_PERCENT NE 0 ). + 490| GT_DATA-MESSAGE = '입력된 %의 합은 100%이어야 합니다.'(F14). + 491| GT_DATA-STATUS = GC_STATUS_RED. + 492| GV_UPLOAD_ERROR = 'X'. + 493| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 494| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 495| PERFORM ADD_DATA_MESSAGE USING 'E' + 496| '' + 497| GT_DATA-MESSAGE. + 498| ENDIF. +``` + +- **EN**: Checks for already saved order/asset combinations in ZCOT0040 and validates that settlement percentages per order sum to 100 percent. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0040 +- 업무 키워드: 중복 저장 검증, 정산 비율 합계, 100% 검증, 오더별 합계 +- English: Duplicate Check, Settlement Percentage, Internal Order +- 정의부(복사 시 함께 필요): [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`LT_CHECK`](#decl-zcoc0120f01-266-lt_check), [`LV_PERCENT`](#decl-zcoc0120f01-267-lv_percent) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L470-L498` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C8` + +#### [fm_call] 같은 오더의 정산금액 합계를 구해 Z_CO_CHECK_BUDGET 으로 회사코드·오더·금액·통화 기준 오더 예산 초과 여부를 점검하고 결과코드 'E'면 오류 메시지를 기록한다. + +```abap + 500| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. + 501| LV_BUDGET = LV_BUDGET + LT_CHECK-BETRR. + 502| ENDLOOP. + 503| + 504| CALL FUNCTION 'Z_CO_CHECK_BUDGET' + 505| EXPORTING + 506| I_BUKRS = P_BUKRS + 507| I_BUDAT = SY-DATUM + 508| * I_KSTAR = + 509| * I_KOSTL = + 510| I_AUFNR = GT_DATA-AUFNR + 511| I_DMBTR = LV_BUDGET + 512| I_WAERS = GV_WAERS + 513| IMPORTING + 514| E_RESULTCODE = LV_CODE + 515| E_RESULTMSG = LV_MSG. + 516| + 517| IF LV_CODE = 'E'. + 518| GT_DATA-MESSAGE = LV_MSG. + 519| * GT_DATA-MESSAGE = '오더 예산이 초과되었습니다.'(F29). + 520| GT_DATA-STATUS = GC_STATUS_RED. + 521| GV_UPLOAD_ERROR = 'X'. + 522| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 523| PERFORM ADD_DATA_MESSAGE USING 'E' + 524| '' + 525| GT_DATA-MESSAGE. + 526| ENDIF. +``` + +- **EN**: Sums settlement amounts per order and calls Z_CO_CHECK_BUDGET to verify the order budget is not exceeded, flagging an error if so. +- 호출(파서): Z_CO_CHECK_BUDGET, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: Z_CO_CHECK_BUDGET +- 업무 키워드: 오더 예산 점검, 예산 초과, 정산금액 합계, 가용성 관리 +- English: Budget Check, Availability Control, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_CHECK`](#decl-zcoc0120f01-266-lt_check), [`LV_BUDGET`](#decl-zcoc0120f01-268-lv_budget), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_CODE`](#decl-zcoc0120f01-269-lv_code), [`LV_MSG`](#decl-zcoc0120f01-270-lv_msg), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L500-L526` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C9` + +#### [validation] 오더유형(AUART) 첫 글자가 I(투자오더) 또는 S(자가소비오더)가 아니면 사용 불가 오류로 표시하고 검증 결과를 GT_DATA 에 반영한다. + +```abap + 528| IF GT_DATA-AUART IS NOT INITIAL. + 529| IF NOT ( GT_DATA-AUART+0(1) = 'I' OR GT_DATA-AUART+0(1) = 'S' ). + 530| GT_DATA-MESSAGE = '투자오더(I) 와 자가소비오더(S)만 사용가능합니다.'(F27). + 531| GT_DATA-STATUS = GC_STATUS_RED. + 532| GV_UPLOAD_ERROR = 'X'. + 533| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 534| PERFORM ADD_DATA_MESSAGE USING 'E' + 535| '' + 536| GT_DATA-MESSAGE. + 537| ENDIF. + 538| ENDIF. + 539| + 540| MODIFY GT_DATA. +``` + +- **EN**: Restricts processing to investment (I) and self-consumption (S) order types and updates the row with validation results. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: AUFK +- 업무 키워드: 오더유형 검증, 투자오더, 자가소비오더 +- English: Order Type, Investment Order, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L528-L540` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C10` + +### FORM CHECK_VALUE_FIELD — `ZCOC0120F01` L893-L922 (30줄) + +*현재 GT_DATA 행에서 정산금액(BETRR)과 정산%(PROZS)가 둘 다 입력되었는지 확인하여 오류 플래그 PV_ERR 를 반환한다.* + +> 이 unit 의 조각 1개가 19/30줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 필드카탈로그의 BETRR/PROZS 필드를 동적으로 참조해 값이 있는 필드 수를 세고 2개 이상이면 금액과 %가 동시에 입력된 오류로 PV_ERR='X' 를 설정한다. + +```abap + 902| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 903| WHERE FIELDNAME = 'BETRR' OR + 904| FIELDNAME = 'PROZS'. + 905| + 906| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 907| INTO LV_FIELD. + 908| + 909| ASSIGN (LV_FIELD) TO . + 910| + 911| CHECK SY-SUBRC EQ 0. + 912| + 913| IF IS NOT INITIAL. + 914| ADD 1 TO LV_CNT. + 915| ENDIF. + 916| ENDLOOP. + 917| + 918| IF LV_CNT >= 2. + 919| PV_ERR = 'X'. + 920| ENDIF. +``` + +- **EN**: Counts filled values among settlement amount and percentage fields dynamically and flags an error when both are entered. +- 업무 키워드: 금액/비율 동시 입력 검증, 정산금액, 정산 비율, 택일 검사 +- English: Settlement Amount, Settlement Percentage, Validation +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0120top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-895-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0120f01-896-lv_field), [``](#decl-zcoc0120f01-898--fs-), [`LV_CNT`](#decl-zcoc0120f01-897-lv_cnt) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L902-L920` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CHECK_VALUE_FIELD#C1` + +### FORM SELECT_COSP — `ZCOC0120F01` L1536-L1614 (79줄) + +*오더 오브젝트번호별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 의 12개월 합계를 조회하여 GT_DATA-WKG_SUM(실적 누계)에 채운다.* + +> 이 unit 의 조각 2개가 59/79줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 값유형 범위(04 실제, 11 통계실제, 22 약정, 60 임시)와 버전 000, 오더 오브젝트번호 범위를 만들어 COSP 에서 연도 P_GJAHR 의 월별 금액 WKG001~WKG012 를 OBJNR 별 SUM 으로 조회한다. + +```abap + 1554| ADD_RANGE_EQ : LR_WRTTP '04'. " 실제 + 1555| ADD_RANGE_EQ : LR_WRTTP '11'. " 통계실제 + 1556| ADD_RANGE_EQ : LR_WRTTP '22'. " 약정 + 1557| ADD_RANGE_EQ : LR_WRTTP '60'. " 임시 + 1558| + 1559| ADD_RANGE_EQ : LR_VERSN '000'. + 1560| + 1561| CLEAR : LT_FORALL, LT_FORALL[]. + 1562| LT_FORALL[] = GT_DATA[]. + 1563| SORT LT_FORALL BY OBJNR. + 1564| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 1565| COMPARING OBJNR. + 1566| + 1567| LOOP AT LT_FORALL. + 1568| ADD_RANGE_EQ : LR_OBJNR LT_FORALL-OBJNR. + 1569| ENDLOOP. + 1570| + 1571| SELECT + 1572| OBJNR + 1573| SUM( WKG001 ) AS WKG001 + 1574| SUM( WKG002 ) AS WKG002 + 1575| SUM( WKG003 ) AS WKG003 + 1576| SUM( WKG004 ) AS WKG004 + 1577| SUM( WKG005 ) AS WKG005 + 1578| SUM( WKG006 ) AS WKG006 + 1579| SUM( WKG007 ) AS WKG007 + 1580| SUM( WKG008 ) AS WKG008 + 1581| SUM( WKG009 ) AS WKG009 + 1582| SUM( WKG010 ) AS WKG010 + 1583| SUM( WKG011 ) AS WKG011 + 1584| SUM( WKG012 ) AS WKG012 + 1585| FROM COSP + 1586| INTO CORRESPONDING FIELDS OF TABLE GT_COSP + 1587| WHERE LEDNR = '00' + 1588| AND OBJNR IN LR_OBJNR + 1589| AND GJAHR = P_GJAHR + 1590| AND WRTTP IN LR_WRTTP + 1591| AND VERSN IN LR_VERSN + 1592| * AND KSTAR IN GR_KSTAR + 1593| GROUP BY OBJNR. + 1594| + 1595| SORT GT_COSP BY OBJNR. +``` + +- **EN**: Selects period totals WKG001-WKG012 from COSP grouped by object number for actual, statistical, commitment and provisional value types (WRTTP 04/11/22/60) in version 000 for the fiscal year. +- 테이블(파서): read [COSP](/tables/COSP.md) / write - +- SAP 객체: COSP, ONROR +- 업무 키워드: 실적 누계, 약정, 오더 실적, 값유형, 월별 합계 +- English: COSP, Actual Costs, Commitment, Value Type, Object Number +- 정의부(복사 시 함께 필요): [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcoc0120f01-1546-lr_wrttp), [`LR_VERSN`](#decl-zcoc0120f01-1547-lr_versn), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1537-lt_forall), [`LR_OBJNR`](#decl-zcoc0120f01-1539-lr_objnr), [`GT_COSP`](#decl-zcoc0120top-115-gt_cosp), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1554-L1595` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_COSP#C1` + +#### [aggregation] 각 행의 오브젝트번호에 해당하는 GT_COSP 의 WKG001~WKG012 를 동적 필드 할당으로 합산해 오더 실적 누계 WKG_SUM 을 GT_DATA에 반영한다. + +```abap + 1597| LOOP AT GT_DATA. + 1598| LOOP AT GT_COSP WHERE OBJNR = GT_DATA-OBJNR. + 1599| LV_CNT = 1. + 1600| DO 12 TIMES. + 1601| LV_NPERBL = SY-INDEX. + 1602| CONCATENATE 'GT_COSP-WKG' LV_NPERBL + 1603| INTO LV_FIELD. + 1604| ASSIGN (LV_FIELD) TO . + 1605| IF SY-SUBRC EQ 0. + 1606| LV_SUM = LV_SUM + . + 1607| ENDIF. + 1608| ENDDO. + 1609| ENDLOOP. + 1610| GT_DATA-WKG_SUM = LV_SUM. + 1611| CLEAR : LV_SUM. + 1612| MODIFY GT_DATA. + 1613| ENDLOOP. +``` + +- **EN**: Sums the twelve period fields of the matching COSP totals dynamically and stores the cumulative actual amount WKG_SUM per row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: COSP +- 업무 키워드: 누계 합산, 12개월 합계, 동적 필드, 실적 +- English: Cumulative Actuals, Period Totals, Field Symbol +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GT_COSP`](#decl-zcoc0120top-115-gt_cosp), [`LV_CNT`](#decl-zcoc0120f01-1540-lv_cnt), [`LV_NPERBL`](#decl-zcoc0120f01-1541-lv_nperbl), [`LV_FIELD`](#decl-zcoc0120f01-1542-lv_field), [``](#decl-zcoc0120f01-1543--fs_field-), [`LV_SUM`](#decl-zcoc0120f01-1538-lv_sum) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1597-L1613` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_COSP#C2` + +### FORM EDIT_DATA_A — `ZCOC0120F01` L814-L831 (18줄) + +*업로드 데이터에 구분 텍스트(자산신규생성/기존 자산)와 통화·단위를 채워 ALV 표시용으로 편집한다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 구분값 1/2에 따라 GUBUN_T 를 '자산신규생성'/'기존 자산'으로 설정하고 통화(GV_WAERS)와 단위(GC_MEINS)를 각 행에 채운다. + +```abap + 817| LOOP AT GT_DATA. + 818| + 819| IF GT_DATA-GUBUN = '1'. + 820| GT_DATA-GUBUN_T = '자산신규생성'(F18). + 821| ELSEIF GT_DATA-GUBUN = '2'. + 822| GT_DATA-GUBUN_T = '기존 자산'(F19). + 823| ENDIF. + 824| + 825| GT_DATA-WAERS = GV_WAERS. + 826| GT_DATA-MEINS = GC_MEINS. + 827| + 828| MODIFY GT_DATA. + 829| ENDLOOP. +``` + +- **EN**: Sets the description for asset creation type (new/existing) and fills currency and unit of measure on each upload row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 구분 텍스트, 신규 자산, 기존 자산, 통화, 단위 +- English: Asset Type, Currency, Unit of Measure +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcoc0120top-35-gc_meins) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L817-L829` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#EDIT_DATA_A#C1` + +### FORM PROCESS_SETTLEMENT — `ZCOC0120F01` L1398-L1406 (9줄) + +*정산규칙 모드의 처리 흐름으로 SELECT_DATA(ZCOT0040 조회)·SELECT_COSP(실적 누계)·VALIDATION_CHECK_C(검증)를 순서대로 수행하고 점검 완료 메시지를 낸다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 저장 내역 조회, COSP 실적/약정 누계 조회, 정산규칙 유효성 검증을 차례로 수행하고 새로고침 플래그 설정·변경 플래그 해제 후 '점검이 완료되었습니다' 메시지를 표시한다. + +```abap + 1399| PERFORM SELECT_DATA. + 1400| PERFORM SELECT_COSP. + 1401| PERFORM VALIDATION_CHECK_C. + 1402| + 1403| GV_REFRESH = 'X'. + 1404| CLEAR : GV_CHANGED. + 1405| MESSAGE S000 WITH '점검이 완료되었습니다.'(F24). +``` + +- **EN**: Orchestrates settlement mode processing: read saved data, read COSP actuals, validate, then reset change flag and show completion message. +- 호출(파서): SELECT_DATA, SELECT_COSP, VALIDATION_CHECK_C +- SAP 객체: ZCOT0040, COSP +- 업무 키워드: 정산규칙 점검, 처리 흐름, 실적 누계, 유효성 검증 +- English: Settlement Rule, Validation, Process Flow +- 정의부(복사 시 함께 필요): [`GV_REFRESH`](#decl-zco_common-45-gv_refresh), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1399-L1405` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#PROCESS_SETTLEMENT#C1` + +### FORM SELECT_DATA — `ZCOC0120F01` L721-L770 (50줄) + +*정산규칙 모드에서 ZCOT0040 저장 내역을 상태(미처리/실패/성공)로 필터링하고 ONROR 오브젝트번호를 붙여 GT_DATA를 구성한다.* + +> 이 unit 의 조각 2개가 42/50줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 선택 옵션(P_OPEN 미처리/P_FAIL 실패/P_SUCC 성공)에 따라 GT_ZCOT0040 에서 해당 정산 상태(SETTL_SUCCESS)가 아닌 건을 삭제하여 조회 대상을 좁힌다. + +```abap + 726| IF P_OPEN = 'X'. + 727| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE SPACE. + 728| ELSEIF P_FAIL = 'X'. + 729| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE 'E'. + 730| ELSEIF P_SUCC = 'X'. + 731| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE 'S'. + 732| ENDIF. + 733| + 734| SORT GT_ZCOT0040 BY AUFNR ANLN1. + 735| + 736| CHECK GT_ZCOT0040[] IS NOT INITIAL. +``` + +- **EN**: Filters the ZCOT0040 records by settlement status (open, failed, successful) according to the selected radio button. +- SAP 객체: ZCOT0040 +- 업무 키워드: 상태 필터, 미처리, 실패, 성공, 정산 상태 +- English: Settlement Status, Filter, Selection Option +- 정의부(복사 시 함께 필요): [`P_OPEN`](#decl-zcoc0120top-171-p_open), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`P_FAIL`](#decl-zcoc0120top-176-p_fail), [`P_SUCC`](#decl-zcoc0120top-181-p_succ) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L726-L736` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_DATA#C1` + +#### [sql_select] ONROR 에서 오더별 오브젝트번호(OBJNR)를 조회한 뒤 GT_ZCOT0040 을 GT_DATA 로 옮기며 정산 성공 여부에 따라 상태 아이콘(적/녹/초기)을 설정하고 OBJNR을 붙인다. + +```abap + 738| SELECT AUFNR OBJNR + 739| FROM ONROR + 740| INTO CORRESPONDING FIELDS OF TABLE LT_AUFK_OBJNR + 741| FOR ALL ENTRIES IN GT_ZCOT0040 + 742| WHERE AUFNR = GT_ZCOT0040-AUFNR. + 743| + 744| SORT LT_AUFK_OBJNR BY AUFNR. + 745| + 746| LOOP AT GT_ZCOT0040. + 747| MOVE-CORRESPONDING GT_ZCOT0040 TO GT_DATA. + 748| + 749| IF GT_DATA-SETTL_SUCCESS = 'E'. + 750| GT_DATA-STATUS = GC_STATUS_RED. + 751| ELSEIF GT_DATA-SETTL_SUCCESS = 'S'. + 752| GT_DATA-STATUS = GC_STATUS_GREEN. + 753| ELSE. + 754| GT_DATA-STATUS = GC_STATUS_INIT. + 755| ENDIF. + 756| + 757| READ TABLE LT_AUFK_OBJNR WITH KEY AUFNR = GT_DATA-AUFNR + 758| BINARY SEARCH. + 759| + 760| IF SY-SUBRC EQ 0. + 761| GT_DATA-OBJNR = LT_AUFK_OBJNR-OBJNR. + 762| ENDIF. + 763| + 764| APPEND GT_DATA. CLEAR : GT_DATA. + 765| CLEAR : LT_AUFK_OBJNR. + 766| ENDLOOP. + 767| + 768| SORT GT_DATA BY AUFNR. +``` + +- **EN**: Reads object numbers from ONROR for the orders and builds GT_DATA from ZCOT0040 records with status icon derived from settlement success flag. +- 테이블(파서): read [ONROR](/tables/ONROR.md) / write - +- SAP 객체: ONROR, ZCOT0040 +- 업무 키워드: 오브젝트번호 조회, 상태 아이콘, 정산 성공 여부, 조회 데이터 구성 +- English: Object Number, Internal Order, Status Icon +- 정의부(복사 시 함께 필요): [`LT_AUFK_OBJNR`](#decl-zcoc0120f01-722-lt_aufk_objnr), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L738-L768` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_DATA#C2` + +### FORM VALIDATION_CHECK_C — `ZCOC0120F01` L1255-L1389 (135줄) + +*정산규칙 모드에서 저장 내역의 오더(AUFK/ONROR)·자산(ANLA) 존재를 확인하고 오더별 정산% 합계 100%, 금액/% 택일, Z_CO_CHECK_BUDGET 예산 초과를 검증하여 상태·메시지를 설정한다.* + +> 이 unit 의 조각 5개가 113/135줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_DATA의 오더번호를 중복 제거한 뒤 AUFK 와 ONROR 를 조인하여 오더 존재 여부·오더 텍스트(KTEXT)·오브젝트번호(OBJNR)를 GT_AUFK_ST 로 조회한다. + +```abap + 1264| CLEAR : LT_FORALL, LT_FORALL[]. + 1265| LT_FORALL[] = GT_DATA[]. + 1266| SORT LT_FORALL BY AUFNR. + 1267| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 1268| COMPARING AUFNR. + 1269| + 1270| SELECT A~AUFNR A~KTEXT B~OBJNR + 1271| FROM AUFK AS A INNER JOIN ONROR AS B + 1272| ON A~AUFNR = B~AUFNR + 1273| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK_ST + 1274| FOR ALL ENTRIES IN LT_FORALL + 1275| WHERE A~AUFNR = LT_FORALL-AUFNR. + 1276| + 1277| SORT GT_AUFK_ST BY AUFNR OBJNR. +``` + +- **EN**: Selects order text and object number from AUFK joined with ONROR for the distinct orders in GT_DATA to verify order existence. +- 테이블(파서): read [AUFK](/tables/AUFK.md), [ONROR](/tables/ONROR.md) / write - +- SAP 객체: AUFK, ONROR +- 업무 키워드: 오더 존재 확인, 오더 텍스트, 오브젝트번호, 투자오더 +- English: Internal Order, Object Number, Order Master +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1256-lt_forall), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1264-L1277` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C1` + +#### [sql_select] 자산번호를 중복 제거한 뒤 회사코드 P_BUKRS 의 ANLA 에서 자산번호·자산내역(TXT50)을 GT_ANLA 로 조회하여 자산 존재를 확인한다. + +```abap + 1278| CLEAR : LT_FORALL, LT_FORALL[]. + 1279| LT_FORALL[] = GT_DATA[]. + 1280| SORT LT_FORALL BY ANLN1. + 1281| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 1282| COMPARING ANLN1. + 1283| + 1284| SELECT ANLN1 TXT50 + 1285| FROM ANLA + 1286| INTO CORRESPONDING FIELDS OF TABLE GT_ANLA + 1287| FOR ALL ENTRIES IN LT_FORALL + 1288| WHERE BUKRS = P_BUKRS + 1289| AND ANLN1 = LT_FORALL-ANLN1. + 1290| + 1291| SORT GT_DATA BY AUFNR ANLN1. +``` + +- **EN**: Selects asset number and description from ANLA for the company code to verify that the fixed assets exist. +- 테이블(파서): read [ANLA](/tables/ANLA.md) / write - +- SAP 객체: ANLA +- 업무 키워드: 자산 존재 확인, 자산내역, 본자산, 회사코드 +- English: Fixed Asset Master, Asset Description, Company Code +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1256-lt_forall), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1278-L1291` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C2` + +#### [validation] 각 행에 오더 텍스트·오브젝트번호·자산내역을 붙이고 같은 오더의 정산%(PROZS) 합계를 계산해 0 또는 100이 아니면 '입력된 %의 합은 100%이어야 합니다' 오류로 PROZS/AUFNR 필드를 적색 표시한다. + +```abap + 1297| LOOP AT GT_DATA. + 1298| IF P_SUCC NE 'X'. + 1299| GT_DATA-STATUS = GC_STATUS_INIT. + 1300| ENDIF. + 1301| READ TABLE GT_AUFK_ST WITH KEY AUFNR = GT_DATA-AUFNR + 1302| BINARY SEARCH. + 1303| + 1304| IF SY-SUBRC EQ 0. + 1305| GT_DATA-AUFNR_T = GT_AUFK_ST-KTEXT. + 1306| GT_DATA-OBJNR = GT_AUFK_ST-OBJNR. + 1307| ENDIF. + 1308| + 1309| READ TABLE GT_ANLA WITH KEY ANLN1 = GT_DATA-ANLN1 + 1310| BINARY SEARCH. + 1311| + 1312| IF SY-SUBRC EQ 0. + 1313| GT_DATA-ANLN1_T = GT_ANLA-TXT50. + 1314| ENDIF. + 1315| + 1316| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. + 1317| LV_PERCENT = LV_PERCENT + LT_CHECK-PROZS. + 1318| ENDLOOP. + 1319| + 1320| IF ( LV_PERCENT NE 100 ) AND ( LV_PERCENT NE 0 ). + 1321| GT_DATA-MESSAGE = '입력된 %의 합은 100%이어야 합니다.'(F14). + 1322| GT_DATA-STATUS = GC_STATUS_RED. + 1323| GV_UPLOAD_ERROR = 'X'. + 1324| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 1325| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. + 1326| PERFORM ADD_DATA_MESSAGE USING 'E' + 1327| '' + 1328| GT_DATA-MESSAGE. + 1329| ENDIF. +``` + +- **EN**: Enriches rows with order and asset texts and validates that the settlement percentage sum per order equals 100 percent, flagging errors otherwise. +- 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: COBRB +- 업무 키워드: 정산 비율 합계, 100% 검증, 오더별 합계, 오류 표시 +- English: Settlement Percentage, Validation, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`P_SUCC`](#decl-zcoc0120top-181-p_succ), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`LT_CHECK`](#decl-zcoc0120f01-1257-lt_check), [`LV_PERCENT`](#decl-zcoc0120f01-1258-lv_percent), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1297-L1329` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C3` + +#### [validation] CHECK_VALUE_FIELD 로 금액(BETRR)과 정산%(PROZS)가 동시에 입력되었는지, 그리고 둘 다 비어 있는지 검사하여 각각 '하나만 입력'/'하나는 필수' 오류 메시지와 적색 상태를 설정한다. + +```abap + 1331| PERFORM CHECK_VALUE_FIELD USING LV_ERR. + 1332| + 1333| IF LV_ERR = 'X'. + 1334| GT_DATA-MESSAGE = '금액, 정산% 하나만 입력되어야 합니다.'(F12). + 1335| GT_DATA-STATUS = GC_STATUS_RED. + 1336| GV_UPLOAD_ERROR = 'X'. + 1337| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 1338| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 1339| PERFORM ADD_DATA_MESSAGE USING 'E' + 1340| '' + 1341| GT_DATA-MESSAGE. + 1342| ENDIF. + 1343| + 1344| IF GT_DATA-BETRR IS INITIAL AND GT_DATA-PROZS IS INITIAL. + 1345| GT_DATA-MESSAGE = '금액, 정산% 중에 하나는 필수 입력입니다.'(F10). + 1346| GT_DATA-STATUS = GC_STATUS_RED. + 1347| GV_UPLOAD_ERROR = 'X'. + 1348| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 1349| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. + 1350| PERFORM ADD_DATA_MESSAGE USING 'E' + 1351| '' + 1352| GT_DATA-MESSAGE. + 1353| ENDIF. +``` + +- **EN**: Validates that exactly one of settlement amount BETRR or percentage PROZS is entered, raising an error when both or neither are filled. +- 호출(파서): CHECK_VALUE_FIELD, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 금액/비율 택일, 필수 입력 검증, 정산 금액, 정산 비율 +- English: Settlement Amount, Settlement Percentage, Mandatory Check +- 정의부(복사 시 함께 필요): [`LV_ERR`](#decl-zcoc0120f01-1259-lv_err), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1331-L1353` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C4` + +#### [fm_call] 같은 오더의 정산금액(BETRR) 합계를 구해 Z_CO_CHECK_BUDGET 에 회사코드·전기일·오더·금액·통화를 넘겨 오더 예산 초과 여부를 점검하고 결과코드 'E'면 오류 메시지와 적색 상태로 GT_DATA를 갱신한다. + +```abap + 1355| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. + 1356| LV_BUDGET = LV_BUDGET + LT_CHECK-BETRR. + 1357| ENDLOOP. + 1358| + 1359| CALL FUNCTION 'Z_CO_CHECK_BUDGET' + 1360| EXPORTING + 1361| I_BUKRS = P_BUKRS + 1362| I_BUDAT = SY-DATUM + 1363| * I_KSTAR = + 1364| * I_KOSTL = + 1365| I_AUFNR = GT_DATA-AUFNR + 1366| I_DMBTR = LV_BUDGET + 1367| I_WAERS = GV_WAERS + 1368| IMPORTING + 1369| E_RESULTCODE = LV_CODE + 1370| E_RESULTMSG = LV_MSG. + 1371| + 1372| IF LV_CODE = 'E'. + 1373| GT_DATA-MESSAGE = LV_MSG. + 1374| * GT_DATA-MESSAGE = '오더 예산이 초과되었습니다.'(F29). + 1375| GT_DATA-STATUS = GC_STATUS_RED. + 1376| GV_UPLOAD_ERROR = 'X'. + 1377| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. + 1378| PERFORM ADD_DATA_MESSAGE USING 'E' + 1379| '' + 1380| GT_DATA-MESSAGE. + 1381| ENDIF. + 1382| + 1383| MODIFY GT_DATA. +``` + +- **EN**: Sums the settlement amounts per order and calls Z_CO_CHECK_BUDGET to check order budget availability, marking the row as error when the budget is exceeded. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): Z_CO_CHECK_BUDGET, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: Z_CO_CHECK_BUDGET +- 업무 키워드: 오더 예산 점검, 예산 초과, 정산금액 합계, 가용성 관리 +- English: Budget Check, Availability Control, Internal Order, Settlement Amount +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_CHECK`](#decl-zcoc0120f01-1257-lt_check), [`LV_BUDGET`](#decl-zcoc0120f01-1260-lv_budget), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_CODE`](#decl-zcoc0120f01-1261-lv_code), [`LV_MSG`](#decl-zcoc0120f01-1262-lv_msg), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1355-L1383` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C5` + +### EVENT END-OF-SELECTION — `ZCOC0120` L55-L66 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 56| IF SY-BATCH NE 'X'. + 57| IF GT_DATA[] IS NOT INITIAL. + 58| CALL SCREEN 100. + 59| ELSE. + 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 61| ENDIF. + 62| ELSE. + 63| IF GT_DATA[] IS NOT INITIAL. + 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 65| ENDIF. + 66| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data) +- 위치: `abap://ZCOC0120/ZCOC0120#L56-L66` · confidence 0.85 · `ZCOC0120#ZCOC0120#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0120/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0120/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0120/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0120/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0120/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) +- 위치: `abap://ZCOC0120/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM DATA_CHANGED_MODIFY — `ZCOC0120F01` L1414-L1492 (79줄) + +*ALV에서 정산금액(BETRR)·정산%(PROZS) 셀이 수정되면 GT_DATA에 반영하고 즉시 ZCOT0040 을 UPDATE 하며 변경 플래그(GV_CHANGED)를 설정한다.* + +> 이 unit 의 조각 2개가 56/79줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 변경된 셀(MT_GOOD_CELLS)마다 해당 GT_DATA 행을 읽고 GET_CELL_VALUE 로 새 값을 필드심볼에 받아 MODIFY_CELL 로 ALV 셀 값을 반영한다. + +```abap + 1434| LOOP AT P_DATA_CHANGED->MT_GOOD_CELLS INTO LS_LVC_MODI. + 1435| LV_IDX = LS_LVC_MODI-ROW_ID. + 1436| READ TABLE GT_DATA INTO LS_DATA INDEX LV_IDX. + 1437| ASSIGN COMPONENT LS_LVC_MODI-FIELDNAME + 1438| OF STRUCTURE GT_DATA TO . + 1439| Z_GET_CELL_VALUE : LS_LVC_MODI-FIELDNAME. + 1440| CALL METHOD P_DATA_CHANGED->MODIFY_CELL + 1441| EXPORTING + 1442| I_ROW_ID = LS_LVC_MODI-ROW_ID + 1443| I_FIELDNAME = LS_LVC_MODI-FIELDNAME + 1444| I_VALUE = LS_LVC_MODI-VALUE. + 1445| +``` + +- **EN**: Reads each changed ALV cell via CL_ALV_CHANGED_DATA_PROTOCOL, fetches the new value and applies it to the grid cell. +- 호출(파서): P_DATA_CHANGED->MT_GOOD_CELLS, P_DATA_CHANGED->MODIFY_CELL +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL +- 업무 키워드: ALV 셀 변경, 변경 셀 읽기, 값 반영 +- English: ALV Data Changed, Cell Value, Editable Grid +- 정의부(복사 시 함께 필요): [`LS_LVC_MODI`](#decl-zcoc0120f01-1416-ls_lvc_modi), [`LV_IDX`](#decl-zcoc0120f01-1419-lv_idx), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-1420-ls_data), [``](#decl-zcoc0120f01-1421--fs_data-) +- 선언을 못 찾은 이름: Z_GET_CELL_VALUE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1434-L1445` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#DATA_CHANGED_MODIFY#C1` + +#### [db_write] 수정 필드가 BETRR(정산금액) 또는 PROZS(정산%)이면 관리회계영역·회사코드·연도·기간·오더·자산번호 키로 ZCOT0040 을 UPDATE 하고 성공 시 COMMIT, 실패 시 ROLLBACK 하며 재검증 필요 플래그 GV_CHANGED 를 세운다. + +```abap + 1446| IF SY-SUBRC EQ 0. + 1447| CASE LS_LVC_MODI-FIELDNAME. + 1448| WHEN 'BETRR'. + 1449| LS_DATA-BETRR = . + 1450| + 1451| UPDATE ZCOT0040 SET + 1452| BETRR = LS_DATA-BETRR + 1453| WHERE KOKRS = P_KOKRS + 1454| AND BUKRS = P_BUKRS + 1455| AND GJAHR = P_GJAHR + 1456| AND PERBL = P_PERBL + 1457| AND AUFNR = LS_DATA-AUFNR + 1458| AND ANLN1 = LS_DATA-ANLN1. + 1459| + 1460| IF SY-SUBRC EQ 0. + 1461| COMMIT WORK. + 1462| ELSE. + 1463| ROLLBACK WORK. + 1464| ENDIF. + 1465| + 1466| GV_CHANGED = 'X'. + 1467| + 1468| WHEN 'PROZS'. + 1469| + 1470| LS_DATA-PROZS = . + 1471| + 1472| UPDATE ZCOT0040 SET + 1473| PROZS = LS_DATA-PROZS + 1474| WHERE KOKRS = P_KOKRS + 1475| AND BUKRS = P_BUKRS + 1476| AND GJAHR = P_GJAHR + 1477| AND PERBL = P_PERBL + 1478| AND AUFNR = LS_DATA-AUFNR + 1479| AND ANLN1 = LS_DATA-ANLN1. + 1480| + 1481| IF SY-SUBRC EQ 0. + 1482| COMMIT WORK. + 1483| ELSE. + 1484| ROLLBACK WORK. + 1485| ENDIF. + 1486| + 1487| GV_CHANGED = 'X'. + 1488| ENDCASE. + 1489| ENDIF. +``` + +- **EN**: Updates settlement amount BETRR or percentage PROZS in ZCOT0040 for the changed row keyed by controlling area, company code, year, period, order and asset, with commit/rollback and sets the changed flag. +- 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md) +- SAP 객체: ZCOT0040 +- 업무 키워드: 정산금액 수정, 정산 비율 수정, DB 즉시 갱신, 커밋/롤백, 변경 플래그 +- English: Settlement Amount, Settlement Percentage, Database Update, Commit Work +- 정의부(복사 시 함께 필요): [`LS_LVC_MODI`](#decl-zcoc0120f01-1416-ls_lvc_modi), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-1420-ls_data), [``](#decl-zcoc0120f01-1421--fs_data-), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1446-L1489` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#DATA_CHANGED_MODIFY#C2` + +### FORM CALL_KOB1 — `ZCOC0120F01` L1622-L1648 (27줄) + +*선택한 행의 오더번호로 KOB1(오더 실적 라인아이템) 조회 프로그램 RKAEP000 을 전체 전기일 기간으로 호출한다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택 행의 오더번호(AUFNR)를 범위에 담고 잔액 완전정산이 아니므로 전기일 범위를 2000.01.01~9999.12.31 로 두어 관리회계영역 파라미터(CAC) 설정 후 SUBMIT RKAEP000(KOB1 실적 라인아이템)을 호출한다. + +```abap + 1626| CHECK P_ROW CO '0123456789 '. + 1627| + 1628| READ TABLE GT_DATA INDEX P_ROW. + 1629| + 1630| CHECK SY-SUBRC EQ 0. + 1631| + 1632| ADD_RANGE_EQ : LR_AUFNR GT_DATA-AUFNR. + 1633| " 잔액을 완전정산 하지 않으므로 전체 기간을 조회해야 한다. + 1634| CLEAR : LR_BUDAT. + 1635| LR_BUDAT-LOW = '20000101'. + 1636| LR_BUDAT-HIGH = '99991231'. + 1637| LR_BUDAT-SIGN = 'I'. + 1638| LR_BUDAT-OPTION = 'BT'. + 1639| APPEND LR_BUDAT. + 1640| + 1641| SET PARAMETER ID 'CAC' FIELD P_KOKRS. + 1642| + 1643| SUBMIT RKAEP000 WITH AUFNR IN LR_AUFNR + 1644| WITH R_BUDAT IN LR_BUDAT + 1645| WITH P_TCODE EQ 'KOB1' + 1646| AND RETURN. +``` + +- **EN**: Submits report RKAEP000 as transaction KOB1 for the selected order over the full posting date range to display actual cost line items. +- 호출(파서): RKAEP000 +- SAP 객체: RKAEP000, KOB1, AUFK, COBK +- 업무 키워드: 실적 라인아이템 조회, 오더 실적, 전기일 전체 기간, 관리회계영역 +- English: Actual Line Items, Internal Order, Posting Date, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_AUFNR`](#decl-zcoc0120f01-1623-lr_aufnr), [`LR_BUDAT`](#decl-zcoc0120f01-1624-lr_budat), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) +- 선언을 못 찾은 이름: R_BUDAT, P_TCODE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1626-L1646` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#CALL_KOB1#C1` + +### FORM EXECUTE_BDC — `ZCOC0120F01` L602-L630 (29줄) + +*정산규칙 생성 버튼(&RUN) 처리: 중복 실행·미검증 변경 여부를 점검하고 확인 팝업 후 CREATE_SETTLEMENT_RULE(KO02 BDC)과 MODIFY_DB(ZCOT0040 갱신)를 수행한다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 처리(GV_ALREADY_POST)했거나 변경 후 유효성 점검이 안 된 경우(GV_CHANGED) 오류로 중단하고, 확인 팝업 승인 시 BDC 옵션 설정 후 KO02 정산규칙 BDC 실행과 ZCOT0040 결과 갱신을 수행한다. + +```abap + 607| IF GV_ALREADY_POST = 'X'. + 608| MESSAGE S000 DISPLAY LIKE 'E' + 609| WITH '이미 처리한 내역입니다.'(F15). + 610| EXIT. + 611| ENDIF. + 612| + 613| IF GV_CHANGED = 'X'. + 614| MESSAGE S000 DISPLAY LIKE 'E' + 615| WITH '변경된 내역이 있습니다. 유효성 점검을 먼저 해주십시오.'(F16). + 616| EXIT. + 617| ENDIF. + 618| + 619| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 620| '정산 규칙을 생성하시겠습니까?'(F17) '' + 621| CHANGING L_ANSWER. + 622| IF L_ANSWER <> 'J'. + 623| EXIT. + 624| ENDIF. + 625| + 626| GV_ALREADY_POST = 'X'. + 627| PERFORM BDC_OPTION USING P_DSMOD. + 628| PERFORM CREATE_SETTLEMENT_RULE. + 629| PERFORM MODIFY_DB. +``` + +- **EN**: Guards against duplicate posting and unvalidated changes, asks confirmation, then runs the KO02 settlement rule BDC and updates ZCOT0040. +- 호출(파서): POPUP_TO_CONFIRM_02, BDC_OPTION, CREATE_SETTLEMENT_RULE, MODIFY_DB +- SAP 객체: KO02, ZCOT0040 +- 업무 키워드: 중복 처리 방지, 유효성 점검 선행, 확인 팝업, 정산규칙 생성 +- English: Confirmation Popup, Settlement Rule, Batch Input, Validation +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0120top-23-gv_already_post), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed), [`L_ANSWER`](#decl-zcoc0120f01-603-l_answer), [`P_DSMOD`](#decl-zcoc0120top-189-p_dsmod) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L607-L629` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#EXECUTE_BDC#C1` + +### FORM CREATE_SETTLEMENT_RULE — `ZCOC0120F01` L1087-L1202 (116줄) + +*오더별로 KO02 BDC(SAPLKOBS 정산규칙 화면)를 구성·실행하여 자산별 정산규칙(금액 또는 %)을 생성하고 결과를 GT_DATA에 반영한다.* + +> 이 unit 의 조각 4개가 101/116줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] BDC 옵션(P_DSMOD)을 설정하고 GT_DATA를 오더번호(AUFNR) 단위로 중복 제거한 헤더 목록 LT_HEADER를 만들며 관리회계영역 파라미터 'CAC'를 설정한다. + +```abap + 1096| SORT GT_DATA BY OBJNR. + 1097| PERFORM BDC_OPTION USING P_DSMOD. + 1098| + 1099| LT_HEADER[] = GT_DATA[]. + 1100| SORT LT_HEADER BY AUFNR. + 1101| DELETE ADJACENT DUPLICATES FROM LT_HEADER + 1102| COMPARING AUFNR. + 1103| + 1104| SET PARAMETER ID 'CAC' FIELD P_KOKRS. +``` + +- **EN**: Sets BDC options, builds a distinct order-level header list from GT_DATA and sets the controlling area parameter ID CAC for KO02. +- 호출(파서): BDC_OPTION +- SAP 객체: KO02 +- 업무 키워드: 오더 단위 헤더, 중복 제거, BDC 옵션, 관리회계영역 +- English: Internal Order, Controlling Area, BDC Option +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`P_DSMOD`](#decl-zcoc0120top-189-p_dsmod), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1096-L1104` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C1` + +#### [interface] 오더마다 KO02 화면(SAPMKAUF 0110/0600 → 정산규칙 SAPLKOBS 0130/0100 → SAPLKACB 0002)의 BDC 데이터를 구성해, 자산별로 COBL-ANLN1 자산번호와 COBRB 유효 기간/연도(P_PERBL/P_GJAHR), 정산%(PROZS) 또는 정산금액(BETRR, 통화 포맷 변환)을 입력하고 저장(=SICH)한다. + +```abap + 1106| LOOP AT LT_HEADER WHERE ANLN1 IS NOT INITIAL. + 1107| + 1108| CLEAR : GT_BDCDATA, GT_BDCDATA[]. + 1109| CLEAR : GT_MESSTAB, GT_MESSTAB[]. + 1110| + 1111| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1112| 'X' 'SAPMKAUF' '0110', + 1113| ' ' 'BDC_OKCODE' '/00', + 1114| '' 'COAS-AUFNR' LT_HEADER-AUFNR, + 1115| 'X' 'SAPMKAUF' '0600', + 1116| ' ' 'BDC_OKCODE' '=ABVO'. + 1117| + 1118| LOOP AT GT_DATA WHERE OBJNR = LT_HEADER-OBJNR. + 1119| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1120| + 1121| 'X' 'SAPLKOBS' '0130', + 1122| ' ' 'BDC_OKCODE' '=NEUR', + 1123| 'X' 'SAPLKOBS' '0100', + 1124| ' ' 'BDC_OKCODE' '=COBL_MORE', + 1125| 'X' 'SAPLKACB' '0002', + 1126| ' ' 'BDC_OKCODE' '=ENTE', + 1127| ' ' 'COBL-ANLN1' GT_DATA-ANLN1, + 1128| 'X' 'SAPLKOBS' '0100', + 1129| ' ' 'BDC_OKCODE' '/00', + 1130| ' ' 'COBRB-GABPE' P_PERBL, + 1131| ' ' 'COBRB-GABJA' P_GJAHR, + 1132| ' ' 'COBRB-GBISP' P_PERBL, + 1133| ' ' 'COBRB-GBISJ' P_GJAHR. + 1134| + 1135| IF GT_DATA-PROZS IS NOT INITIAL. + 1136| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1137| ' ' 'COBRB-AQZIF' '', + 1138| ' ' 'COBRB-BETRR' '', + 1139| ' ' 'COBRB-PROZS' GT_DATA-PROZS. + 1140| ENDIF. + 1141| + 1142| IF GT_DATA-BETRR IS NOT INITIAL. + 1143| CLEAR : LV_C_BETRR. + 1144| WRITE GT_DATA-BETRR TO LV_C_BETRR + 1145| CURRENCY GV_WAERS NO-GAP LEFT-JUSTIFIED. + 1146| + 1147| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1148| ' ' 'COBRB-AQZIF' '', + 1149| ' ' 'COBRB-BETRR' LV_C_BETRR, + 1150| ' ' 'COBRB-PROZS' ''. + 1151| ENDIF. + 1152| + 1153| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1154| 'X' 'SAPLKOBS' '0100', + 1155| ' ' 'BDC_OKCODE' '=BACK'. + 1156| ENDLOOP. + 1157| + 1158| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 1159| 'X' 'SAPLKOBS' '0130', + 1160| ' ' 'BDC_OKCODE' '=BACK', + 1161| 'X' 'SAPMKAUF' '0600', + 1162| ' ' 'BDC_OKCODE' '=SICH'. +``` + +- **EN**: Builds the KO02 batch-input screen sequence (SAPMKAUF, SAPLKOBS, SAPLKACB) filling settlement receiver asset COBL-ANLN1, COBRB validity period/year and either percentage PROZS or amount BETRR for each asset of the order. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: KO02, SAPMKAUF, SAPLKOBS, SAPLKACB, COBRB, COBL +- 업무 키워드: 정산규칙 생성, BDC 화면 구성, 정산 비율, 정산 금액, 유효 기간, 본자산 수신자 +- English: Settlement Rule, Batch Input, Distribution Rule, Settlement Receiver, Fixed Asset +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`LV_C_BETRR`](#decl-zcoc0120f01-1091-lv_c_betrr), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1106-L1162` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C2` + +#### [interface] CALL TRANSACTION 'KO02' 로 정산규칙 BDC를 실행하고 GT_MESSTAB 메시지를 행 메시지로 기록하며 SY-SUBRC 에 따라 정산 성공(SETTL_SUCCESS='S', 녹색)/실패('E', 적색) 상태를 LT_HEADER에 설정한다. + +```abap + 1164| CALL TRANSACTION 'KO02' + 1165| USING GT_BDCDATA[] + 1166| OPTIONS FROM GS_BDC_OPTION + 1167| MESSAGES INTO GT_MESSTAB[]. + 1168| + 1169| LV_BDC_SUBRC = SY-SUBRC. + 1170| + 1171| LOOP AT GT_MESSTAB. + 1172| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1173| CHANGING LT_HEADER-MESSAGE. + 1174| PERFORM ADD_DATA_MESSAGE USING + 1175| GT_MESSTAB-MSGTYP '' + 1176| LT_HEADER-MESSAGE. + 1177| ENDLOOP. + 1178| + 1179| IF LV_BDC_SUBRC EQ 0. + 1180| * 성공 메세지 처리 + 1181| LT_HEADER-STATUS = GC_STATUS_GREEN. + 1182| LT_HEADER-SETTL_SUCCESS = 'S'. + 1183| LT_HEADER-MESSAGE = '정산규칙을 정상적으로 반영했습니다'(F23). + 1184| ELSE. + 1185| LT_HEADER-STATUS = GC_STATUS_RED. + 1186| LT_HEADER-SETTL_SUCCESS = 'E'. + 1187| * 실패 메세지 처리 + 1188| ENDIF. + 1189| + 1190| MODIFY LT_HEADER. +``` + +- **EN**: Executes CALL TRANSACTION KO02 with the BDC data, collects BDCMSGCOLL messages and sets settlement success or error status on the order header. +- 호출(파서): KO02, BUILD_MESSAGE, ADD_DATA_MESSAGE +- SAP 객체: KO02, BDCMSGCOLL +- 업무 키워드: BDC 실행, 정산규칙 반영, 결과 메시지, 성공/실패 상태 +- English: Call Transaction, BDC Messages, Settlement Rule, Status +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LV_BDC_SUBRC`](#decl-zcoc0120f01-1090-lv_bdc_subrc), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1164-L1190` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C3` + +#### [other] 오더 단위 BDC 결과(상태·메시지·정산 성공 여부)를 같은 오더의 모든 자산 행 GT_DATA에 전파하고 ALV 새로고침 플래그를 설정한다. + +```abap + 1194| LOOP AT LT_HEADER WHERE ANLN1 IS NOT INITIAL.. + 1195| MODIFY GT_DATA FROM LT_HEADER + 1196| TRANSPORTING STATUS MESSAGE MSG_LIST SETTL_SUCCESS + 1197| WHERE ANLN1 IS NOT INITIAL + 1198| AND AUFNR EQ LT_HEADER-AUFNR. + 1199| ENDLOOP. + 1200| + 1201| GV_REFRESH = 'X'. +``` + +- **EN**: Propagates the order-level BDC result status and messages to all asset rows of that order in GT_DATA and sets the refresh flag. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 결과 전파, 상태 반영, 오더별 결과 +- English: Status Update, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1194-L1201` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C4` + +### FORM MODIFY_DB — `ZCOC0120F01` L1501-L1527 (27줄) + +*정산규칙 BDC 처리 결과(정산금액·정산%·성공 여부)를 기존 ZCOT0040 저장 내역에 반영하여 DB를 갱신한다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] GT_DATA 각 행을 오더번호(AUFNR)·자산번호(ANLN1) 키로 GT_ZCOT0040 에서 찾아 정산금액(BETRR)·정산%(PROZS)·정산 성공 여부(SETTL_SUCCESS)를 갱신한 뒤 MODIFY ZCOT0040 으로 DB에 저장한다. + +```abap + 1505| LOOP AT GT_DATA. + 1506| READ TABLE GT_ZCOT0040 WITH KEY + 1507| AUFNR = GT_DATA-AUFNR + 1508| ANLN1 = GT_DATA-ANLN1 + 1509| BINARY SEARCH. + 1510| + 1511| IF SY-SUBRC EQ 0. + 1512| GT_ZCOT0040-BETRR = GT_DATA-BETRR. + 1513| GT_ZCOT0040-PROZS = GT_DATA-PROZS. + 1514| GT_ZCOT0040-SETTL_SUCCESS = GT_DATA-SETTL_SUCCESS. + 1515| MOVE-CORRESPONDING GT_ZCOT0040 TO LT_ZCOT0040. + 1516| APPEND LT_ZCOT0040. + 1517| ENDIF. + 1518| + 1519| CLEAR : GT_ZCOT0040. + 1520| + 1521| ENDLOOP. + 1522| + 1523| IF LT_ZCOT0040[] IS NOT INITIAL. + 1524| MODIFY ZCOT0040 FROM TABLE LT_ZCOT0040. + 1525| ENDIF. +``` + +- **EN**: Updates settlement amount, percentage and settlement success flag on matching ZCOT0040 records by order and asset number and writes them back with MODIFY ZCOT0040. +- 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md) +- SAP 객체: ZCOT0040 +- 업무 키워드: 정산규칙 결과 반영, 정산금액, 정산 비율, DB 갱신, 오더번호, 자산번호 +- English: Settlement Rule, Settlement Amount, Database Update, Internal Order +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`LT_ZCOT0040`](#decl-zcoc0120f01-1503-lt_zcot0040) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1505-L1525` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#MODIFY_DB#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC0120F01` L654-L712 (59줄) + +*ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 팝업 그리드로 표시한다.* + +> 이 unit 의 조각 2개가 45/59줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행 번호가 숫자인지 확인하고 GT_DATA 해당 행을 읽어 팝업 필드카탈로그(상태/메시지 컬럼명)를 만들고 MSG_LIST 를 팝업용 LT_POPUP 으로 옮긴다. + +```abap + 666| CHECK P_ROW CO '0123456789 '. + 667| + 668| READ TABLE GT_DATA INDEX P_ROW. + 669| + 670| CHECK SY-SUBRC EQ 0. + 671| + 672| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 673| USING 'GT_LOG_POP'. + 674| + 675| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. + 676| + 677| CASE LS_FIELDCAT-FIELDNAME. + 678| * WHEN 'AUFNR'. + 679| * LS_FIELDCAT-COLTEXT = '오더번호'(F18). + 680| WHEN 'STATUS'. + 681| LS_FIELDCAT-COLTEXT = '상태'(F25). + 682| WHEN 'MESSAGE'. + 683| LS_FIELDCAT-COLTEXT = '메시지'(F26). + 684| ENDCASE. + 685| + 686| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. + 687| ENDLOOP. + 688| + 689| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 690| * LT_POPUP-AUFNR = GT_DATA-AUFNR. + 691| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 692| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 693| APPEND LT_POPUP. + 694| CLEAR : LT_POPUP. + 695| ENDLOOP. +``` + +- **EN**: Validates the selected row, reads the GT_DATA row and collects its message list into a popup table with status and message columns. +- 호출(파서): GET_FCAT_LIKE_ITAB +- SAP 객체: LVC_T_FCAT +- 업무 키워드: 오류 로그, 메시지 목록, 선택 행, 팝업 데이터 구성 +- English: Error Log, Message List, ALV Popup +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc0120f01-655-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-658-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc0120top-92-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc0120top-84-gt_log_pop), [`LT_POPUP`](#decl-zcoc0120f01-657-lt_popup) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L666-L695` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#SHOW_ERROR_LOG#C1` + +#### [output] 팝업 ALV 그리드 객체(W_POPUP_GRID)를 생성하고 SHOW_DATA 로 메시지 목록을 팝업 창에 출력한다. + +```abap + 697| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 698| + 699| CREATE OBJECT W_POPUP_GRID + 700| EXPORTING + 701| I_T_FIELDCATALOG = POPUP_FIELDCAT + 702| I_S_LAYOUT = LS_LAYO + 703| I_CAPTION = '' + 704| I_LEFT = 100 + 705| I_TOP = 150 + 706| I_HEIGHT = 400 + 707| I_WIDTH = 900. + 708| + 709| CALL METHOD W_POPUP_GRID->SHOW_DATA + 710| EXPORTING + 711| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Instantiates the popup ALV grid and displays the collected message list via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- 업무 키워드: 팝업 ALV, 메시지 표시, 오류 로그 출력 +- English: ALV Grid Popup, Message Display +- 정의부(복사 시 함께 필요): [`LS_LAYO`](#decl-zcoc0120f01-656-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0120top-90-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0120f01-655-popup_fieldcat), [`GT_LOG_POP`](#decl-zcoc0120top-84-gt_log_pop), [`LT_POPUP`](#decl-zcoc0120f01-657-lt_popup) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L697-L711` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#SHOW_ERROR_LOG#C2` + +### FORM EXECUTE_BAPI — `ZCOC0120F01` L958-L983 (26줄) + +*자산 생성 버튼(&SAV) 처리: 중복 실행을 막고 확인 팝업 후 CREATE_FIXED_ASSET(본자산 생성)과 SAVE_DB(ZCOT0040 저장)를 수행한다.* + +> 이 unit 의 조각 1개가 19/26줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 생성된 경우(GV_ALREADY_POST) 오류 메시지 후 중단하고, POPUP_TO_CONFIRM_02 확인('J') 시 CREATE_FIXED_ASSET 로 본자산을 생성한 뒤 SAVE_DB 로 정산규칙 내역을 ZCOT0040에 저장하고 완료 메시지와 새로고침 플래그를 설정한다. + +```abap + 963| IF GV_ALREADY_POST = 'X'. + 964| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 생성하였습니다.'(F21). + 965| EXIT. + 966| ENDIF. + 967| + 968| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 969| '자산 생성 및 정산 규칙 내역을 저장하시겠습니까??'(F20) '' + 970| CHANGING L_ANSWER. + 971| IF L_ANSWER <> 'J'. + 972| EXIT. + 973| ENDIF. + 974| + 975| GV_ALREADY_POST = 'X'. + 976| + 977| PERFORM CREATE_FIXED_ASSET. + 978| PERFORM SAVE_DB. + 979| MESSAGE S000 WITH '처리가 완료되었습니다.'(F22). + 980| + 981| GV_REFRESH = 'X'. +``` + +- **EN**: Prevents duplicate posting, asks user confirmation, then runs fixed asset creation (BAPI_FIXEDASSET_CREATE) and saves settlement rule data to ZCOT0040. +- 호출(파서): POPUP_TO_CONFIRM_02, CREATE_FIXED_ASSET, SAVE_DB +- SAP 객체: ZCOT0040, BAPI_FIXEDASSET_CREATE +- 업무 키워드: 중복 실행 방지, 확인 팝업, 자산 생성, 정산규칙 저장 +- English: Confirmation Popup, Fixed Asset, Settlement Rule, Duplicate Check +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0120top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0120f01-959-l_answer), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L963-L981` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#EXECUTE_BAPI#C1` + +### FORM CREATE_FIXED_ASSET — `ZCOC0120F01` L992-L1078 (87줄) + +*업로드 구분 '1'(신규) 건에 대해 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 결과(자산번호·상태·메시지)를 GT_DATA에 반영하며 기존 자산(구분 2)은 성공으로 표시한다.* + +> 이 unit 의 조각 3개가 71/87줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 신규 자산 건마다 자산클래스(ANLKL)·자산내역(TXT50)·수량·단위와 코스트센터(KOSTL)를 BAPI1022 구조에 채우고 BAPI_FIXEDASSET_CREATE 를 호출해 회사코드 P_BUKRS 에 본자산을 생성한다. + +```abap + 1004| LOOP AT GT_DATA WHERE GUBUN = '1'. + 1005| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 1006| CLEAR : LT_RETURNS, LT_RETURNS[]. + 1007| CLEAR : LS_CREATED. + 1008| CLEAR : LS_GENERAL, LS_TIMEDEPENDANT. + 1009| + 1010| LS_GENERAL-ASSETCLASS = GT_DATA-ANLKL. + 1011| LS_GENERAL-DESCRIPT = GT_DATA-TXT50. + 1012| LS_GENERAL-DESCRIPT2 = GT_DATA-TXT50. + 1013| LS_GENERAL-QUANTITY = GT_DATA-MENGE. + 1014| LS_GENERAL-BASE_UOM = GC_MEINS. + 1015| LS_GENERALX-ASSETCLASS = 'X'. + 1016| LS_GENERALX-DESCRIPT = 'X'. + 1017| LS_GENERALX-DESCRIPT2 = 'X'. + 1018| LS_GENERALX-QUANTITY = 'X'. + 1019| LS_GENERALX-BASE_UOM = 'X'. + 1020| + 1021| LS_TIMEDEPENDANT-COSTCENTER = GT_DATA-KOSTL. + 1022| LS_TIMEDEPENDANTX-COSTCENTER = 'X'. + 1023| + 1024| CALL FUNCTION 'BAPI_FIXEDASSET_CREATE' + 1025| EXPORTING + 1026| COMPANYCODE = P_BUKRS + 1027| GENERALDATA = LS_GENERAL + 1028| GENERALDATAX = LS_GENERALX + 1029| TIMEDEPENDENTDATA = LS_TIMEDEPENDANT + 1030| TIMEDEPENDENTDATAX = LS_TIMEDEPENDANTX + 1031| IMPORTING + 1032| ASSETCREATED = LS_CREATED + 1033| RETURN = LT_RETURNS. +``` + +- **EN**: Fills general and time-dependent data (asset class, description, quantity, cost center) and calls BAPI_FIXEDASSET_CREATE to create a fixed asset master in the company code. +- 호출(파서): BAPI_FIXEDASSET_CREATE +- SAP 객체: BAPI_FIXEDASSET_CREATE, BAPI1022_FEGLG001, BAPI1022_FEGLG003 +- 업무 키워드: 본자산 생성, 자산클래스, 코스트센터, 자산내역, 신규 자산 +- English: Fixed Asset Create, Asset Class, Cost Center, Asset Master +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_RETURNS`](#decl-zcoc0120f01-993-lt_returns), [`LS_CREATED`](#decl-zcoc0120f01-994-ls_created), [`LS_GENERAL`](#decl-zcoc0120f01-995-ls_general), [`LS_TIMEDEPENDANT`](#decl-zcoc0120f01-997-ls_timedependant), [`GC_MEINS`](#decl-zcoc0120top-35-gc_meins), [`LS_GENERALX`](#decl-zcoc0120f01-996-ls_generalx), [`LS_TIMEDEPENDANTX`](#decl-zcoc0120f01-998-ls_timedependantx), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1004-L1033` · confidence 0.95 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C1` + +#### [fm_call] BAPI RETURN 메시지를 행 메시지로 기록하고, 오류 없이 자산이 생성되면 BAPI_TRANSACTION_COMMIT 후 자산번호(ANLN1)·성공 상태(ASSET_SUCCESS='S')와 AA228 메시지를 저장하고, 실패 시 BAPI_TRANSACTION_ROLLBACK 및 오류 상태를 설정한다. + +```abap + 1035| LOOP AT LT_RETURNS. + 1036| PERFORM BUILD_MESSAGE_BAPI USING LT_RETURNS + 1037| CHANGING GT_DATA-MESSAGE. + 1038| PERFORM ADD_DATA_MESSAGE USING + 1039| GT_MESSTAB-MSGTYP '' + 1040| GT_DATA-MESSAGE. + 1041| ENDLOOP. + 1042| + 1043| IF LT_RETURNS[] IS INITIAL AND LS_CREATED IS NOT INITIAL. + 1044| + 1045| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 1046| EXPORTING + 1047| WAIT = 'X'. + 1048| + 1049| GT_DATA-ANLN1 = LS_CREATED-ASSET. + 1050| GT_DATA-ANLN1_T = GT_DATA-TXT50. + 1051| GT_DATA-STATUS = GC_STATUS_GREEN. + 1052| GT_DATA-ASSET_SUCCESS = 'S'. + 1053| + 1054| MESSAGE ID 'AA' TYPE 'S' NUMBER '228' + 1055| INTO GT_DATA-MESSAGE + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| GT_DATA-STATUS = GC_STATUS_GREEN. + 1058| + 1059| PERFORM ADD_DATA_MESSAGE USING + 1060| 'S' '' + 1061| GT_DATA-MESSAGE. + 1062| + 1063| ELSE. + 1064| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 1065| GT_DATA-STATUS = GC_STATUS_RED. + 1066| GT_DATA-ASSET_SUCCESS = 'E'. + 1067| GV_POST_ERROR = 'X'. + 1068| ENDIF. + 1069| + 1070| MODIFY GT_DATA. +``` + +- **EN**: Processes BAPI return messages, commits with BAPI_TRANSACTION_COMMIT and stores the new asset number on success, otherwise rolls back and flags the row as error. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, ADD_DATA_MESSAGE, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 커밋, 롤백, 자산번호 반영, 오류 처리, 결과 메시지 +- English: BAPI Return, Commit, Rollback, Asset Number +- 정의부(복사 시 함께 필요): [`LT_RETURNS`](#decl-zcoc0120f01-993-lt_returns), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LS_CREATED`](#decl-zcoc0120f01-994-ls_created), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_POST_ERROR`](#decl-zcoc0120top-24-gv_post_error) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1035-L1070` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C2` + +#### [other] 기존 자산(GUBUN='2')으로 자산번호가 이미 있는 건은 자산 생성 없이 성공 상태(ASSET_SUCCESS='S', 녹색)로 일괄 표시한다. + +```abap + 1073| LS_DATA-ASSET_SUCCESS = 'S'. + 1074| LS_DATA-STATUS = GC_STATUS_GREEN. + 1075| MODIFY GT_DATA FROM LS_DATA TRANSPORTING ASSET_SUCCESS + 1076| STATUS + 1077| WHERE ANLN1 IS NOT INITIAL AND GUBUN = '2'. +``` + +- **EN**: Marks existing-asset rows (GUBUN '2' with asset number) as successful without creating a new asset. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 기존 자산, 성공 표시, 상태 갱신 +- English: Existing Asset, Status Update +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-999-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1073-L1077` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C3` + +### FORM SAVE_DB — `ZCOC0120F01` L1211-L1246 (36줄) + +*본자산 생성에 성공한 건의 정산규칙 내역을 ZCOT0040 테이블에 저장하고 결과 메시지를 GT_DATA에 반영한다.* + +> 이 unit 의 조각 2개가 29/36줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 자산 생성 성공(ASSET_SUCCESS='S') 건만 골라 회사코드·관리회계영역·연도·기간과 생성자/일시를 채워 ZCOT0040 저장용 내부테이블 LT_ZCOT0040을 구성한다. + +```abap + 1215| LOOP AT GT_DATA WHERE ASSET_SUCCESS = 'S'. + 1216| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0040. + 1217| LT_ZCOT0040-BUKRS = P_BUKRS. + 1218| LT_ZCOT0040-KOKRS = P_KOKRS. + 1219| LT_ZCOT0040-GJAHR = P_GJAHR. + 1220| LT_ZCOT0040-PERBL = P_PERBL. + 1221| LT_ZCOT0040-ERDAT = SY-DATUM. + 1222| LT_ZCOT0040-ERNAM = SY-UNAME. + 1223| LT_ZCOT0040-ERZEIT = SY-UZEIT. + 1224| APPEND LT_ZCOT0040. CLEAR : LT_ZCOT0040. + 1225| + 1226| ENDLOOP. +``` + +- **EN**: Builds the ZCOT0040 save table from successfully created asset rows, adding company code, controlling area, fiscal year, period and creation user/date. +- SAP 객체: ZCOT0040 +- 업무 키워드: 정산규칙 내역, 자산 생성 성공, 저장 데이터 구성, 회사코드, 기간 +- English: Settlement Rule, Fixed Asset, Company Code, Fiscal Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_ZCOT0040`](#decl-zcoc0120f01-1213-lt_zcot0040), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1215-L1226` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SAVE_DB#C1` + +#### [db_write] 구성된 정산규칙 내역을 MODIFY ZCOT0040 으로 DB에 저장하고 성공 시 각 행에 '정산규칙 내역이 저장되었습니다' 메시지를 ADD_DATA_MESSAGE 로 기록한다. + +```abap + 1228| IF LT_ZCOT0040[] IS NOT INITIAL. + 1229| MODIFY ZCOT0040 FROM TABLE LT_ZCOT0040. + 1230| + 1231| IF SY-SUBRC EQ 0. + 1232| LV_MESSAGE = '정산규칙 내역이 저장되었습니다.'(F28). + 1233| LOOP AT GT_DATA. + 1234| PERFORM ADD_DATA_MESSAGE USING + 1235| 'S' '' + 1236| LV_MESSAGE. + 1237| IF GT_DATA-MESSAGE IS INITIAL. + 1238| GT_DATA-MESSAGE = LV_MESSAGE. + 1239| ENDIF. + 1240| MODIFY GT_DATA. + 1241| CLEAR : LV_MESSAGE. + 1242| ENDLOOP. + 1243| ENDIF. + 1244| ENDIF. +``` + +- **EN**: Writes the settlement rule records to custom table ZCOT0040 via MODIFY and logs a success message on every GT_DATA row. +- 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md), [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): ADD_DATA_MESSAGE +- SAP 객체: ZCOT0040 +- 업무 키워드: 정산규칙 저장, DB 저장, 성공 메시지, 결과 기록 +- English: Settlement Rule, Database Update, Message Log +- 정의부(복사 시 함께 필요): [`LT_ZCOT0040`](#decl-zcoc0120f01-1213-lt_zcot0040), [`LV_MESSAGE`](#decl-zcoc0120f01-1212-lv_message), [`GT_DATA`](#decl-zcoc0120top-58-gt_data) +- 위치: `abap://ZCOC0120/ZCOC0120F01#L1228-L1244` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#SAVE_DB#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0120I01` L6-L32 (27줄) + +*화면 0100의 OK 코드에 따라 자산 생성(&SAV), 정산규칙 BDC 실행(&RUN), 재검증(&VAL) 또는 화면 종료를 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 22/27줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드별로 BACK/EXIT 시 컨테이너 해제 후 화면 종료, &SAV 시 EXECUTE_BAPI(본자산 생성), &RUN 시 EXECUTE_BDC(KO02 정산규칙), &VAL 시 PROCESS_DATA(재검증)로 분기한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&SAV'. + 23| PERFORM EXECUTE_BAPI. + 24| WHEN '&RUN'. + 25| PERFORM EXECUTE_BDC. + 26| WHEN '&VAL'. + 27| PERFORM PROCESS_DATA. + 28| WHEN OTHERS. + 29| * LEAVE PROGRAM. + 30| ENDCASE. +``` + +- **EN**: Dispatches screen 0100 user commands to fixed asset creation (EXECUTE_BAPI), settlement rule BDC (EXECUTE_BDC) or re-validation (PROCESS_DATA), or leaves the screen. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI, EXECUTE_BDC, PROCESS_DATA +- SAP 객체: KO02 +- 업무 키워드: 사용자 명령, 자산 생성, 정산규칙, 재검증, 화면 종료 +- English: User Command, PAI, Fixed Asset, Settlement Rule +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0120top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0120c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0120/ZCOC0120I01#L9-L30` · confidence 0.9 · `ZCOC0120#ZCOC0120I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (370건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0120C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0120c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0120TOP` (48건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0120top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0120top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0120top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0120top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0120top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0120top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0120top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0120top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0120top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0120top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0120top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0120top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0120top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0120top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_CHANGED — data · L26-L26 {#decl-zcoc0120top-26-gv_changed} + +```abap +DATA : GV_CHANGED TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L30-L31 {#decl-zcoc0120top-30-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L32-L33 {#decl-zcoc0120top-32-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0180'. +``` + +#### GC_SMW0 — constants · L34-L34 {#decl-zcoc0120top-34-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0120'. +``` + +#### GC_MEINS — constants · L35-L35 {#decl-zcoc0120top-35-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE ANLA-MEINS VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc0120top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L46-L46 {#decl-zcoc0120top-46--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L47-L47 {#decl-zcoc0120top-47--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L49-L49 {#decl-zcoc0120top-49-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L50-L50 {#decl-zcoc0120top-50-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc0120top-52-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc0120top-53-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L58-L80 {#decl-zcoc0120top-58-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0180. + +DATA : + GUBUN_T(10) TYPE C, + AUART LIKE AUFK-AUART, + KOSTL_T LIKE CSKT-KTEXT, + ANLKL_T LIKE ANKT-TXK20, + AUFNR_T LIKE AUFK-KTEXT, + ASSET_SUCCESS TYPE C, + SETTL_SUCCESS TYPE C, + OBJNR LIKE ONROR-OBJNR, + ANLN1_T LIKE ANLA-TXT50, + WKG_SUM LIKE COSP-WKG001, + +EXCEL_LINE TYPE I, +MARK TYPE C , +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L82-L82 {#decl-zcoc0120top-82-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L84-L87 {#decl-zcoc0120top-84-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L90-L90 {#decl-zcoc0120top-90-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L92-L92 {#decl-zcoc0120top-92-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_KOSTL_ST — data · L95-L99 {#decl-zcoc0120top-95-gt_kostl_st} + +```abap +DATA : BEGIN OF GT_KOSTL_ST OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + OBJNR LIKE ONRKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, +END OF GT_KOSTL_ST. +``` + +#### GT_ANKT — data · L101-L101 {#decl-zcoc0120top-101-gt_ankt} + +```abap +DATA : GT_ANKT LIKE ANKT OCCURS 0 WITH HEADER LINE. +``` + +#### GT_AUFK_ST — data · L103-L108 {#decl-zcoc0120top-103-gt_aufk_st} + +```abap +DATA : BEGIN OF GT_AUFK_ST OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + OBJNR LIKE ONROR-OBJNR, + KTEXT LIKE AUFK-KTEXT, + AUART LIKE AUFK-AUART, +END OF GT_AUFK_ST. +``` + +#### GT_ANLA — data · L110-L113 {#decl-zcoc0120top-110-gt_anla} + +```abap +DATA : BEGIN OF GT_ANLA OCCURS 0, + ANLN1 LIKE ANLA-ANLN1, + TXT50 LIKE ANLA-TXT50, + END OF GT_ANLA. +``` + +#### GT_COSP — data · L115-L115 {#decl-zcoc0120top-115-gt_cosp} + +```abap +DATA : GT_COSP LIKE COSP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0040 — data · L117-L117 {#decl-zcoc0120top-117-gt_zcot0040} + +```abap +DATA : GT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### P_SAV — parameter · L126-L127 {#decl-zcoc0120top-126-p_sav} + +```abap +PARAMETERS : P_SAV RADIOBUTTON GROUP RG2 DEFAULT 'X' + USER-COMMAND UC1. +``` + +#### P_SETT — parameter · L130-L130 {#decl-zcoc0120top-130-p_sett} + +```abap +PARAMETERS : P_SETT RADIOBUTTON GROUP RG2. +``` + +#### P_BUKRS — parameter · L140-L141 {#decl-zcoc0120top-140-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L149-L150 {#decl-zcoc0120top-149-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L155-L156 {#decl-zcoc0120top-155-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COBRB-GABJA OBLIGATORY + DEFAULT SY-DATUM+0(4). +``` + +#### P_PERBL — parameter · L157-L158 {#decl-zcoc0120top-157-p_perbl} + +```abap +PARAMETER : P_PERBL LIKE COBRB-GABPE OBLIGATORY + DEFAULT SY-DATUM+4(2). +``` + +#### P_FNAME — parameter · L160-L161 {#decl-zcoc0120top-160-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC0120_P_FNAME MODIF ID MG2. +``` + +#### P_OPEN — parameter · L171-L172 {#decl-zcoc0120top-171-p_open} + +```abap +PARAMETERS : P_OPEN RADIOBUTTON GROUP RG3 DEFAULT 'X' + MODIF ID MG3. +``` + +#### P_FAIL — parameter · L176-L177 {#decl-zcoc0120top-176-p_fail} + +```abap +PARAMETERS : P_FAIL RADIOBUTTON GROUP RG3 + MODIF ID MG3. +``` + +#### P_SUCC — parameter · L181-L182 {#decl-zcoc0120top-181-p_succ} + +```abap +PARAMETERS : P_SUCC RADIOBUTTON GROUP RG3 + MODIF ID MG3. +``` + +#### P_DSMOD — parameter · L189-L189 {#decl-zcoc0120top-189-p_dsmod} + +```abap +PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0120F01` (66건) + +#### L_UCOMM — data · unit 로컬 · L47-L47 {#decl-zcoc0120f01-47-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L158-L161 {#decl-zcoc0120f01-158-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L163-L163 {#decl-zcoc0120f01-163--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L164-L164 {#decl-zcoc0120f01-164--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L165-L165 {#decl-zcoc0120f01-165-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L166-L166 {#decl-zcoc0120f01-166-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L167-L167 {#decl-zcoc0120f01-167-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_FORALL — data · unit 로컬 · L264-L264 {#decl-zcoc0120f01-264-lt_forall} + +```abap + DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_ERR — data · unit 로컬 · L265-L265 {#decl-zcoc0120f01-265-lv_err} + +```abap + DATA : LV_ERR. +``` + +#### LT_CHECK — data · unit 로컬 · L266-L266 {#decl-zcoc0120f01-266-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_PERCENT — data · unit 로컬 · L267-L267 {#decl-zcoc0120f01-267-lv_percent} + +```abap + DATA : LV_PERCENT LIKE COBRB-PROZS. +``` + +#### LV_BUDGET — data · unit 로컬 · L268-L268 {#decl-zcoc0120f01-268-lv_budget} + +```abap + DATA : LV_BUDGET LIKE BSEG-DMBTR. +``` + +#### LV_CODE — data · unit 로컬 · L269-L269 {#decl-zcoc0120f01-269-lv_code} + +```abap + DATA : LV_CODE TYPE C. +``` + +#### LV_MSG — data · unit 로컬 · L270-L270 {#decl-zcoc0120f01-270-lv_msg} + +```abap + DATA : LV_MSG(100) TYPE C. +``` + +#### L_ANSWER — data · unit 로컬 · L603-L603 {#decl-zcoc0120f01-603-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L655-L655 {#decl-zcoc0120f01-655-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L656-L656 {#decl-zcoc0120f01-656-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L657-L657 {#decl-zcoc0120f01-657-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L658-L658 {#decl-zcoc0120f01-658-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LT_AUFK_OBJNR — data · unit 로컬 · L722-L722 {#decl-zcoc0120f01-722-lt_aufk_objnr} + +```abap + DATA : LT_AUFK_OBJNR LIKE ONROR OCCURS 0 WITH HEADER LINE. +``` + +#### LV_STRNM — data · unit 로컬 · L840-L840 {#decl-zcoc0120f01-840-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L841-L841 {#decl-zcoc0120f01-841-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L895-L895 {#decl-zcoc0120f01-895-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_FIELD — data · unit 로컬 · L896-L896 {#decl-zcoc0120f01-896-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_CNT — data · unit 로컬 · L897-L897 {#decl-zcoc0120f01-897-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### — field-symbol · unit 로컬 · L898-L898 {#decl-zcoc0120f01-898--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L930-L930 {#decl-zcoc0120f01-930-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L931-L931 {#decl-zcoc0120f01-931--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L932-L932 {#decl-zcoc0120f01-932--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L933-L933 {#decl-zcoc0120f01-933-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### L_ANSWER — data · unit 로컬 · L959-L959 {#decl-zcoc0120f01-959-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LT_RETURNS — data · unit 로컬 · L993-L993 {#decl-zcoc0120f01-993-lt_returns} + +```abap + DATA : LT_RETURNS LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CREATED — data · unit 로컬 · L994-L994 {#decl-zcoc0120f01-994-ls_created} + +```abap + DATA : LS_CREATED LIKE BAPI1022_REFERENCE. +``` + +#### LS_GENERAL — data · unit 로컬 · L995-L995 {#decl-zcoc0120f01-995-ls_general} + +```abap + DATA : LS_GENERAL LIKE BAPI1022_FEGLG001. +``` + +#### LS_GENERALX — data · unit 로컬 · L996-L996 {#decl-zcoc0120f01-996-ls_generalx} + +```abap + DATA : LS_GENERALX LIKE BAPI1022_FEGLG001X. +``` + +#### LS_TIMEDEPENDANT — data · unit 로컬 · L997-L997 {#decl-zcoc0120f01-997-ls_timedependant} + +```abap + DATA : LS_TIMEDEPENDANT LIKE BAPI1022_FEGLG003. +``` + +#### LS_TIMEDEPENDANTX — data · unit 로컬 · L998-L998 {#decl-zcoc0120f01-998-ls_timedependantx} + +```abap + DATA : LS_TIMEDEPENDANTX LIKE BAPI1022_FEGLG003X. +``` + +#### LS_DATA — data · unit 로컬 · L999-L999 {#decl-zcoc0120f01-999-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### LT_HEADER — data · unit 로컬 · L1089-L1089 {#decl-zcoc0120f01-1089-lt_header} + +```abap + DATA : LT_HEADER LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L1090-L1090 {#decl-zcoc0120f01-1090-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-DATUM. +``` + +#### LV_C_BETRR — data · unit 로컬 · L1091-L1091 {#decl-zcoc0120f01-1091-lv_c_betrr} + +```abap + DATA : LV_C_BETRR(16) TYPE C. +``` + +#### LV_MESSAGE — data · unit 로컬 · L1212-L1212 {#decl-zcoc0120f01-1212-lv_message} + +```abap + DATA : LV_MESSAGE LIKE BDCMSGCOLL-MSGV1. +``` + +#### LT_ZCOT0040 — data · unit 로컬 · L1213-L1213 {#decl-zcoc0120f01-1213-lt_zcot0040} + +```abap + DATA : LT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FORALL — data · unit 로컬 · L1256-L1256 {#decl-zcoc0120f01-1256-lt_forall} + +```abap + DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LT_CHECK — data · unit 로컬 · L1257-L1257 {#decl-zcoc0120f01-1257-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_PERCENT — data · unit 로컬 · L1258-L1258 {#decl-zcoc0120f01-1258-lv_percent} + +```abap + DATA : LV_PERCENT LIKE COBRB-PROZS. +``` + +#### LV_ERR — data · unit 로컬 · L1259-L1259 {#decl-zcoc0120f01-1259-lv_err} + +```abap + DATA : LV_ERR. +``` + +#### LV_BUDGET — data · unit 로컬 · L1260-L1260 {#decl-zcoc0120f01-1260-lv_budget} + +```abap + DATA : LV_BUDGET LIKE BSEG-DMBTR. +``` + +#### LV_CODE — data · unit 로컬 · L1261-L1261 {#decl-zcoc0120f01-1261-lv_code} + +```abap + DATA : LV_CODE TYPE C. +``` + +#### LV_MSG — data · unit 로컬 · L1262-L1262 {#decl-zcoc0120f01-1262-lv_msg} + +```abap + DATA : LV_MSG(100) TYPE C. +``` + +#### LS_LVC_MODI — data · unit 로컬 · L1416-L1416 {#decl-zcoc0120f01-1416-ls_lvc_modi} + +```abap + DATA : LS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### LV_IDX — data · unit 로컬 · L1419-L1419 {#decl-zcoc0120f01-1419-lv_idx} + +```abap + DATA : LV_IDX LIKE LS_LVC_MODI-ROW_ID. +``` + +#### LS_DATA — data · unit 로컬 · L1420-L1420 {#decl-zcoc0120f01-1420-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### — field-symbol · unit 로컬 · L1421-L1421 {#decl-zcoc0120f01-1421--fs_data-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LT_ZCOT0040 — data · unit 로컬 · L1503-L1503 {#decl-zcoc0120f01-1503-lt_zcot0040} + +```abap + DATA : LT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FORALL — data · unit 로컬 · L1537-L1537 {#decl-zcoc0120f01-1537-lt_forall} + +```abap + DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_SUM — data · unit 로컬 · L1538-L1538 {#decl-zcoc0120f01-1538-lv_sum} + +```abap + DATA : LV_SUM LIKE COSP-WKG001. +``` + +#### LR_OBJNR — ranges · unit 로컬 · L1539-L1539 {#decl-zcoc0120f01-1539-lr_objnr} + +```abap + RANGES : LR_OBJNR FOR ONROR-OBJNR. +``` + +#### LV_CNT — data · unit 로컬 · L1540-L1540 {#decl-zcoc0120f01-1540-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### LV_NPERBL — data · unit 로컬 · L1541-L1541 {#decl-zcoc0120f01-1541-lv_nperbl} + +```abap + DATA : LV_NPERBL(3) TYPE N. +``` + +#### LV_FIELD — data · unit 로컬 · L1542-L1542 {#decl-zcoc0120f01-1542-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L1543-L1543 {#decl-zcoc0120f01-1543--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LR_WRTTP — ranges · unit 로컬 · L1546-L1546 {#decl-zcoc0120f01-1546-lr_wrttp} + +```abap + RANGES : LR_WRTTP FOR COSP-WRTTP. +``` + +#### LR_VERSN — ranges · unit 로컬 · L1547-L1547 {#decl-zcoc0120f01-1547-lr_versn} + +```abap + RANGES : LR_VERSN FOR COSP-VERSN. +``` + +#### LR_AUFNR — ranges · unit 로컬 · L1623-L1623 {#decl-zcoc0120f01-1623-lr_aufnr} + +```abap + RANGES : LR_AUFNR FOR AUFK-AUFNR. +``` + +#### LR_BUDAT — ranges · unit 로컬 · L1624-L1624 {#decl-zcoc0120f01-1624-lr_budat} + +```abap + RANGES : LR_BUDAT FOR COBK-BUDAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0120 L25-31 | 0 | INITIALIZATION 에서 화면 기본값(SET_DYNP)과 엑셀 양식 다운로드 버튼(FC01_ACTIVE)을 설정한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0120 L32-34 | 0 | AT SELECTION-SCREEN 에서 CONTROL_FCXX 를 호출하여 선택화면 기능키(FC01 엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0120 L35-40 | 0 | 선택화면 PBO 에서 LOOP_AT_SCREEN 을 호출하여 모드별 화면 필드 표시/숨김을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0120 L41-46 | 0 | 업로드 파일 경로 P_FNAME 의 F4 도움말로 파일 선택 다이얼로그(F4_FNAME)를 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC0120 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0120 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0120C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0120C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0120C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0120C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0120C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0120C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0120C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0120C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0120C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0120C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0120C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0120C01 L149-152 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0120C01 L161-177 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0120C01 L186-189 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0120C01 L198-201 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0120C01 L211-219 | 0 | | +| ON_F4 | FORM | ZCOC0120C01 L233-249 | 0 | | +| ON_F4_100 | FORM | ZCOC0120C01 L263-281 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0120C01 L291-361 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0120C01 L371-436 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0120C01 L448-466 | 0 | | +| FILL_FCAT | FORM | ZCOC0120C01 L480-561 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0120C01 L572-622 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0120C01 L634-692 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0120C01 L702-712 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0120F01 L6-23 | 0 | 선택화면에서 MG1 그룹 필드를 입력 불가로 만들고 모드(P_SETT/P_SAV)에 따라 파일(MG2)·상태(MG3) 필드 그룹을 숨긴다. | +| SET_DYNP | FORM | ZCOC0120F01 L30-37 | 0 | 선택화면 초기화 시 회사코드(P_BUKRS)·관리회계영역(P_KOKRS) 기본 정보를 읽어 텍스트(P_BUTXT, P_BEZEI)를 화면에 설정한다. | +| CONTROL_FCXX | FORM | ZCOC0120F01 L46-59 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0120 엑셀 양식을 연다. | +| CHECK_INPUT | FORM | ZCOC0120F01 L68-75 | 1 | 자산생성 모드(P_SAV)에서 업로드 파일 경로(P_FNAME)가 입력되지 않으면 오류 메시지를 내고 처리를 중단한다. | +| INITIALIZE_DATA | FORM | ZCOC0120F01 L81-112 | 0 | 회사코드·관리회계영역 텍스트 설정, 메인 ALV 필드카탈로그 취득, BDC 표시 모드 설정 및 처리 상태 플래그(업로드 오류·기처리·변경) 초기화를 수행한다. | +| PROCESS_DATA | FORM | ZCOC0120F01 L118-136 | 1 | 선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회하고 모드(P_SAV 자산생성/P_SETT 정산규칙)에 따라 READ_DATA 또는 PROCESS_SETTLEMENT 로 분기한다. | +| FC01_ACTIVE | FORM | ZCOC0120F01 L145-148 | 0 | 선택화면 버튼 FC01 을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC0120F01 L157-252 | 2 | 동적 업로드 테이블 의 문자 데이터를 대문자 변환·%제거·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이관한다. | +| VALIDATION_CHECK_A | FORM | ZCOC0120F01 L262-546 | 10 | 엑셀 업로드 데이터(자산생성 모드)를 코스트센터·자산클래스·오더·기존 자산 마스터로 검증하고 금액/% 규칙, 중복 저장, 예산 초과, 오더유형(I/S)을 점검하여 행별 오류 상태·메시지를 설정한다. | +| READ_DATA | FORM | ZCOC0120F01 L555-580 | 1 | 자산생성 모드의 엑셀 읽기 흐름: 동적 업로드 테이블 생성, 엑셀 읽기(UPLOAD_XLS_STRUCT), GT_DATA 이관, 통화 변환·검증(VALIDATION_CHECK_A)·COSP 실적 조회, 표시 편집을 수행한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC0120F01 L588-596 | 0 | 오류 필드명을 ALV 셀 색상 테이블(F_COL)에 적색(COL=6)으로 등록하여 해당 셀을 강조 표시하는 헬퍼이다. | +| EXECUTE_BDC | FORM | ZCOC0120F01 L602-630 | 1 | 정산규칙 생성 버튼(&RUN) 처리: 중복 실행·미검증 변경 여부를 점검하고 확인 팝업 후 CREATE_SETTLEMENT_RULE(KO02 BDC)과 MODIFY_DB(ZCOT0040 갱신)를 수행한다. | +| BDC_OPTION | FORM | ZCOC0120F01 L638-646 | 0 | KO02 BDC 실행 옵션(DEFSIZE, 업데이트 모드 S, 표시 모드 PV_DSMOD)을 SET_BDC_OPTION 으로 GS_BDC_OPTION에 설정하는 단순 래퍼이다. | +| SHOW_ERROR_LOG | FORM | ZCOC0120F01 L654-712 | 2 | ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 팝업 그리드로 표시한다. | +| SELECT_DATA | FORM | ZCOC0120F01 L721-770 | 2 | 정산규칙 모드에서 ZCOT0040 저장 내역을 상태(미처리/실패/성공)로 필터링하고 ONROR 오브젝트번호를 붙여 GT_DATA를 구성한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC0120F01 L779-805 | 0 | 상태(S/E/W)에 따른 아이콘과 메시지 텍스트를 구성하여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 공통 로그 헬퍼이다. | +| EDIT_DATA_A | FORM | ZCOC0120F01 L814-831 | 1 | 업로드 데이터에 구분 텍스트(자산신규생성/기존 자산)와 통화·단위를 채워 ALV 표시용으로 편집한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC0120F01 L839-885 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| CHECK_VALUE_FIELD | FORM | ZCOC0120F01 L893-922 | 1 | 현재 GT_DATA 행에서 정산금액(BETRR)과 정산%(PROZS)가 둘 다 입력되었는지 확인하여 오류 플래그 PV_ERR 를 반환한다. | +| CONVERT_KRW_DATA | FORM | ZCOC0120F01 L929-949 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다. | +| EXECUTE_BAPI | FORM | ZCOC0120F01 L958-983 | 1 | 자산 생성 버튼(&SAV) 처리: 중복 실행을 막고 확인 팝업 후 CREATE_FIXED_ASSET(본자산 생성)과 SAVE_DB(ZCOT0040 저장)를 수행한다. | +| CREATE_FIXED_ASSET | FORM | ZCOC0120F01 L992-1078 | 3 | 업로드 구분 '1'(신규) 건에 대해 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 결과(자산번호·상태·메시지)를 GT_DATA에 반영하며 기존 자산(구분 2)은 성공으로 표시한다. | +| CREATE_SETTLEMENT_RULE | FORM | ZCOC0120F01 L1087-1202 | 4 | 오더별로 KO02 BDC(SAPLKOBS 정산규칙 화면)를 구성·실행하여 자산별 정산규칙(금액 또는 %)을 생성하고 결과를 GT_DATA에 반영한다. | +| SAVE_DB | FORM | ZCOC0120F01 L1211-1246 | 2 | 본자산 생성에 성공한 건의 정산규칙 내역을 ZCOT0040 테이블에 저장하고 결과 메시지를 GT_DATA에 반영한다. | +| VALIDATION_CHECK_C | FORM | ZCOC0120F01 L1255-1389 | 5 | 정산규칙 모드에서 저장 내역의 오더(AUFK/ONROR)·자산(ANLA) 존재를 확인하고 오더별 정산% 합계 100%, 금액/% 택일, Z_CO_CHECK_BUDGET 예산 초과를 검증하여 상태·메시지를 설정한다. | +| PROCESS_SETTLEMENT | FORM | ZCOC0120F01 L1398-1406 | 1 | 정산규칙 모드의 처리 흐름으로 SELECT_DATA(ZCOT0040 조회)·SELECT_COSP(실적 누계)·VALIDATION_CHECK_C(검증)를 순서대로 수행하고 점검 완료 메시지를 낸다. | +| DATA_CHANGED_MODIFY | FORM | ZCOC0120F01 L1414-1492 | 2 | ALV에서 정산금액(BETRR)·정산%(PROZS) 셀이 수정되면 GT_DATA에 반영하고 즉시 ZCOT0040 을 UPDATE 하며 변경 플래그(GV_CHANGED)를 설정한다. | +| MODIFY_DB | FORM | ZCOC0120F01 L1501-1527 | 1 | 정산규칙 BDC 처리 결과(정산금액·정산%·성공 여부)를 기존 ZCOT0040 저장 내역에 반영하여 DB를 갱신한다. | +| SELECT_COSP | FORM | ZCOC0120F01 L1536-1614 | 2 | 오더 오브젝트번호별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 의 12개월 합계를 조회하여 GT_DATA-WKG_SUM(실적 누계)에 채운다. | +| CALL_KOB1 | FORM | ZCOC0120F01 L1622-1648 | 1 | 선택한 행의 오더번호로 KOB1(오더 실적 라인아이템) 조회 프로그램 RKAEP000 을 전체 전기일 기간으로 호출한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0120I01 L6-32 | 1 | 화면 0100의 OK 코드에 따라 자산 생성(&SAV), 정산규칙 BDC 실행(&RUN), 재검증(&VAL) 또는 화면 종료를 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0120O01 L6-33 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0120O01 L39-82 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0120O01 L92-136 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0120O01 L144-168 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0120O01 L176-185 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0120O01 L193-215 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0120O01 L224-252 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0120O01 L261-280 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0120O01 L290-414 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0120O01 L422-447 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC0130.md b/wiki/programs/ZCOC0130.md new file mode 100644 index 0000000..f641bde --- /dev/null +++ b/wiki/programs/ZCOC0130.md @@ -0,0 +1,4326 @@ +--- +type: abap-program +title: "ZCOC0130 — I/F 원가요소 관리" +description: "관리회계(CO) 사용자 프로그램들이 공통으로 참조하는 원가요소(Cost Element) 용도 구분을 관리하는 설정 화면이다. 관리회계영역의 원가요소 마스터 CSKB/CSKU 에서 원가요소 0050000000~0069999999 범위(비용 계정)를 조회하고, 각 원가요소가 '예산조정대상'(KSTARTYPE 010), '판매운영비대상'(020), '리포트 조회'(030) 대상인지 체크박스로 표시·편집한 뒤 저장하면 관리회계영역 단위로 ZCOT0050 을 전체 삭제 후 재작성한다. P_CHECK 옵션으로 이미 하나 이상 지정된 원가요소만 조회할 수 있다." +resource: "abap://ZCOC0130" +tags: ["원가요소", "기준정보관리", "예산관리", "판매운영비", "설정화면", "화면 명령 분기", "저장", "화면 종료", "원가요소 용도 변환", "체크박스", "저장 데이터 구성", "원가요소 용도 저장", "전체 삭제 후 재작성", "커밋/롤백", "관리회계영역", "원가요소 용도 설정 조회", "ALV 기본 행", "용도 체크박스 매핑", "예산조정대상", "판매운영비대상"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:13+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKU", "DD07T", "T001", "TKA01", "TKT09", "ZCOT0050"] +x-tables-write: ["GT_DATA", "ZCOT0050"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "f3fe6c8b5df5f1a28b3132f6ec351bcdc31ec7644e59353e9b4100c8ecf88595" +x-unit-count: 131 +x-chunk-count: 57 +x-declaration-count: 218 +--- + +## 업무 목적 + +관리회계(CO) 사용자 프로그램들이 공통으로 참조하는 원가요소(Cost Element) 용도 구분을 관리하는 설정 화면이다. 관리회계영역의 원가요소 마스터 CSKB/CSKU 에서 원가요소 0050000000~0069999999 범위(비용 계정)를 조회하고, 각 원가요소가 '예산조정대상'(KSTARTYPE 010), '판매운영비대상'(020), '리포트 조회'(030) 대상인지 체크박스로 표시·편집한 뒤 저장하면 관리회계영역 단위로 ZCOT0050 을 전체 삭제 후 재작성한다. P_CHECK 옵션으로 이미 하나 이상 지정된 원가요소만 조회할 수 있다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 설정하고 화면 필드(MG1)를 입력 불가로 제어한다 (SET_DYNP, LOOP_AT_SCREEN) +2. ALV 필드카탈로그와 상태 플래그를 초기화하고 CSKB/CSKU 에서 관리회계영역의 유효 원가요소(0050000000~0069999999)를 조회하여 GT_KSTAR 와 범위 GR_KSTAR 를 만든다 (INITIALIZE_DATA, DETERMINE_KSTAR) +3. ZCOT0050 에서 관리회계영역의 기존 원가요소 용도 설정을 읽고 원가요소별로 KSTARTYPE 010/020/030/040/050 을 CHECK_010~CHECK_050 체크박스에 매핑한다 (PROCESS_DATA, SELECT_DATA) +4. P_CHECK 가 선택된 경우 어떤 용도에도 지정되지 않은 원가요소는 목록에서 제외한다 (SELECT_DATA) +5. 원가요소·명칭과 세 개의 편집 가능한 체크박스(예산조정대상/판매운영비대상/리포트 조회)를 화면 100 ALV 에 표시한다 (CALL SCREEN 100) +6. '저장'(&SAV) 시 체크된 항목을 KSTAR+KSTARTYPE 행으로 변환하여 관리회계영역의 ZCOT0050 을 DELETE 후 MODIFY 하고 COMMIT/ROLLBACK 한다 (SAVE_DB) + +## 핵심 내부테이블 + +- `GT_KSTAR` — 관리회계영역의 유효 원가요소 및 명칭 (CSKB/CSKU, 0050000000~0069999999) (채움: DETERMINE_KSTAR / 소비: SELECT_DATA) +- `GT_ZCOT0050` — 기존 원가요소 용도 설정 (ZCOT0050: KOKRS, KSTAR, KSTARTYPE, KTEXT) (채움: SELECT_DATA / 소비: SELECT_DATA) +- `GT_DATA` — 메인 ALV 데이터: 원가요소·명칭·CHECK_010~050 체크박스 (채움: SELECT_DATA / 소비: DISPLAY_ALV_LIST, SAVE_DB) +- `GR_KSTAR` — 조회 대상 원가요소 RANGE (본 프로그램 내 후속 사용 없음) (채움: DETERMINE_KSTAR / 소비: ?) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKU, DD07T, T001, TKA01, TKT09, ZCOT0050 +- write: GT_DATA, ZCOT0050 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (57건 / unit 50개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM INITIALIZE_DATA — `ZCOC0130F01` L32-L55 (24줄) + +*관리회계영역 기본정보와 메인 ALV 필드카탈로그를 취득하고 상태 변수를 초기화한 뒤 DETERMINE_KSTAR로 조회 대상 원가요소를 결정하는 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE(TKA01)로 관리회계영역 명칭을 P_BEZEI에 넣고 GET_FCAT_LIKE_ITAB으로 GT_DATA 기준 ALV 필드카탈로그를 만든 뒤, 로그·오류·전기 플래그를 초기화하고 DETERMINE_KSTAR로 유효 원가요소 목록을 조회한다. + +```abap + 37| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 38| P_BEZEI = GV_KOKRS_BEZEI. + 39| + 40| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 41| " MAIN ALV용 딕셔너리 구조 취득. + 42| PERFORM GET_FCAT_LIKE_ITAB + 43| TABLES GT_MAIN_FIELDCAT + 44| USING GC_MAIN_ITAB_NAME. + 45| + 46| CLEAR : GT_LOG_POP, GT_LOG_POP[]. + 47| CLEAR : GV_LOCK, GT_EXCP_INIT_FIELD, GT_EXCP_INIT_FIELD[]. + 48| " 프로그램 LOCK 정의 + 49| + 50| CLEAR : GV_UPLOAD_ERROR. + 51| CLEAR : GV_ALREADY_POST. + 52| CLEAR : GV_POST_ERROR. + 53| + 54| PERFORM DETERMINE_KSTAR. +``` + +- **EN**: Load controlling area base data, build the main ALV field catalog, reset status flags and determine the valid cost element list via DETERMINE_KSTAR. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB, DETERMINE_KSTAR +- SAP 객체: SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB, DETERMINE_KSTAR, TKA01 +- 업무 키워드: 초기화, 관리회계영역 기본정보, 필드카탈로그, 원가요소 결정 +- English: Initialization, Controlling Area, Field Catalog, Cost Element +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc0130top-37-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc0130top-28-gc_main_itab_name), [`GT_LOG_POP`](#decl-zcoc0130top-75-gt_log_pop), [`GV_LOCK`](#decl-zcoc0130top-21-gv_lock), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field), [`GV_UPLOAD_ERROR`](#decl-zcoc0130top-22-gv_upload_error), [`GV_ALREADY_POST`](#decl-zcoc0130top-23-gv_already_post), [`GV_POST_ERROR`](#decl-zcoc0130top-24-gv_post_error) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L37-L54` · confidence 0.8 · `ZCOC0130#ZCOC0130F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM DETERMINE_KSTAR — `ZCOC0130F01` L123-L148 (26줄) + +*CSKB/CSKU에서 관리회계영역의 유효한 비용 원가요소(0050000000~0069999999)와 명칭을 조회해 GT_KSTAR와 RANGE GR_KSTAR를 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKB(관리회계영역별 원가요소)와 CSKU(원가요소 텍스트)를 조인해 관리회계영역(P_KOKRS), 원가요소 범위 0050000000~0069999999, 오늘 유효(DATBI/DATAB), 로그온 언어 조건으로 원가요소·명칭을 GT_KSTAR에 조회·정렬하고, 각 원가요소를 RANGE GR_KSTAR에 EQ 조건으로 추가한다. + +```abap + 131| SELECT A~KSTAR B~KTEXT + 132| FROM CSKB AS A INNER JOIN CSKU AS B + 133| ON A~KSTAR = B~KSTAR + 134| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 135| WHERE A~KOKRS = P_KOKRS + 136| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 137| AND SPRAS = SY-LANGU + 138| AND A~DATBI >= SY-DATUM + 139| AND A~DATAB <= SY-DATUM + 140| AND A~KSTAR IN LR_KSTAR. + 141| + 142| SORT GT_KSTAR BY KSTAR. + 143| + 144| " 실 제조회 대상 원가요소 + 145| LOOP AT GT_KSTAR. + 146| ADD_RANGE_EQ : GR_KSTAR GT_KSTAR-KSTAR. + 147| ENDLOOP. +``` + +- **EN**: Join CSKB and CSKU to select valid cost elements in range 0050000000-0069999999 with texts for the controlling area, sort into GT_KSTAR and build the GR_KSTAR range. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU, GT_KSTAR, GR_KSTAR +- 업무 키워드: 원가요소 마스터 조회, 비용 계정 범위, 관리회계영역, 유효기간, 원가요소 RANGE +- English: Cost Element, CSKB, CSKU, Controlling Area, Range +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcoc0130top-87-gt_kstar), [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs), [`LR_KSTAR`](#decl-zcoc0130f01-124-lr_kstar), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KSTAR`](#decl-zcoc0130top-86-gr_kstar) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L131-L147` · confidence 0.95 · `ZCOC0130#ZCOC0130F01#FORM#DETERMINE_KSTAR#C1` + +### FORM SELECT_DATA — `ZCOC0130F01` L72-L114 (43줄) + +*ZCOT0050의 기존 원가요소 용도 설정을 읽어 GT_KSTAR 기반 GT_DATA에 CHECK_010~050 체크박스로 매핑하고 P_CHECK 옵션 시 미지정 원가요소를 제외하는 FORM이다.* + +> 이 unit 의 조각 2개가 36/43줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 관리회계영역(P_KOKRS)의 원가요소 용도 설정을 ZCOT0050에서 GT_ZCOT0050으로 조회하고, 유효 원가요소 목록 GT_KSTAR를 GT_DATA로 복사해 ALV 기본 행을 만든다. + +```abap + 77| SELECT * FROM ZCOT0050 + 78| INTO TABLE GT_ZCOT0050 + 79| WHERE KOKRS = P_KOKRS. + 80| + 81| LOOP AT GT_KSTAR. + 82| MOVE-CORRESPONDING GT_KSTAR TO GT_DATA. + 83| APPEND GT_DATA. CLEAR : GT_DATA. + 84| ENDLOOP. +``` + +- **EN**: Read existing cost element usage settings from ZCOT0050 for the controlling area and seed GT_DATA with the valid cost element list GT_KSTAR. +- 테이블(파서): read [ZCOT0050](/tables/ZCOT0050.md) / write - +- SAP 객체: ZCOT0050, GT_KSTAR, GT_DATA +- 업무 키워드: 원가요소 용도 설정 조회, 관리회계영역, ALV 기본 행 +- English: ZCOT0050, Cost Element, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_ZCOT0050`](#decl-zcoc0130top-102-gt_zcot0050), [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs), [`GT_KSTAR`](#decl-zcoc0130top-87-gt_kstar), [`GT_DATA`](#decl-zcoc0130top-54-gt_data) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L77-L84` · confidence 0.9 · `ZCOC0130#ZCOC0130F01#FORM#SELECT_DATA#C1` + +#### [calculation] 원가요소별로 GT_ZCOT0050의 KSTARTYPE(010 예산조정대상, 020 판매운영비대상, 030 리포트 조회, 040, 050)을 CHECK_010~CHECK_050 체크박스 'X'로 매핑하고, P_CHECK='X'이면 어떤 용도에도 지정되지 않은 원가요소를 GT_DATA에서 삭제한다. + +```abap + 86| LOOP AT GT_DATA. + 87| LOOP AT GT_ZCOT0050 WHERE KSTAR = GT_DATA-KSTAR. + 88| CASE GT_ZCOT0050-KSTARTYPE. + 89| WHEN '010'. + 90| GT_DATA-CHECK_010 = 'X'. + 91| WHEN '020'. + 92| GT_DATA-CHECK_020 = 'X'. + 93| WHEN '030'. + 94| GT_DATA-CHECK_030 = 'X'. + 95| WHEN '040'. + 96| GT_DATA-CHECK_040 = 'X'. + 97| WHEN '050'. + 98| GT_DATA-CHECK_050 = 'X'. + 99| WHEN OTHERS. + 100| ENDCASE. + 101| ENDLOOP. + 102| MODIFY GT_DATA. + 103| CLEAR : GT_DATA. + 104| ENDLOOP. + 105| + 106| IF P_CHECK = 'X'. + 107| DELETE GT_DATA WHERE + 108| CHECK_010 NE 'X' AND + 109| CHECK_020 NE 'X' AND + 110| CHECK_030 NE 'X' AND + 111| CHECK_040 NE 'X' AND + 112| CHECK_050 NE 'X' . + 113| ENDIF. +``` + +- **EN**: Map each cost element's KSTARTYPE entries (010 budget adjustment, 020 sales operating cost, 030 report, 040, 050) to CHECK_010..050 flags and, when P_CHECK is set, drop cost elements with no usage assigned. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0050, GT_DATA +- 업무 키워드: 용도 체크박스 매핑, 예산조정대상, 판매운영비대상, 리포트 조회, 미지정 원가요소 제외 +- English: Cost Element, Usage Type, Checkbox, Filter +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0130top-54-gt_data), [`GT_ZCOT0050`](#decl-zcoc0130top-102-gt_zcot0050), [`P_CHECK`](#decl-zcoc0130top-127-p_check) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L86-L113` · confidence 0.9 · `ZCOC0130#ZCOC0130F01#FORM#SELECT_DATA#C2` + +### EVENT END-OF-SELECTION — `ZCOC0130` L50-L61 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 51| IF SY-BATCH NE 'X'. + 52| IF GT_DATA[] IS NOT INITIAL. + 53| CALL SCREEN 100. + 54| ELSE. + 55| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 56| ENDIF. + 57| ELSE. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 60| ENDIF. + 61| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0130top-54-gt_data) +- 위치: `abap://ZCOC0130/ZCOC0130#L51-L61` · confidence 0.85 · `ZCOC0130#ZCOC0130#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC0130/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC0130/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC0130/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC0130/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC0130/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0130#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0130#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC0130/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0130#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SAVE_DB — `ZCOC0130F01` L157-L200 (44줄) + +*ALV에서 체크된 원가요소 용도(CHECK_010~050)를 KSTAR+KSTARTYPE 행으로 변환해 관리회계영역의 ZCOT0050을 전체 삭제 후 재작성하고 COMMIT하는 FORM이다.* + +> 이 unit 의 조각 2개가 37/44줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] GT_DATA 각 원가요소에 대해 CHECK_010~CHECK_050 필드를 동적 ASSIGN으로 확인해 'X'인 용도마다 KOKRS·KSTAR·KSTARTYPE(010~050)·KTEXT 행을 LT_ZCOT0050에 생성한다. + +```abap + 162| LOOP AT GT_DATA. + 163| LT_ZCOT0050-KOKRS = P_KOKRS. + 164| + 165| CLEAR : LV_NUM. + 166| DO 5 TIMES. + 167| LV_NUM = LV_NUM + 10. + 168| CONCATENATE 'GT_DATA-CHECK_' LV_NUM + 169| INTO LV_FIELD. + 170| + 171| ASSIGN (LV_FIELD) TO . + 172| + 173| IF SY-SUBRC EQ 0. + 174| IF EQ 'X'. + 175| LT_ZCOT0050-KSTAR = GT_DATA-KSTAR. + 176| LT_ZCOT0050-KSTARTYPE = LV_NUM. + 177| LT_ZCOT0050-KTEXT = GT_DATA-KTEXT. + 178| APPEND LT_ZCOT0050. + 179| ENDIF. + 180| ENDIF. + 181| ENDDO. + 182| CLEAR : LT_ZCOT0050. + 183| ENDLOOP. +``` + +- **EN**: For each cost element row, inspect the CHECK_010..050 checkbox fields dynamically and build one ZCOT0050 line per selected usage type (KSTARTYPE). +- SAP 객체: ZCOT0050, GT_DATA +- 업무 키워드: 원가요소 용도 변환, 체크박스, 저장 데이터 구성 +- English: Cost Element, Usage Type, Checkbox, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0130top-54-gt_data), [`LT_ZCOT0050`](#decl-zcoc0130f01-158-lt_zcot0050), [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs), [`LV_NUM`](#decl-zcoc0130f01-161-lv_num), [`LV_FIELD`](#decl-zcoc0130f01-159-lv_field), [``](#decl-zcoc0130f01-160--fs-) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L162-L183` · confidence 0.9 · `ZCOC0130#ZCOC0130F01#FORM#SAVE_DB#C1` + +#### [db_write] 구성된 행이 있으면 정렬 후 관리회계영역(P_KOKRS)의 ZCOT0050을 DELETE하고 MODIFY로 재작성하며, 성공 시 '저장되었습니다' 메시지와 COMMIT WORK, 실패 시 오류 메시지와 ROLLBACK WORK를 수행한다. + +```abap + 185| IF LT_ZCOT0050[] IS NOT INITIAL. + 186| SORT LT_ZCOT0050 BY KSTAR KSTARTYPE. + 187| + 188| DELETE FROM ZCOT0050 WHERE KOKRS = P_KOKRS. + 189| + 190| MODIFY ZCOT0050 FROM TABLE LT_ZCOT0050. + 191| + 192| IF SY-SUBRC EQ 0. + 193| MESSAGE S000 WITH '저장되었습니다.'(F01). + 194| COMMIT WORK. + 195| ELSE. + 196| MESSAGE E000 WITH '저장에 실패하였습니다.'(F02). + 197| ROLLBACK WORK. + 198| ENDIF. + 199| ENDIF. +``` + +- **EN**: Delete all ZCOT0050 rows of the controlling area and re-insert the built lines via MODIFY, committing on success or rolling back with an error message on failure. +- 테이블(파서): read - / write [ZCOT0050](/tables/ZCOT0050.md) +- SAP 객체: ZCOT0050 +- 업무 키워드: 원가요소 용도 저장, 전체 삭제 후 재작성, 커밋/롤백, 관리회계영역 +- English: ZCOT0050, DELETE, MODIFY, COMMIT WORK, ROLLBACK WORK +- 정의부(복사 시 함께 필요): [`LT_ZCOT0050`](#decl-zcoc0130f01-158-lt_zcot0050), [`P_KOKRS`](#decl-zcoc0130top-119-p_kokrs) +- 위치: `abap://ZCOC0130/ZCOC0130F01#L185-L199` · confidence 0.95 · `ZCOC0130#ZCOC0130F01#FORM#SAVE_DB#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC0130I01` L6-L29 (24줄) + +*화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &SAV 저장)을 분기 처리하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드에 따라 BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 화면을 종료하며, &SAV 시 SAVE_DB를 수행해 원가요소 용도 설정을 ZCOT0050에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| + 23| WHEN '&SAV'. + 24| PERFORM SAVE_DB. + 25| WHEN OTHERS. + 26| * LEAVE PROGRAM. + 27| ENDCASE. +``` + +- **EN**: Dispatch screen 100 function codes: free ALV containers and leave on BACK/CANC/EXIT, call SAVE_DB on &SAV to persist cost element usage settings to ZCOT0050. +- 호출(파서): CLEAR_CONTAINER_PROC, SAVE_DB +- SAP 객체: SAVE_DB, CLEAR_CONTAINER_PROC, ZCOT0050 +- 업무 키워드: 화면 명령 분기, 저장, 화면 종료 +- English: User Command, PAI, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0130top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0130c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC0130/ZCOC0130I01#L9-L27` · confidence 0.9 · `ZCOC0130#ZCOC0130I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (305건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC0130C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0130c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC0130TOP` (44건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc0130top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc0130top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc0130top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc0130top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0130top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc0130top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### CSKA — tables · L4-L4 {#decl-zcoc0130top-4-cska} + +```abap +TABLES : DD03L, CSKA, KMAS_D. +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc0130top-4-dd03l} + +```abap +TABLES : DD03L, CSKA, KMAS_D. +``` + +#### KMAS_D — tables · L4-L4 {#decl-zcoc0130top-4-kmas_d} + +```abap +TABLES : DD03L, CSKA, KMAS_D. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc0130top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0130top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc0130top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc0130top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0130top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0130top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0130top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc0130top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc0130top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCO_STRUC1'. +``` + +#### GT_MAIN_FIELDCAT — data · L37-L37 {#decl-zcoc0130top-37-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L42-L42 {#decl-zcoc0130top-42--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L43-L43 {#decl-zcoc0130top-43--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L45-L45 {#decl-zcoc0130top-45-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L46-L46 {#decl-zcoc0130top-46-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L48-L48 {#decl-zcoc0130top-48-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L49-L49 {#decl-zcoc0130top-49-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L54-L71 {#decl-zcoc0130top-54-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + +DATA : +KSTAR LIKE CSKB-KSTAR, +KTEXT LIKE CSKT-KTEXT, +CHECK_010 TYPE C, +CHECK_020 TYPE C, +CHECK_030 TYPE C, +CHECK_040 TYPE C, +CHECK_050 TYPE C, +EXCEL_LINE TYPE I, +MARK TYPE C , +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L73-L73 {#decl-zcoc0130top-73-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L75-L79 {#decl-zcoc0130top-75-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L82-L82 {#decl-zcoc0130top-82-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L84-L84 {#decl-zcoc0130top-84-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GR_KSTAR — ranges · L86-L86 {#decl-zcoc0130top-86-gr_kstar} + +```abap +RANGES : GR_KSTAR FOR CSKA-KSTAR. +``` + +#### GT_KSTAR — data · L87-L90 {#decl-zcoc0130top-87-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KTEXT LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GT_KSTAR_ZCOT0070 — data · L92-L98 {#decl-zcoc0130top-92-gt_kstar_zcot0070} + +```abap +DATA : BEGIN OF GT_KSTAR_ZCOT0070 OCCURS 0. + INCLUDE STRUCTURE ZCOT0070. + +DATA : +KSTAR LIKE CSKB-KSTAR, +KTEXT LIKE CSKU-KTEXT, +END OF GT_KSTAR_ZCOT0070. +``` + +#### GT_ZCOT0070 — data · L100-L100 {#decl-zcoc0130top-100-gt_zcot0070} + +```abap +DATA : GT_ZCOT0070 LIKE ZCOT0070 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0050 — data · L102-L102 {#decl-zcoc0130top-102-gt_zcot0050} + +```abap +DATA : GT_ZCOT0050 LIKE ZCOT0050 OCCURS 0 WITH HEADER LINE. +``` + +#### GF_DATA — data · L104-L104 {#decl-zcoc0130top-104-gf_data} + +```abap +DATA : GF_DATA TYPE REF TO DATA. +``` + +#### — field-symbol · L105-L105 {#decl-zcoc0130top-105--fs_tdata-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L106-L106 {#decl-zcoc0130top-106--fs_main_tdata-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L107-L107 {#decl-zcoc0130top-107--fs_sdata-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GT_LIST_FIELDCAT — data · L108-L108 {#decl-zcoc0130top-108-gt_list_fieldcat} + +```abap +DATA : GT_LIST_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_KSTAR_FIELDCAT — data · L109-L109 {#decl-zcoc0130top-109-gt_kstar_fieldcat} + +```abap +DATA : GT_KSTAR_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_ZCOT0070_FIELDCAT — data · L110-L110 {#decl-zcoc0130top-110-gt_zcot0070_fieldcat} + +```abap +DATA : GT_ZCOT0070_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### P_KOKRS — parameter · L119-L120 {#decl-zcoc0130top-119-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_CHECK — parameter · L127-L127 {#decl-zcoc0130top-127-p_check} + +```abap +PARAMETERS : P_CHECK TYPE C AS CHECKBOX DEFAULT 'X'. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC0130F01` (5건) + +#### LR_KSTAR — ranges · unit 로컬 · L124-L124 {#decl-zcoc0130f01-124-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LT_ZCOT0050 — data · unit 로컬 · L158-L158 {#decl-zcoc0130f01-158-lt_zcot0050} + +```abap + DATA : LT_ZCOT0050 LIKE ZCOT0050 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FIELD — data · unit 로컬 · L159-L159 {#decl-zcoc0130f01-159-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L160-L160 {#decl-zcoc0130f01-160--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_NUM — data · unit 로컬 · L161-L161 {#decl-zcoc0130f01-161-lv_num} + +```abap + DATA : LV_NUM(3) TYPE N. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC0130 L25-30 | 0 | 프로그램 시작 시 SET_DYNP로 관리회계영역 명칭 등 선택화면 기본값을 설정하는 INITIALIZATION 이벤트이다. | +| AT SELECTION-SCREEN | EVENT | ZCOC0130 L31-32 | 0 | 내용이 없는 빈 AT SELECTION-SCREEN 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0130 L33-42 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 이벤트이다. | +| START-OF-SELECTION | EVENT | ZCOC0130 L43-49 | 0 | 초기화(INITIALIZE_DATA) 후 PROCESS_DATA로 원가요소 용도 설정을 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC0130 L50-61 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0130C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0130C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0130C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0130C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0130C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0130C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0130C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0130C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0130C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC0130C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC0130C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC0130C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC0130C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC0130C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC0130C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC0130C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOC0130C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOC0130C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC0130C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC0130C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC0130C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOC0130C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC0130C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC0130C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0130C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC0130F01 L6-15 | 0 | 선택화면 그룹 MG1 필드(관리회계영역)를 입력 불가로 제어하는 화면 속성 FORM이다. | +| SET_DYNP | FORM | ZCOC0130F01 L22-26 | 0 | 초기화 시 SET_KOKRS_BASE(TKA01)로 관리회계영역 명칭을 조회해 선택화면 P_BEZEI에 표시하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC0130F01 L32-55 | 1 | 관리회계영역 기본정보와 메인 ALV 필드카탈로그를 취득하고 상태 변수를 초기화한 뒤 DETERMINE_KSTAR로 조회 대상 원가요소를 결정하는 FORM이다. | +| PROCESS_DATA | FORM | ZCOC0130F01 L61-63 | 0 | SELECT_DATA를 호출해 원가요소 용도 설정 데이터를 조회하는 단순 제어 FORM이다. | +| SELECT_DATA | FORM | ZCOC0130F01 L72-114 | 2 | ZCOT0050의 기존 원가요소 용도 설정을 읽어 GT_KSTAR 기반 GT_DATA에 CHECK_010~050 체크박스로 매핑하고 P_CHECK 옵션 시 미지정 원가요소를 제외하는 FORM이다. | +| DETERMINE_KSTAR | FORM | ZCOC0130F01 L123-148 | 1 | CSKB/CSKU에서 관리회계영역의 유효한 비용 원가요소(0050000000~0069999999)와 명칭을 조회해 GT_KSTAR와 RANGE GR_KSTAR를 만드는 FORM이다. | +| SAVE_DB | FORM | ZCOC0130F01 L157-200 | 2 | ALV에서 체크된 원가요소 용도(CHECK_010~050)를 KSTAR+KSTARTYPE 행으로 변환해 관리회계영역의 ZCOT0050을 전체 삭제 후 재작성하고 COMMIT하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC0130I01 L6-29 | 1 | 화면 100의 사용자 명령(BACK/CANC/EXIT 종료, &SAV 저장)을 분기 처리하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC0130O01 L6-16 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0130O01 L22-66 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0130O01 L76-120 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC0130O01 L128-151 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC0130O01 L159-168 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC0130O01 L176-198 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0130O01 L207-235 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0130O01 L244-259 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC0130O01 L269-349 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC0130O01 L357-384 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC1010.md b/wiki/programs/ZCOC1010.md new file mode 100644 index 0000000..7a0b1a8 --- /dev/null +++ b/wiki/programs/ZCOC1010.md @@ -0,0 +1,4630 @@ +--- +type: abap-program +title: "ZCOC1010 — Hisis 매출 상세 내역 PA 기표" +description: "하이마트 매출관리 시스템(Hisis)에서 인터페이스된 월 매출 상세 데이터(ZCOT0140)를 관리회계영역·연도·기간 기준으로 집계(COLLECT)하여 CO-PA(수익성분석) 기표 대상 내역을 만드는 프로그램이다. 지점(WW120, ZCOT0090)·품목상세(WW240, ZCOT0110)·메이커(WW300, ZCOT0080) 등 CO-PA 특성 마스터로 상위 특성(사업부/지사, 품목 대·중·소)과 텍스트를 보완하고 존재하지 않는 특성은 오류로 표시한다. 사용자가 '저장' 하면 기표 대상(PATYPE '100', 레코드유형 F, 통화유형 01, 전기일 = 해당 월 말일)을 ZCOT0150 에 저장하며, 실제 CO-PA 전기는 후속 프로그램에서 수행되는 것으로 보인다." +resource: "abap://ZCOC1010" +tags: ["수익성분석", "CO-PA기표", "매출인터페이스", "Hisis", "매출집계", "특성보완", "기능코드 분기", "저장 실행", "화면 종료", "PA 기표 내역 저장", "전체 삭제 후 재저장", "기표 유형", "매출 기표", "저장 확인 팝업", "오류 알림", "PA 기표", "오류 로그 팝업", "검증 메시지", "상태 아이콘", "메시지 누적"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:14+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110", "ZCOT0140"] +x-tables-write: ["GT_DATA", "ZCOT0150"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "039cdc924c13da67e50d80d4319df834564daee7722041e282712161c8d65126" +x-unit-count: 137 +x-chunk-count: 64 +x-declaration-count: 234 +--- + +## 업무 목적 + +하이마트 매출관리 시스템(Hisis)에서 인터페이스된 월 매출 상세 데이터(ZCOT0140)를 관리회계영역·연도·기간 기준으로 집계(COLLECT)하여 CO-PA(수익성분석) 기표 대상 내역을 만드는 프로그램이다. 지점(WW120, ZCOT0090)·품목상세(WW240, ZCOT0110)·메이커(WW300, ZCOT0080) 등 CO-PA 특성 마스터로 상위 특성(사업부/지사, 품목 대·중·소)과 텍스트를 보완하고 존재하지 않는 특성은 오류로 표시한다. 사용자가 '저장' 하면 기표 대상(PATYPE '100', 레코드유형 F, 통화유형 01, 전기일 = 해당 월 말일)을 ZCOT0150 에 저장하며, 실제 CO-PA 전기는 후속 프로그램에서 수행되는 것으로 보인다. + +## 주 흐름 + +1. 관리회계영역 텍스트를 설정하고 ALV 필드카탈로그를 초기화하며, 선택 연도/기간의 월말일을 전기일(GV_BUDAT)로 계산하고 CO-PA 대상 필드 목록(ZCOT0150 구조에서 MANDT/PATYPE 제외)을 만든다 (SET_DYNP, INITIALIZE_DATA, GET_LAST_DAY, PA_FIELD_SELECTION) +2. CO-PA 특성 체크테이블(T2500~T2508: 사업부·지사·지점·품목 대/중/소/상세·메이커)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세)을 읽고 TKA02 로 관리회계영역의 회사코드를 구한다 (PROCESS_DATA, SET_CHARACTER_MASTER) +3. Hisis 매출 상세 인터페이스 테이블 ZCOT0140 을 관리회계영역·연도·기간으로 조회하여 ZCOT0150 구조 키 기준으로 COLLECT 집계한 뒤 GT_DATA 에 적재한다 (SELECT_DATA) +4. 각 행에 회사코드·레코드유형 F·PA 원장 01·기간(PERIO)·전기일을 설정하고 지점→사업부/지사(WW100/WW110), 품목상세→품목 대/중/소(WW200~WW230), 메이커 텍스트를 보완하며 마스터에 없는 특성은 빨간 상태와 메시지로 표시한다 (EDIT_DATA, ADD_DATA_MESSAGE) +5. 집계 결과를 화면 100 ALV 로 표시하고 행 선택 시 메시지 상세 팝업을 보여준다 (CALL SCREEN 100, SHOW_ERROR_LOG) +6. '저장'(&SAVE) 시 확인 팝업 후 해당 관리회계영역·연도·기간·PATYPE '100' 의 기존 ZCOT0150 내역을 삭제하고 새 기표 내역을 저장한다 (EXECUTE_SAVE, SAVE_LIST) + +## 핵심 내부테이블 + +- `GT_ZCOT0140` — Hisis 월 매출 상세 인터페이스 데이터 (ZCOT0140) (채움: SELECT_DATA / 소비: SELECT_DATA) +- `GT_COL` — ZCOT0150 구조로 COLLECT 집계된 매출 데이터 (채움: SELECT_DATA / 소비: SELECT_DATA) +- `GT_DATA` — 메인 ALV 데이터 (ZCOT0150 + 지점/품목상세/메이커 텍스트, 상태·메시지) (채움: SELECT_DATA, EDIT_DATA / 소비: DISPLAY_ALV_LIST, SAVE_LIST, SHOW_ERROR_LOG) +- `GT_ZCOT0090 / GT_ZCOT0110 / GT_ZCOT0080` — 사용자 정의 CO-PA 특성 마스터: 지점(WW120→WW100/WW110), 품목상세(WW240→WW200~WW230), 메이커(WW300) (채움: SET_CHARACTER_MASTER / 소비: EDIT_DATA) +- `GT_T2500 ~ GT_T2508` — CO-PA 사용자 특성 체크테이블 (사업부·지사·지점·품목 대/중/소/상세·메이커); 조회만 하고 본 로직에서는 참조하지 않음 (채움: SET_CHARACTER_MASTER / 소비: ?) +- `GT_COPA_FCAT` — CO-PA 전송 대상 필드 카탈로그 (ZCOT0150 구조 기준) (채움: PA_FIELD_SELECTION / 소비: ?) + +## 테이블 / 외부 호출 + +- read: AENR, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110, ZCOT0140 +- write: GT_DATA, ZCOT0150 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (64건 / unit 54개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM INITIALIZE_DATA — `ZCOC1010F01` L48-L73 (26줄) + +*관리회계영역 기본정보와 ALV 필드카탈로그를 준비하고 상태 변수를 초기화한 뒤 선택 연도·기간의 월말일을 전기일(GV_BUDAT)로 계산하고 CO-PA 대상 필드 목록을 만든다.* + +> 이 unit 의 조각 1개가 7/26줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 회계연도(P_GJAHR)와 기간(P_PERDE 뒤 2자리)으로 해당 월 1일을 만든 뒤 GET_LAST_DAY로 월말일을 구해 CO-PA 전기일 GV_BUDAT로 삼고, PA_FIELD_SELECTION으로 전송 대상 필드 목록을 준비한다. + +```abap + 66| CONCATENATE P_GJAHR P_PERDE+1(2) '01' + 67| INTO GV_BUDAT. + 68| + 69| PERFORM GET_LAST_DAY USING GV_BUDAT + 70| CHANGING GV_BUDAT. + 71| + 72| PERFORM PA_FIELD_SELECTION. +``` + +- **EN**: Build the first day of the selected fiscal year/period, convert it to the month-end date via GET_LAST_DAY as the CO-PA posting date GV_BUDAT, then prepare the CO-PA field list via PA_FIELD_SELECTION. +- 호출(파서): GET_LAST_DAY, PA_FIELD_SELECTION +- SAP 객체: GET_LAST_DAY, PA_FIELD_SELECTION +- 업무 키워드: 전기일 계산, 월말일, 회계기간, CO-PA 필드 +- English: Posting Date, Month End, Fiscal Period, CO-PA +- 정의부(복사 시 함께 필요): [`P_GJAHR`](#decl-zcoc1010top-144-p_gjahr), [`P_PERDE`](#decl-zcoc1010top-145-p_perde), [`GV_BUDAT`](#decl-zcoc1010top-94-gv_budat) +- 선언을 못 찾은 이름: PA_FIELD_SELECTION (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L66-L72` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOC1010F01` L316-L372 (57줄) + +*CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다.* + +> 이 unit 의 조각 3개가 38/57줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CO-PA 사용자 특성 체크테이블 T2500~T2508(사업부·지사·지점·품목 대/중/소/상세·메이커)을 전체 조회해 GT_T2500~GT_T2508에 담고 정렬한다(본 로직에서는 참조하지 않음). + +```abap + 330| SELECT * FROM T2500 INTO TABLE GT_T2500. + 331| SORT GT_T2500. + 332| SELECT * FROM T2501 INTO TABLE GT_T2501. + 333| SORT GT_T2501. + 334| SELECT * FROM T2502 INTO TABLE GT_T2502. + 335| SORT GT_T2502. + 336| SELECT * FROM T2503 INTO TABLE GT_T2503. + 337| SORT GT_T2503. + 338| SELECT * FROM T2504 INTO TABLE GT_T2504. + 339| SORT GT_T2504. + 340| SELECT * FROM T2505 INTO TABLE GT_T2505. + 341| SORT GT_T2505. + 342| SELECT * FROM T2506 INTO TABLE GT_T2506. + 343| SORT GT_T2506. + 344| SELECT * FROM T2507 INTO TABLE GT_T2507. + 345| SORT GT_T2507. + 346| SELECT * FROM T2508 INTO TABLE GT_T2508. + 347| SORT GT_T2508. +``` + +- **EN**: Load the CO-PA user characteristic check tables T2500 through T2508 (division, region, branch, product hierarchy, maker) into GT_T2500-GT_T2508 and sort them; they are not referenced further in this program. +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508 +- 업무 키워드: CO-PA 특성 체크테이블, 품목 계층, 지점, 메이커 +- English: CO-PA Characteristic, Check Table, Product Hierarchy +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcoc1010top-106-gt_t2500), [`GT_T2501`](#decl-zcoc1010top-107-gt_t2501), [`GT_T2502`](#decl-zcoc1010top-108-gt_t2502), [`GT_T2503`](#decl-zcoc1010top-111-gt_t2503), [`GT_T2504`](#decl-zcoc1010top-112-gt_t2504), [`GT_T2505`](#decl-zcoc1010top-113-gt_t2505), [`GT_T2506`](#decl-zcoc1010top-114-gt_t2506), [`GT_T2507`](#decl-zcoc1010top-115-gt_t2507), [`GT_T2508`](#decl-zcoc1010top-102-gt_t2508) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L330-L347` · confidence 0.85 · `ZCOC1010#ZCOC1010F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역(P_KOKRS)의 사용자 특성 마스터 ZCOT0080(메이커 WW300), ZCOT0090(지점 WW120→사업부/지사), ZCOT0110(품목상세 WW240→품목 대/중/소)을 조회해 각 특성 키로 정렬한다. + +```abap + 349| SELECT * FROM ZCOT0080 + 350| INTO TABLE GT_ZCOT0080 + 351| WHERE KOKRS = P_KOKRS. + 352| + 353| SORT GT_ZCOT0080 BY WW300. + 354| + 355| SELECT * FROM ZCOT0090 + 356| INTO TABLE GT_ZCOT0090 + 357| WHERE KOKRS = P_KOKRS. + 358| + 359| SORT GT_ZCOT0090 BY WW120. + 360| + 361| SELECT * FROM ZCOT0110 + 362| INTO TABLE GT_ZCOT0110 + 363| WHERE KOKRS = P_KOKRS. + 364| + 365| SORT GT_ZCOT0110 BY WW240. +``` + +- **EN**: Read the custom characteristic masters ZCOT0080 (maker WW300), ZCOT0090 (branch WW120 with parent division/region) and ZCOT0110 (product detail WW240 with product hierarchy) for the controlling area and sort by key. +- 테이블(파서): read [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: 특성 마스터, 지점, 품목상세, 메이커, 특성 파생 +- English: Characteristic Master, Branch, Product Detail, Maker, Derivation +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc1010top-103-gt_zcot0080), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`GT_ZCOT0090`](#decl-zcoc1010top-109-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcoc1010top-116-gt_zcot0110) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L349-L365` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#SET_CHARACTER_MASTER#C2` + +#### [sql_select] 관리회계영역과 회사코드가 1:1인 하이마트 전제로 TKA02에서 관리회계영역에 할당된 회사코드를 GV_BUKRS에 읽는다. + +```abap + 369| SELECT SINGLE BUKRS FROM TKA02 + 370| INTO GV_BUKRS + 371| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read the company code assigned to the controlling area from TKA02 into GV_BUKRS, assuming a 1:1 relationship. +- 테이블(파서): read [TKA02](/tables/TKA02.md) / write - +- SAP 객체: TKA02 +- 업무 키워드: 회사코드, 관리회계영역 할당 +- English: Company Code, Controlling Area Assignment, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcoc1010top-93-gv_bukrs), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L369-L371` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#SET_CHARACTER_MASTER#C3` + +### FORM SELECT_DATA — `ZCOC1010F01` L173-L192 (20줄) + +*Hisis 매출 상세 인터페이스 테이블 ZCOT0140을 관리회계영역·연도·기간으로 조회해 ZCOT0150 구조 키 기준으로 COLLECT 집계한 뒤 GT_DATA에 적재한다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] ZCOT0140에서 관리회계영역(P_KOKRS)·회계연도(P_GJAHR)·기간(P_PERDE)의 Hisis 월 매출 상세를 읽어 MOVE-CORRESPONDING으로 GT_COL(ZCOT0150 구조)에 COLLECT하여 특성 키별 금액을 합산하고 그 결과를 GT_DATA에 APPEND 한다. + +```abap + 177| SELECT * FROM ZCOT0140 + 178| INTO TABLE GT_ZCOT0140 + 179| WHERE KOKRS = P_KOKRS + 180| AND GJAHR = P_GJAHR + 181| AND PERDE = P_PERDE. + 182| + 183| LOOP AT GT_ZCOT0140. + 184| MOVE-CORRESPONDING GT_ZCOT0140 TO GT_COL. + 185| COLLECT GT_COL. CLEAR : GT_COL. + 186| ENDLOOP. + 187| + 188| LOOP AT GT_COL. + 189| MOVE-CORRESPONDING GT_COL TO GT_DATA. + 190| APPEND GT_DATA. CLEAR: GT_DATA. + 191| ENDLOOP. +``` + +- **EN**: Read Hisis monthly sales detail from ZCOT0140 for the controlling area, fiscal year and period, COLLECT the rows into GT_COL (ZCOT0150 structure) to sum amounts per characteristic key, and append the result to GT_DATA. +- 테이블(파서): read [ZCOT0140](/tables/ZCOT0140.md) / write - +- SAP 객체: ZCOT0140, ZCOT0150, GT_COL, GT_DATA +- 업무 키워드: Hisis 매출 인터페이스, 월 매출 집계, 특성별 합산, CO-PA 기표 대상 +- English: Sales Interface, COLLECT Aggregation, CO-PA, Monthly Sales +- 정의부(복사 시 함께 필요): [`GT_ZCOT0140`](#decl-zcoc1010top-98-gt_zcot0140), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`P_GJAHR`](#decl-zcoc1010top-144-p_gjahr), [`P_PERDE`](#decl-zcoc1010top-145-p_perde), [`GT_COL`](#decl-zcoc1010top-77-gt_col), [`GT_DATA`](#decl-zcoc1010top-63-gt_data) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L177-L191` · confidence 0.95 · `ZCOC1010#ZCOC1010F01#FORM#SELECT_DATA#C1` + +### FORM EDIT_DATA — `ZCOC1010F01` L236-L307 (72줄) + +*집계된 매출 데이터 각 행에 회사코드·레코드유형 F·PA 원장 01·기간·전기일을 설정하고 지점(ZCOT0090)·품목상세(ZCOT0110)·메이커(ZCOT0080) 마스터로 상위 특성과 텍스트를 보완하며 마스터에 없으면 오류 상태로 표시한다.* + +> 이 unit 의 조각 4개가 57/72줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 각 행에 회사코드(GV_BUKRS), 레코드유형 VRGAR F(매출), PA 원장 PALEDGER 01(경영단위 통화), 기간 PERIO(연도+기간)와 초기 상태 아이콘을 설정해 CO-PA 기표 기본값을 채운다. + +```abap + 239| LOOP AT GT_DATA. + 240| GT_DATA-BUKRS = GV_BUKRS. + 241| GT_DATA-VRGAR = GC_VRGAR. " F 매출 타입. + 242| GT_DATA-PALEDGER = GC_PALEDGER. " 01 경영단위 통화 + 243| CONCATENATE P_GJAHR P_PERDE INTO GT_DATA-PERIO. + 244| + 245| GT_DATA-STATUS = GC_STATUS_INIT. +``` + +- **EN**: Set company code, record type VRGAR F (sales), PA ledger 01 (operating concern currency), period PERIO (year+period) and the initial status icon on each row as CO-PA posting defaults. +- SAP 객체: GT_DATA +- 업무 키워드: CO-PA 기표 기본값, 레코드유형, PA 원장, 기간 +- English: CO-PA, Record Type, PA Ledger, Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`GV_BUKRS`](#decl-zcoc1010top-93-gv_bukrs), [`GC_VRGAR`](#decl-zcoc1010top-34-gc_vrgar), [`GC_PALEDGER`](#decl-zcoc1010top-37-gc_paledger), [`P_GJAHR`](#decl-zcoc1010top-144-p_gjahr), [`P_PERDE`](#decl-zcoc1010top-145-p_perde), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L239-L245` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#EDIT_DATA#C1` + +#### [validation] 지점(WW120)을 지점 마스터 GT_ZCOT0090에서 찾아 지점명과 상위 특성 지사(WW110)·사업부(WW100)를 채우고, 없으면 지점 미존재 오류(F03)로 빨간 상태·메시지를 남기고 GV_UPLOAD_ERROR를 세운다. + +```abap + 247| READ TABLE GT_ZCOT0090 WITH KEY KOKRS = P_KOKRS + 248| WW120 = GT_DATA-WW120 BINARY SEARCH. + 249| + 250| IF SY-SUBRC EQ 0. + 251| GT_DATA-WW120_TEXT = GT_ZCOT0090-WW120_TEXT. + 252| GT_DATA-WW110 = GT_ZCOT0090-WW110. + 253| GT_DATA-WW100 = GT_ZCOT0090-WW100. + 254| ELSE. + 255| GT_DATA-MESSAGE = '지점이 존재하지 않습니다.'(F03). + 256| GT_DATA-STATUS = GC_STATUS_RED. + 257| GV_UPLOAD_ERROR = 'X'. + 258| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 259| PERFORM ADD_DATA_MESSAGE USING 'E' + 260| '' + 261| GT_DATA-MESSAGE. + 262| ENDIF. +``` + +- **EN**: Look up branch WW120 in the branch master GT_ZCOT0090 to fill its text and the parent characteristics WW110 (region) and WW100 (division); if missing, flag the row red with error F03 and set the upload error flag. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0090, GT_ZCOT0090 +- 업무 키워드: 지점 특성, 사업부, 지사, 특성 파생, 마스터 미존재 오류 +- English: Branch Characteristic, Characteristic Derivation, CO-PA, Master Data Check +- 정의부(복사 시 함께 필요): [`GT_ZCOT0090`](#decl-zcoc1010top-109-gt_zcot0090), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc1010top-22-gv_upload_error) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L247-L262` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#EDIT_DATA#C2` + +#### [validation] 품목상세(WW240)를 품목 마스터 GT_ZCOT0110에서 찾아 품목상세명과 품목 대/중/소(WW200~WW230)를 채우고, 없으면 품목상세 미존재 오류(F04)로 빨간 상태·메시지를 남긴다. + +```abap + 264| READ TABLE GT_ZCOT0110 WITH KEY KOKRS = P_KOKRS + 265| WW240 = GT_DATA-WW240 BINARY SEARCH. + 266| + 267| IF SY-SUBRC EQ 0. + 268| GT_DATA-WW240_TEXT = GT_ZCOT0110-WW240_TEXT. + 269| GT_DATA-WW200 = GT_ZCOT0110-WW200. + 270| GT_DATA-WW210 = GT_ZCOT0110-WW210. + 271| GT_DATA-WW220 = GT_ZCOT0110-WW220. + 272| GT_DATA-WW230 = GT_ZCOT0110-WW230. + 273| ELSE. + 274| GT_DATA-MESSAGE = '품목상세가 존재하지 않습니다.'(F04). + 275| GT_DATA-STATUS = GC_STATUS_RED. + 276| GV_UPLOAD_ERROR = 'X'. + 277| PERFORM SET_ERROR_FIELD_RED USING 'WW240'. + 278| PERFORM ADD_DATA_MESSAGE USING 'E' + 279| '' + 280| GT_DATA-MESSAGE. + 281| ENDIF. +``` + +- **EN**: Look up product detail WW240 in GT_ZCOT0110 to fill its text and the product hierarchy WW200-WW230; if missing, flag the row red with error F04. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0110, GT_ZCOT0110 +- 업무 키워드: 품목상세 특성, 품목 계층, 특성 파생, 마스터 미존재 오류 +- English: Product Detail, Product Hierarchy, Characteristic Derivation, Master Data Check +- 정의부(복사 시 함께 필요): [`GT_ZCOT0110`](#decl-zcoc1010top-116-gt_zcot0110), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc1010top-22-gv_upload_error) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L264-L281` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#EDIT_DATA#C3` + +#### [validation] 메이커(WW300)를 메이커 마스터 GT_ZCOT0080에서 찾아 메이커명을 채우고 없으면 메이커 미존재 오류(F05)로 빨간 상태·메시지를 남기며, 전기일(BUDAT)을 월말일 GV_BUDAT로 설정한다. + +```abap + 283| READ TABLE GT_ZCOT0080 WITH KEY KOKRS = P_KOKRS + 284| WW300 = GT_DATA-WW300 BINARY SEARCH. + 285| + 286| IF SY-SUBRC EQ 0. + 287| GT_DATA-WW300_TEXT = GT_ZCOT0080-WW300_TEXT. + 288| ELSE. + 289| GT_DATA-MESSAGE = '메이커가 존재하지 않습니다.'(F05). + 290| GT_DATA-STATUS = GC_STATUS_RED. + 291| GV_UPLOAD_ERROR = 'X'. + 292| PERFORM SET_ERROR_FIELD_RED USING 'WW300'. + 293| PERFORM ADD_DATA_MESSAGE USING 'E' + 294| '' + 295| GT_DATA-MESSAGE. + 296| ENDIF. + 297| + 298| GT_DATA-BUDAT = GV_BUDAT. +``` + +- **EN**: Look up maker WW300 in GT_ZCOT0080 to fill its text, flag the row red with error F05 when missing, and set the posting date BUDAT to the month-end date GV_BUDAT. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0080, GT_ZCOT0080 +- 업무 키워드: 메이커 특성, 전기일, 월말일, 마스터 미존재 오류 +- English: Maker Characteristic, Posting Date, Month End, Master Data Check +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc1010top-103-gt_zcot0080), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc1010top-22-gv_upload_error), [`GV_BUDAT`](#decl-zcoc1010top-94-gv_budat) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L283-L298` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#EDIT_DATA#C4` + +### FORM ADD_DATA_MESSAGE — `ZCOC1010F01` L201-L227 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 208| IF P_VALUE IS NOT INITIAL. + 209| CONCATENATE P_VALUE ` : ` P_MESSAGE + 210| INTO LV_MESSAGE. + 211| ELSE. + 212| LV_MESSAGE = P_MESSAGE. + 213| ENDIF. + 214| + 215| IF P_STATUS = 'S'. + 216| LV_STATUS = GC_STATUS_GREEN. + 217| ELSEIF P_STATUS = 'E'. + 218| LV_STATUS = GC_STATUS_RED. + 219| ELSEIF P_STATUS = 'W'. + 220| LV_STATUS = GC_STATUS_YELLOW. + 221| ENDIF. + 222| GS_MSG_T_S-STATUS = LV_STATUS. + 223| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 224| + 225| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc1010f01-203-lv_message), [`LV_STATUS`](#decl-zcoc1010f01-204-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc1010top-91-gs_msg_t_s), [`GT_DATA`](#decl-zcoc1010top-63-gt_data) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L208-L225` · confidence 0.85 · `ZCOC1010#ZCOC1010F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC1010` L52-L63 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 53| IF SY-BATCH NE 'X'. + 54| IF GT_DATA[] IS NOT INITIAL. + 55| CALL SCREEN 100. + 56| ELSE. + 57| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 58| ENDIF. + 59| ELSE. + 60| IF GT_DATA[] IS NOT INITIAL. + 61| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 62| ENDIF. + 63| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc1010top-63-gt_data) +- 위치: `abap://ZCOC1010/ZCOC1010#L53-L63` · confidence 0.85 · `ZCOC1010#ZCOC1010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC1010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC1010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC1010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC1010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC1010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC1010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC1010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC1010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC1010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM SHOW_ERROR_LOG — `ZCOC1010F01` L107-L164 (58줄) + +*ALV에서 선택한 행(P_ROW)의 특성 검증 메시지 목록(GT_DATA-MSG_LIST)을 상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다.* + +> 이 unit 의 조각 1개가 22/58줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 MSG_LIST(상태 아이콘·메시지)를 LT_POPUP으로 옮기고 팝업 레이아웃을 설정한 뒤 W_POPUP_GRID를 생성해 SHOW_DATA로 오류 로그 팝업을 표시한다. + +```abap + 142| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 143| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 144| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 145| APPEND LT_POPUP. + 146| CLEAR : LT_POPUP. + 147| ENDLOOP. + 148| + 149| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 150| + 151| CREATE OBJECT W_POPUP_GRID + 152| EXPORTING + 153| I_T_FIELDCATALOG = POPUP_FIELDCAT + 154| I_S_LAYOUT = LS_LAYO + 155| I_CAPTION = '' + 156| I_LEFT = 100 + 157| I_TOP = 150 + 158| I_HEIGHT = 400 + 159| I_WIDTH = 900. + 160| + 161| CALL METHOD W_POPUP_GRID->SHOW_DATA + 162| EXPORTING + 163| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Copy the selected row's message list into LT_POPUP, set the popup layout, instantiate W_POPUP_GRID and display the error log via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, GT_LOG_POP, SET_ALV_LAYOUT_POP +- 업무 키워드: 오류 로그 팝업, 검증 메시지, 상태 아이콘 +- English: Error Log, Popup Grid, Validation Message +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`GS_MSG_T_S`](#decl-zcoc1010top-91-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc1010top-81-gt_log_pop), [`LT_POPUP`](#decl-zcoc1010f01-110-lt_popup), [`LS_LAYO`](#decl-zcoc1010f01-109-ls_layo), [`W_POPUP_GRID`](#decl-zcoc1010top-89-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc1010f01-108-popup_fieldcat) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L142-L163` · confidence 0.85 · `ZCOC1010#ZCOC1010F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_SAVE — `ZCOC1010F01` L381-L406 (26줄) + +*저장 버튼 처리로 내역 오류 여부를 알리고 POPUP_TO_CONFIRM_02로 PA 기표 내역 저장을 확인받은 뒤 SAVE_LIST로 ZCOT0150 저장을 수행한다.* + +> 이 unit 의 조각 1개가 14/26줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 특성 검증 오류(GV_UPLOAD_ERROR)가 있으면 오류 메시지(F12)를 표시하고(중단은 하지 않음), POPUP_TO_CONFIRM_02 확인창에서 예(J)를 선택한 경우에만 저장 플래그를 세우고 SAVE_LIST를 호출한다(중복 기표 방지 체크는 주석 처리). + +```abap + 392| IF GV_UPLOAD_ERROR = 'X'. + 393| MESSAGE S000 DISPLAY LIKE 'E' WITH '내역에 오류가 있습니다.'(F12). + 394| ENDIF. + 395| + 396| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 397| 'PA 기표 내역을 저장하시겠습니까?'(F06) '' + 398| CHANGING L_ANSWER. + 399| IF L_ANSWER <> 'J'. + 400| EXIT. + 401| ENDIF. + 402| + 403| GV_ALREADY_POST = 'X'. + 404| + 405| PERFORM SAVE_LIST. +``` + +- **EN**: Show error message F12 when characteristic validation errors exist (without aborting), ask for confirmation via POPUP_TO_CONFIRM_02 and on yes set the post flag and call SAVE_LIST; the duplicate-post check is commented out. +- 호출(파서): POPUP_TO_CONFIRM_02, SAVE_LIST +- SAP 객체: POPUP_TO_CONFIRM_02, SAVE_LIST +- 업무 키워드: 저장 확인 팝업, 오류 알림, PA 기표 +- English: Confirmation Popup, Save, CO-PA Posting +- 정의부(복사 시 함께 필요): [`GV_UPLOAD_ERROR`](#decl-zcoc1010top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc1010f01-382-l_answer), [`GV_ALREADY_POST`](#decl-zcoc1010top-23-gv_already_post) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L392-L405` · confidence 0.9 · `ZCOC1010#ZCOC1010F01#FORM#EXECUTE_SAVE#C1` + +### FORM SAVE_LIST — `ZCOC1010F01` L415-L439 (25줄) + +*GT_DATA를 PATYPE 100의 ZCOT0150 구조로 옮긴 뒤 해당 관리회계영역·연도·기간의 기존 기표 내역을 삭제하고 새로 저장하며 결과 메시지를 표시한다.* + +> 이 unit 의 조각 1개가 21/25줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] GT_DATA를 MOVE-CORRESPONDING으로 LT_ZCOT0150에 담고 PATYPE을 100(Hisis 매출 기표 유형)으로 세운 뒤, 관리회계영역·회계연도·기간·PATYPE 100의 기존 ZCOT0150 행을 DELETE하고 MODIFY로 저장하며 성공/실패 S000 메시지를 낸다. + +```abap + 418| LOOP AT GT_DATA. + 419| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0150. + 420| LT_ZCOT0150-PATYPE = '100'. + 421| APPEND LT_ZCOT0150. CLEAR : LT_ZCOT0150. + 422| ENDLOOP. + 423| + 424| IF LT_ZCOT0150[] IS NOT INITIAL. + 425| + 426| DELETE FROM ZCOT0150 WHERE KOKRS = P_KOKRS + 427| AND GJAHR = P_GJAHR + 428| AND PERDE = P_PERDE + 429| AND PATYPE = '100'. + 430| + 431| MODIFY ZCOT0150 FROM TABLE LT_ZCOT0150. + 432| + 433| IF SY-SUBRC EQ 0. + 434| MESSAGE S000 WITH '정상적으로 저장되었습니다.'(F13). + 435| ELSE. + 436| MESSAGE S000 DISPLAY LIKE 'E' WITH '저장에 실패하였습니다.'(F14). + 437| ENDIF. + 438| ENDIF. +``` + +- **EN**: Move GT_DATA into the ZCOT0150 structure with PATYPE 100, delete existing ZCOT0150 rows for the controlling area, fiscal year, period and PATYPE 100, MODIFY the new rows and issue a success or failure message. +- 테이블(파서): read - / write [ZCOT0150](/tables/ZCOT0150.md) +- SAP 객체: ZCOT0150, GT_DATA +- 업무 키워드: PA 기표 내역 저장, 전체 삭제 후 재저장, 기표 유형, 매출 기표 +- English: CO-PA Posting List, Delete and Modify, Database Update, PATYPE +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc1010top-63-gt_data), [`LT_ZCOT0150`](#decl-zcoc1010f01-416-lt_zcot0150), [`P_KOKRS`](#decl-zcoc1010top-138-p_kokrs), [`P_GJAHR`](#decl-zcoc1010top-144-p_gjahr), [`P_PERDE`](#decl-zcoc1010top-145-p_perde) +- 위치: `abap://ZCOC1010/ZCOC1010F01#L418-L438` · confidence 0.95 · `ZCOC1010#ZCOC1010F01#FORM#SAVE_LIST#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC1010I01` L6-L31 (26줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &SAVE 기능코드는 EXECUTE_SAVE로 PA 기표 내역 저장을 실행하는 기능코드 분기 모듈이다.* + +> 이 unit 의 조각 1개가 21/26줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 기능코드가 BACK/CANC/EXIT면 CLEAR_CONTAINER_PROC로 ALV 객체를 해제하고 LEAVE PROGRAM 또는 LEAVE TO SCREEN 0 하며, &SAVE면 EXECUTE_SAVE를 호출해 ZCOT0150 저장 흐름을 시작한다(ZCOT0140 DEQUEUE는 주석 처리). + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| * PERFORM DEQUEUE_ZCOT0140. + 12| + 13| PERFORM CLEAR_CONTAINER_PROC USING + 14| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 15| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 16| GO_HTML_VIEW1 + 17| GO_EVENT_RECEIVER1. + 18| + 19| IF GV_T_OK_CODE = 'EXIT'. + 20| LEAVE PROGRAM. + 21| ELSE. + 22| LEAVE TO SCREEN 0. + 23| ENDIF. + 24| WHEN '&SAVE'. + 25| PERFORM EXECUTE_SAVE. + 26| + 27| WHEN OTHERS. + 28| * LEAVE PROGRAM. + 29| ENDCASE. +``` + +- **EN**: Dispatch OK codes: BACK/CANC/EXIT free the ALV containers and leave; &SAVE calls EXECUTE_SAVE to start saving the CO-PA posting list to ZCOT0150. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_SAVE +- SAP 객체: EXECUTE_SAVE, CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드 분기, 저장 실행, 화면 종료 +- English: OK Code, PAI Dispatch, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc1010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc1010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC1010/ZCOC1010I01#L9-L29` · confidence 0.85 · `ZCOC1010#ZCOC1010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (323건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC1010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc1010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC1010TOP` (60건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc1010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc1010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc1010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc1010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc1010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc1010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc1010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc1010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc1010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc1010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc1010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc1010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc1010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc1010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc1010top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc1010top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCO_STRUC1'. +``` + +#### GC_VRGAR — constants · L34-L34 {#decl-zcoc1010top-34-gc_vrgar} + +```abap +CONSTANTS : GC_VRGAR LIKE CE01000-VRGAR VALUE 'F'. +``` + +#### GC_PALEDGER — constants · L37-L37 {#decl-zcoc1010top-37-gc_paledger} + +```abap +CONSTANTS : GC_PALEDGER LIKE CE01000-PALEDGER VALUE '01'. +``` + +#### GC_COPA_AWTYP — constants · L38-L39 {#decl-zcoc1010top-38-gc_copa_awtyp} + +```abap +CONSTANTS : GC_COPA_AWTYP LIKE CE01000-COPA_AWTYP + VALUE 'Z1010'. +``` + +#### GC_ERKRS — constants · L40-L40 {#decl-zcoc1010top-40-gc_erkrs} + +```abap +CONSTANTS : GC_ERKRS TYPE RKE_TERKRS VALUE '1000'. +``` + +#### GT_MAIN_FIELDCAT — data · L46-L46 {#decl-zcoc1010top-46-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L51-L51 {#decl-zcoc1010top-51--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L52-L52 {#decl-zcoc1010top-52--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L54-L54 {#decl-zcoc1010top-54-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L55-L55 {#decl-zcoc1010top-55-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L57-L57 {#decl-zcoc1010top-57-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L58-L58 {#decl-zcoc1010top-58-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L63-L75 {#decl-zcoc1010top-63-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOT0150. + +DATA : + WW120_TEXT LIKE ZCOT0090-WW120_TEXT, + WW240_TEXT LIKE ZCOT0110-WW240_TEXT, + WW300_TEXT LIKE ZCOT0080-WW300_TEXT, + +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GT_COL — data · L77-L77 {#decl-zcoc1010top-77-gt_col} + +```abap +DATA : GT_COL LIKE ZCOT0150 OCCURS 0 WITH HEADER LINE. +``` + +#### GS_DATA — data · L79-L79 {#decl-zcoc1010top-79-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L81-L86 {#decl-zcoc1010top-81-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, +* KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L89-L89 {#decl-zcoc1010top-89-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L91-L91 {#decl-zcoc1010top-91-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L93-L93 {#decl-zcoc1010top-93-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE TKA02-BUKRS. +``` + +#### GV_BUDAT — data · L94-L94 {#decl-zcoc1010top-94-gv_budat} + +```abap +DATA : GV_BUDAT LIKE CE01000-BUDAT. +``` + +#### GV_ALREADY_POSTED — data · L95-L95 {#decl-zcoc1010top-95-gv_already_posted} + +```abap +DATA : GV_ALREADY_POSTED TYPE C. +``` + +#### GV_ITEMCNT — data · L96-L96 {#decl-zcoc1010top-96-gv_itemcnt} + +```abap +DATA : GV_ITEMCNT TYPE I. +``` + +#### GT_ZCOT0140 — data · L98-L98 {#decl-zcoc1010top-98-gt_zcot0140} + +```abap +DATA : GT_ZCOT0140 LIKE ZCOT0140 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L102-L102 {#decl-zcoc1010top-102-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L103-L103 {#decl-zcoc1010top-103-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L106-L106 {#decl-zcoc1010top-106-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L107-L107 {#decl-zcoc1010top-107-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L108-L108 {#decl-zcoc1010top-108-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L109-L109 {#decl-zcoc1010top-109-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L111-L111 {#decl-zcoc1010top-111-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L112-L112 {#decl-zcoc1010top-112-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L113-L113 {#decl-zcoc1010top-113-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L114-L114 {#decl-zcoc1010top-114-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L115-L115 {#decl-zcoc1010top-115-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L116-L116 {#decl-zcoc1010top-116-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BAPI_TAB — data · L118-L118 {#decl-zcoc1010top-118-gt_bapi_tab} + +```abap +DATA : GT_BAPI_TAB LIKE BAPI_COPA_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BAPI_FIELD — data · L119-L119 {#decl-zcoc1010top-119-gt_bapi_field} + +```abap +DATA : GT_BAPI_FIELD LIKE BAPI_COPA_FIELD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BAPI_RETURN — data · L120-L120 {#decl-zcoc1010top-120-gt_bapi_return} + +```abap +DATA : GT_BAPI_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MSG — data · L122-L122 {#decl-zcoc1010top-122-gv_msg} + +```abap +DATA : GV_MSG(255) TYPE C. +``` + +#### G_ERR — data · L123-L123 {#decl-zcoc1010top-123-g_err} + +```abap +DATA : G_ERR(1) TYPE C. +``` + +#### GT_COPA_FCAT — data · L125-L125 {#decl-zcoc1010top-125-gt_copa_fcat} + +```abap +DATA : GT_COPA_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### GS_ZCOT0150 — data · L126-L126 {#decl-zcoc1010top-126-gs_zcot0150} + +```abap +DATA : GS_ZCOT0150 LIKE ZCOT0150. +``` + +#### P_KOKRS — parameter · L138-L139 {#decl-zcoc1010top-138-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L144-L144 {#decl-zcoc1010top-144-p_gjahr} + +```abap +PARAMETERS : P_GJAHR LIKE CE01000-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERDE — parameter · L145-L145 {#decl-zcoc1010top-145-p_perde} + +```abap +PARAMETERS : P_PERDE LIKE CE01000-PERDE OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC1010F01` (7건) + +#### POPUP_FIELDCAT — data · unit 로컬 · L108-L108 {#decl-zcoc1010f01-108-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L109-L109 {#decl-zcoc1010f01-109-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L110-L110 {#decl-zcoc1010f01-110-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L203-L203 {#decl-zcoc1010f01-203-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L204-L204 {#decl-zcoc1010f01-204-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### L_ANSWER — data · unit 로컬 · L382-L382 {#decl-zcoc1010f01-382-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LT_ZCOT0150 — data · unit 로컬 · L416-L416 {#decl-zcoc1010f01-416-lt_zcot0150} + +```abap + DATA : LT_ZCOT0150 LIKE ZCOT0150 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC1010 L25-30 | 0 | INITIALIZATION 이벤트에서 선택화면 초기 설정 루틴 SET_DYNP를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC1010 L31-32 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 처리 로직이 없는 빈 이벤트 블록이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC1010 L33-42 | 0 | AT SELECTION-SCREEN OUTPUT에서 화면 필드 속성 제어(LOOP_AT_SCREEN)를 호출하는 PBO 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOC1010 L43-51 | 0 | START-OF-SELECTION에서 초기화(INITIALIZE_DATA)와 데이터 처리(PROCESS_DATA)를 호출하는 진입 이벤트다(ZCOT0140 잠금은 주석 처리). | +| END-OF-SELECTION | EVENT | ZCOC1010 L52-63 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC1010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC1010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC1010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC1010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC1010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC1010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC1010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC1010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC1010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC1010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC1010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC1010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC1010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC1010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC1010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC1010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC1010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC1010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC1010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC1010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC1010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC1010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC1010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC1010C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC1010C01 L699-722 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC1010F01 L6-15 | 0 | 선택화면에서 MG1 그룹 필드(관리회계영역 명칭 등)를 입력 불가로 만드는 LOOP AT SCREEN 화면 제어 루틴이다. | +| PA_FIELD_SELECTION | FORM | ZCOC1010F01 L21-33 | 0 | ZCOT0150 구조(GS_ZCOT0150)의 필드카탈로그를 얻어 MANDT·PATYPE를 제외한 CO-PA 전송 대상 필드 목록 GT_COPA_FCAT을 만드는 준비 루틴이다. | +| SET_DYNP | FORM | ZCOC1010F01 L39-42 | 0 | INITIALIZATION 시 SET_KOKRS_BASE로 관리회계영역 기본정보를 읽어 선택화면에 관리회계영역 명칭(P_BEZEI)을 표시하는 초기 설정 루틴이다. | +| INITIALIZE_DATA | FORM | ZCOC1010F01 L48-73 | 1 | 관리회계영역 기본정보와 ALV 필드카탈로그를 준비하고 상태 변수를 초기화한 뒤 선택 연도·기간의 월말일을 전기일(GV_BUDAT)로 계산하고 CO-PA 대상 필드 목록을 만든다. | +| PROCESS_DATA | FORM | ZCOC1010F01 L79-83 | 0 | 특성 마스터 적재(SET_CHARACTER_MASTER), ZCOT0140 매출 집계(SELECT_DATA), 특성 보완·검증(EDIT_DATA)을 순서대로 호출하는 메인 처리 서브루틴이다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC1010F01 L91-99 | 0 | 오류 필드를 빨간색(LVC_S_SCOL 색상 6)으로 강조하려는 보조 루틴이나 실제 GT_DATA-F_COL INSERT가 주석 처리되어 현재는 아무 효과가 없다. | +| SHOW_ERROR_LOG | FORM | ZCOC1010F01 L107-164 | 1 | ALV에서 선택한 행(P_ROW)의 특성 검증 메시지 목록(GT_DATA-MSG_LIST)을 상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다. | +| SELECT_DATA | FORM | ZCOC1010F01 L173-192 | 1 | Hisis 매출 상세 인터페이스 테이블 ZCOT0140을 관리회계영역·연도·기간으로 조회해 ZCOT0150 구조 키 기준으로 COLLECT 집계한 뒤 GT_DATA에 적재한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC1010F01 L201-227 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC1010F01 L236-307 | 4 | 집계된 매출 데이터 각 행에 회사코드·레코드유형 F·PA 원장 01·기간·전기일을 설정하고 지점(ZCOT0090)·품목상세(ZCOT0110)·메이커(ZCOT0080) 마스터로 상위 특성과 텍스트를 보완하며 마스터에 없으면 오류 상태로 표시한다. | +| SET_CHARACTER_MASTER | FORM | ZCOC1010F01 L316-372 | 3 | CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다. | +| EXECUTE_SAVE | FORM | ZCOC1010F01 L381-406 | 1 | 저장 버튼 처리로 내역 오류 여부를 알리고 POPUP_TO_CONFIRM_02로 PA 기표 내역 저장을 확인받은 뒤 SAVE_LIST로 ZCOT0150 저장을 수행한다. | +| SAVE_LIST | FORM | ZCOC1010F01 L415-439 | 1 | GT_DATA를 PATYPE 100의 ZCOT0150 구조로 옮긴 뒤 해당 관리회계영역·연도·기간의 기존 기표 내역을 삭제하고 새로 저장하며 결과 메시지를 표시한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC1010I01 L6-31 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &SAVE 기능코드는 EXECUTE_SAVE로 PA 기표 내역 저장을 실행하는 기능코드 분기 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC1010O01 L6-16 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC1010O01 L22-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC1010O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC1010O01 L127-152 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC1010O01 L160-166 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC1010O01 L174-187 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC1010O01 L196-224 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC1010O01 L233-265 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC1010O01 L275-397 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC1010O01 L405-432 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC2010.md b/wiki/programs/ZCOC2010.md new file mode 100644 index 0000000..72a2f86 --- /dev/null +++ b/wiki/programs/ZCOC2010.md @@ -0,0 +1,5165 @@ +--- +type: abap-program +title: "ZCOC2010 — 지점별 매출 계획 Upload" +description: "하이마트 CO 사업계획 수립을 위해 지점(WW120)별 연간 매출 계획을 엑셀로 업로드하는 프로그램이다. 구분이 '금액'인 행은 매출액 계획(천원 단위, KRW)으로 커스텀 테이블 ZCOT0160(COST_GUBUN '40')에, '수량'인 행은 매출수량 계획(EA)으로 ZCOT0170(COST_GUBUN '50')에 월별(MONTH01~12)로 저장한다. 지점코드는 ZCOT0090 마스터로 검증하며 판매조직 마스터 T2500~T2508, 관리회계영역 TKA01/TKA02를 참조한다." +resource: "abap://ZCOC2010" +tags: ["사업계획", "매출계획", "지점별계획", "엑셀업로드", "관리회계", "CO", "사용자 명령", "매출 계획 저장", "화면 종료", "매출액 계획", "매출수량 계획", "월별 금액 변환", "천원 단위 환산", "지점", "기존 데이터 삭제", "저장 결과 상태", "회계연도", "중복 저장 방지", "확인 팝업", "오류 로그 팝업"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:14+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD01L", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110"] +x-tables-write: ["GT_DATA", "ZCOT0160", "ZCOT0170"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "a279232b0b74f442c2403b504cb50aacffce2ce23ae5028caf189b8862867650" +x-unit-count: 146 +x-chunk-count: 71 +x-declaration-count: 226 +--- + +## 업무 목적 + +하이마트 CO 사업계획 수립을 위해 지점(WW120)별 연간 매출 계획을 엑셀로 업로드하는 프로그램이다. 구분이 '금액'인 행은 매출액 계획(천원 단위, KRW)으로 커스텀 테이블 ZCOT0160(COST_GUBUN '40')에, '수량'인 행은 매출수량 계획(EA)으로 ZCOT0170(COST_GUBUN '50')에 월별(MONTH01~12)로 저장한다. 지점코드는 ZCOT0090 마스터로 검증하며 판매조직 마스터 T2500~T2508, 관리회계영역 TKA01/TKA02를 참조한다. + +## 주 흐름 + +1. 선택화면에서 관리회계영역(TKA01) 텍스트/통화를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일명이 입력되었는지 확인하고 상태 변수·ALV 필드카탈로그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 판매조직·품목 마스터(T2500~T2508)와 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110), 회사코드(TKA02)를 내부테이블로 적재한다 (SET_CHARACTER_MASTER) +4. 업로드 구조 기반 동적 내부테이블을 생성하고 엑셀 파일(2행부터)을 읽어 적재한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT) +5. 엑셀 값을 CONVERSION_EXIT/숫자·날짜 변환을 거쳐 GT_DATA로 이전한다 (TRANSFER_GT_DATA) +6. 구분값('금'/'수'), 지점코드 입력 여부, ZCOT0090 존재 여부, 지점+구분 중복을 검증하고 오류 행을 빨간색으로 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 월별 12개월 합계와 구분별 총합을 계산하고 코드명을 보강해 ALV(화면 100)에 표시한다 (EDIT_DATA) +8. 저장 버튼(&SAVE) 시 확인 팝업 후 금액은 천원→원 환산하여 ZCOT0160, 수량은 ZCOT0170에 기존 연도 데이터를 삭제하고 MODIFY로 반영한다 (EXECUTE_SAVE, PERFORM_SAVE) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 결과 메인 테이블(구조 ZCOS0260 + 지점명, 합계, 상태, 메시지) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA / 소비: PERFORM_SAVE, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0260 구조 기반 동적 엑셀 수신 테이블(모두 CHAR) (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_ZCOT0090` — 지점(WW120) 마스터 및 지점명 (채움: SET_CHARACTER_MASTER / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_SUM_VV100 / GT_SUM_VVQ01` — 금액/수량 구분별 월 합계 (COLLECT, ALV 상단 표시용) (채움: EDIT_DATA / 소비: SET_HTML_TOP_OF_PAGE) +- `LT_ZCOT0160 / LT_ZCOT0170` — DB 저장용 매출액/매출수량 계획 테이블 (채움: PERFORM_SAVE / 소비: PERFORM_SAVE) + +## 테이블 / 외부 호출 + +- read: AENR, DD01L, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110 +- write: GT_DATA, ZCOT0160, ZCOT0170 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (71건 / unit 61개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC2010F01` L34-L45 (12줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서를 열어 지점별 매출 계획 업로드 양식을 제공한다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 웹 리포지토리 문서(GC_SMW0)를 열어 지점별 매출 계획 업로드 엑셀 양식을 다운로드하게 한다. + +```abap + 36| L_UCOMM = SSCRFIELDS-UCOMM. + 37| CASE L_UCOMM. + 38| WHEN 'FC01'. + 39| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 40| EXPORTING + 41| P_DOCNAM = GC_SMW0 + 42| P_TITLE = '지점별 매출 계획 Upload'(F02). + 43| ENDCASE. +``` + +- **EN**: On function key FC01 call Z_CO_OPEN_SMW0 to open the SMW0 document holding the branch sales plan upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키 처리, 업로드 템플릿 +- English: SMW0, Upload Template, Function Key +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc2010f01-35-l_ucomm), [`SSCRFIELDS`](#decl-zcoc2010top-2-sscrfields), [`GC_SMW0`](#decl-zcoc2010top-32-gc_smw0) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L36-L43` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC2010` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC2010/ZCOC2010#L49-L51` · confidence 0.8 · `ZCOC2010#ZCOC2010#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC2010F01` L54-L61 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 56| IF P_FNAME IS INITIAL. + 57| MESSAGE S000 DISPLAY LIKE 'E' WITH + 58| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 59| LEAVE LIST-PROCESSING. + 60| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2010top-126-p_fname) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L56-L60` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC2010F01` L67-L82 (16줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 68| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 69| P_BEZEI = GV_KOKRS_BEZEI. + 70| + 71| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 72| " MAIN ALV용 딕셔너리 구조 취득. + 73| PERFORM GET_FCAT_LIKE_ITAB + 74| TABLES GT_MAIN_FIELDCAT + 75| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc2010top-43-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc2010top-28-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L68-L75` · confidence 0.75 · `ZCOC2010#ZCOC2010F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOC2010F01` L622-L678 (57줄) + +*CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다.* + +> 이 unit 의 조각 3개가 38/57줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CO-PA 사용자 특성 체크테이블 T2500~T2508(사업부·지사·지점·품목 대/중/소/상세·메이커)을 전체 조회해 GT_T2500~GT_T2508에 담고 정렬한다(본 로직에서는 참조하지 않음). + +```abap + 636| SELECT * FROM T2500 INTO TABLE GT_T2500. + 637| SORT GT_T2500. + 638| SELECT * FROM T2501 INTO TABLE GT_T2501. + 639| SORT GT_T2501. + 640| SELECT * FROM T2502 INTO TABLE GT_T2502. + 641| SORT GT_T2502. + 642| SELECT * FROM T2503 INTO TABLE GT_T2503. + 643| SORT GT_T2503. + 644| SELECT * FROM T2504 INTO TABLE GT_T2504. + 645| SORT GT_T2504. + 646| SELECT * FROM T2505 INTO TABLE GT_T2505. + 647| SORT GT_T2505. + 648| SELECT * FROM T2506 INTO TABLE GT_T2506. + 649| SORT GT_T2506. + 650| SELECT * FROM T2507 INTO TABLE GT_T2507. + 651| SORT GT_T2507. + 652| SELECT * FROM T2508 INTO TABLE GT_T2508. + 653| SORT GT_T2508. +``` + +- **EN**: Load the CO-PA user characteristic check tables T2500 through T2508 (division, region, branch, product hierarchy, maker) into GT_T2500-GT_T2508 and sort them; they are not referenced further in this program. +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508 +- 업무 키워드: CO-PA 특성 체크테이블, 품목 계층, 지점, 메이커 +- English: CO-PA Characteristic, Check Table, Product Hierarchy +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcoc2010top-95-gt_t2500), [`GT_T2501`](#decl-zcoc2010top-96-gt_t2501), [`GT_T2502`](#decl-zcoc2010top-97-gt_t2502), [`GT_T2503`](#decl-zcoc2010top-100-gt_t2503), [`GT_T2504`](#decl-zcoc2010top-101-gt_t2504), [`GT_T2505`](#decl-zcoc2010top-102-gt_t2505), [`GT_T2506`](#decl-zcoc2010top-103-gt_t2506), [`GT_T2507`](#decl-zcoc2010top-104-gt_t2507), [`GT_T2508`](#decl-zcoc2010top-91-gt_t2508) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L636-L653` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역(P_KOKRS)의 사용자 특성 마스터 ZCOT0080(메이커 WW300), ZCOT0090(지점 WW120→사업부/지사), ZCOT0110(품목상세 WW240→품목 대/중/소)을 조회해 각 특성 키로 정렬한다. + +```abap + 655| SELECT * FROM ZCOT0080 + 656| INTO TABLE GT_ZCOT0080 + 657| WHERE KOKRS = P_KOKRS. + 658| + 659| SORT GT_ZCOT0080 BY WW300. + 660| + 661| SELECT * FROM ZCOT0090 + 662| INTO TABLE GT_ZCOT0090 + 663| WHERE KOKRS = P_KOKRS. + 664| + 665| SORT GT_ZCOT0090 BY WW120. + 666| + 667| SELECT * FROM ZCOT0110 + 668| INTO TABLE GT_ZCOT0110 + 669| WHERE KOKRS = P_KOKRS. + 670| + 671| SORT GT_ZCOT0110 BY WW240. +``` + +- **EN**: Read the custom characteristic masters ZCOT0080 (maker WW300), ZCOT0090 (branch WW120 with parent division/region) and ZCOT0110 (product detail WW240 with product hierarchy) for the controlling area and sort by key. +- 테이블(파서): read [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: 특성 마스터, 지점, 품목상세, 메이커, 특성 파생 +- English: Characteristic Master, Branch, Product Detail, Maker, Derivation +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc2010top-92-gt_zcot0080), [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs), [`GT_ZCOT0090`](#decl-zcoc2010top-98-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcoc2010top-105-gt_zcot0110) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L655-L671` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#SET_CHARACTER_MASTER#C2` + +#### [sql_select] 관리회계영역과 회사코드가 1:1인 하이마트 전제로 TKA02에서 관리회계영역에 할당된 회사코드를 GV_BUKRS에 읽는다. + +```abap + 675| SELECT SINGLE BUKRS FROM TKA02 + 676| INTO GV_BUKRS + 677| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read the company code assigned to the controlling area from TKA02 into GV_BUKRS, assuming a 1:1 relationship. +- 테이블(파서): read [TKA02](/tables/TKA02.md) / write - +- SAP 객체: TKA02 +- 업무 키워드: 회사코드, 관리회계영역 할당 +- English: Company Code, Controlling Area Assignment, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcoc2010top-86-gv_bukrs), [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L675-L677` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#SET_CHARACTER_MASTER#C3` + +### FORM READ_DATA — `ZCOC2010F01` L312-L334 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 315| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 316| * 2. 업로드 파일 취득 + 317| PERFORM UPLOAD_XLS_STRUCT TABLES + 318| USING P_FNAME " 파일명 + 319| 1 "S_COL-LOW + 320| 2 "S_ROW-LOW + 321| 256 "S_COL-HIGH + 322| 65536. "S_ROW-HIGH + 323| CHECK [] IS NOT INITIAL. + 324| *3. 인터널 테이블로 이전 + 325| PERFORM TRANSFER_GT_DATA. + 326| + 327| CHECK GT_DATA[] IS NOT INITIAL. + 328| + 329| "4. Validation + 330| PERFORM VALIDATION_CHECK. + 331| + 332| *5. 인터널 테이블 데이터 + 333| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc2010top-30-gc_upload_struct), [``](#decl-zcoc2010top-48--gf_uploadt-), [`P_FNAME`](#decl-zcoc2010top-126-p_fname), [`GT_DATA`](#decl-zcoc2010top-60-gt_data) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L315-L333` · confidence 0.8 · `ZCOC2010#ZCOC2010F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC2010F01` L567-L613 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 573| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 574| EXPORTING + 575| I_STRUCTURE_NAME = LV_STRNM + 576| I_BYPASSING_BUFFER = 'X' + 577| CHANGING + 578| CT_FIELDCAT = GT_UPLD_FCAT + 579| EXCEPTIONS + 580| INCONSISTENT_INTERFACE = 1 + 581| PROGRAM_ERROR = 2 + 582| OTHERS = 3. + 583| + 584| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 585| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 586| + 587| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 588| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 589| ENDIF. + 590| + 591| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 592| GS_UPLD_FCAT-INTLEN = '10'. + 593| ENDIF. + 594| + 595| " 올린 그대로 받기 위해 CHAR로 변환. + 596| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 597| GS_UPLD_FCAT-INTTYPE = 'C'. + 598| + 599| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 600| ENDLOOP. + 601| + 602| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 603| EXPORTING + 604| IT_FIELDCATALOG = LT_UPLD_FCAT + 605| IMPORTING + 606| EP_TABLE = GF_UPLOADT. + 607| + 608| ASSIGN GF_UPLOADT->* TO . + 609| + 610| CREATE DATA GF_UPLOADS LIKE LINE OF . + 611| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc2010f01-568-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc2010top-54-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2010top-55-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc2010f01-569-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc2010top-51-gf_uploadt), [``](#decl-zcoc2010top-48--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc2010top-52-gf_uploads), [``](#decl-zcoc2010top-49--gf_uploads-) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L573-L611` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC2010F01` L112-L203 (92줄) + +*동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 74/92줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 필드카탈로그의 도메인별 소문자 허용 여부(LOWERCASE)를 DD01L에서 조회해 정렬·중복 제거한다. + +```abap + 128| SELECT DOMNAME LOWERCASE + 129| INTO TABLE LT_LOWERCASE + 130| FROM DD01L + 131| FOR ALL ENTRIES IN GT_UPLD_FCAT + 132| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 133| AND AS4LOCAL = 'A'. + 134| + 135| SORT LT_LOWERCASE. + 136| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE + 137| COMPARING ALL FIELDS. +``` + +- **EN**: Select the LOWERCASE flag per domain from DD01L for the upload field catalog. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L +- 업무 키워드: 도메인 소문자 허용, 데이터 딕셔너리 +- English: Domain, DD01L, Lower Case +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc2010f01-113-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc2010top-54-gt_upld_fcat) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L128-L137` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 업로드 행의 각 컬럼을 COL_POS로 ASSIGN해 소문자 비허용 도메인은 대문자화하고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자(BDC_CURR)·날짜(BDC_DATE) 형식을 정리한 뒤 GS_DATA 필드로 옮기고(타입 변환 예외 시 오류 종료) 상태 INIT로 GT_DATA에 추가한다. + +```abap + 139| LOOP AT INTO . + 140| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 141| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 142| TO . + 143| + 144| IF SY-SUBRC NE 0. + 145| MESSAGE S000 WITH 'Field assign Fail.'. + 146| LEAVE LIST-PROCESSING. + 147| ENDIF. + 148| + 149| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 150| BINARY SEARCH. + 151| + 152| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 153| TRANSLATE TO UPPER CASE. + 154| ENDIF. + 155| + 156| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 157| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 158| INTO LV_CONVFUNC. + 159| + 160| CALL FUNCTION LV_CONVFUNC + 161| EXPORTING + 162| INPUT = + 163| IMPORTING + 164| OUTPUT = + 165| EXCEPTIONS + 166| OTHERS = 1. + 167| ENDIF. + 168| + 169| CASE GS_UPLD_FCAT-DATATYPE. + 170| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 171| 'DEC' OR 'CURR'. + 172| PERFORM BDC_CURR USING . + 173| WHEN 'DATS'. + 174| PERFORM BDC_DATE USING . + 175| ENDCASE. + 176| + 177| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 178| TO . + 179| + 180| IF SY-SUBRC NE 0. + 181| MESSAGE S000 WITH 'Field assign Fail.'. + 182| LEAVE LIST-PROCESSING. + 183| ENDIF. + 184| + 185| TRY . + 186| = . + 187| + 188| CATCH CX_ROOT INTO LF_OREF. + 189| LV_TEXT = LF_OREF->GET_TEXT( ). + 190| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 191| 'Type conversion error :' LV_TEXT. + 192| LEAVE LIST-PROCESSING. + 193| ENDTRY. + 194| ENDLOOP. + 195| + 196| GS_DATA-STATUS = GC_STATUS_INIT. + 197| + 198| APPEND GS_DATA TO GT_DATA. + 199| CLEAR GS_DATA. + 200| CLEAR : LT_LOWERCASE. + 201| + 202| ENDLOOP. +``` + +- **EN**: For each uploaded row and catalog field: upper-case, apply CONVERSION_EXIT_*_INPUT dynamically, normalize numeric/date values, move into GS_DATA with type-conversion error handling, and append to GT_DATA with initial status. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: DD01L, CX_ROOT +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 대문자 변환, 숫자 날짜 형식, 타입 변환 오류 +- English: Conversion Exit, Dynamic Field Assignment, Excel Upload, Type Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc2010top-48--gf_uploadt-), [``](#decl-zcoc2010top-49--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc2010top-54-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2010top-55-gs_upld_fcat), [``](#decl-zcoc2010f01-118--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc2010f01-113-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc2010f01-120-lv_convfunc), [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`GS_DATA`](#decl-zcoc2010top-74-gs_data), [``](#decl-zcoc2010f01-119--fs_data_field-), [`LF_OREF`](#decl-zcoc2010f01-121-lf_oref), [`LV_TEXT`](#decl-zcoc2010f01-122-lv_text) 외 1건 +- 위치: `abap://ZCOC2010/ZCOC2010F01#L139-L202` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC2010F01` L213-L278 (66줄) + +*업로드된 매출 계획 행의 구분값(금액/수량), 지점코드 입력 여부, ZCOT0090 지점 마스터 존재 여부, 지점+구분 중복을 검증해 오류 행을 표시한다.* + +> 이 unit 의 조각 1개가 58/66줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 행별로 GUBUN 첫 글자가 금액/수량(GC_GUBUN1/2)인지, WW120 지점코드가 입력되었고 GT_ZCOT0090에 존재하는지, LT_CHECK에서 지점+구분 조합이 중복되는지 검사해 오류 시 메시지·RED 상태·필드 강조·GV_UPLOAD_ERROR를 세팅한다. + +```abap + 219| LOOP AT GT_DATA. + 220| + 221| IF NOT ( GT_DATA-GUBUN(1) = GC_GUBUN1 OR GT_DATA-GUBUN(1) = GC_GUBUN2 ). + 222| GT_DATA-MESSAGE = '구분값은 ''금액''과 ''수량'' 텍스트만 넣어주십시오.'(F04). + 223| GT_DATA-STATUS = GC_STATUS_RED. + 224| GV_UPLOAD_ERROR = 'X'. + 225| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. + 226| PERFORM ADD_DATA_MESSAGE USING 'E' + 227| GT_DATA-WW120 + 228| GT_DATA-MESSAGE. + 229| ENDIF. + 230| + 231| IF GT_DATA-WW120 IS INITIAL. + 232| GT_DATA-MESSAGE = '지점코드가 입력되지 않았습니다.'(F05). + 233| GT_DATA-STATUS = GC_STATUS_RED. + 234| GV_UPLOAD_ERROR = 'X'. + 235| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 236| PERFORM ADD_DATA_MESSAGE USING 'E' + 237| GT_DATA-WW120 + 238| GT_DATA-MESSAGE. + 239| ENDIF. + 240| + 241| READ TABLE GT_ZCOT0090 WITH KEY WW120 = GT_DATA-WW120 + 242| BINARY SEARCH. + 243| + 244| IF SY-SUBRC NE 0. + 245| GT_DATA-MESSAGE = '지점코드가 존재하지 않습니다.'(F06). + 246| GT_DATA-STATUS = GC_STATUS_RED. + 247| GV_UPLOAD_ERROR = 'X'. + 248| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 249| PERFORM ADD_DATA_MESSAGE USING 'E' + 250| GT_DATA-WW120 + 251| GT_DATA-MESSAGE. + 252| ENDIF. + 253| + 254| LOOP AT LT_CHECK WHERE WW120 = GT_DATA-WW120 + 255| AND GUBUN(1) = GT_DATA-GUBUN(1). + 256| ADD 1 TO LV_CNT. + 257| IF LV_CNT = 2. + 258| EXIT. + 259| ENDIF. + 260| ENDLOOP. + 261| + 262| IF LV_CNT = 2. + 263| GT_DATA-MESSAGE = '중복 지점 데이터가 업로드되었습니다.'(F07). + 264| GT_DATA-STATUS = GC_STATUS_RED. + 265| GV_UPLOAD_ERROR = 'X'. + 266| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 267| PERFORM ADD_DATA_MESSAGE USING 'E' + 268| GT_DATA-WW120 + 269| GT_DATA-MESSAGE. + 270| ENDIF. + 271| + 272| MODIFY GT_DATA. + 273| + 274| CLEAR : LV_CNT. + 275| + 276| ENDLOOP. +``` + +- **EN**: Validate each row: type must be amount or quantity, branch code WW120 must be filled and exist in ZCOT0090, and branch plus type must not be duplicated; flag errors with message, red status and field highlight. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0090 +- 업무 키워드: 구분값 검증, 지점코드 검증, 지점 마스터 존재 확인, 중복 검증, 오류 표시 +- English: Validation, Branch Code, Duplicate Check, Sales Plan Upload +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`GC_GUBUN1`](#decl-zcoc2010top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2010top-36-gc_gubun2), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2010top-22-gv_upload_error), [`GT_ZCOT0090`](#decl-zcoc2010top-98-gt_zcot0090), [`LT_CHECK`](#decl-zcoc2010f01-214-lt_check), [`LV_CNT`](#decl-zcoc2010f01-215-lv_cnt) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L219-L276` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#VALIDATION_CHECK#C1` + +### FORM ADD_DATA_MESSAGE — `ZCOC2010F01` L452-L478 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 459| IF P_VALUE IS NOT INITIAL. + 460| CONCATENATE P_VALUE ` : ` P_MESSAGE + 461| INTO LV_MESSAGE. + 462| ELSE. + 463| LV_MESSAGE = P_MESSAGE. + 464| ENDIF. + 465| + 466| IF P_STATUS = 'S'. + 467| LV_STATUS = GC_STATUS_GREEN. + 468| ELSEIF P_STATUS = 'E'. + 469| LV_STATUS = GC_STATUS_RED. + 470| ELSEIF P_STATUS = 'W'. + 471| LV_STATUS = GC_STATUS_YELLOW. + 472| ENDIF. + 473| GS_MSG_T_S-STATUS = LV_STATUS. + 474| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 475| + 476| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc2010f01-454-lv_message), [`LV_STATUS`](#decl-zcoc2010f01-455-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc2010top-84-gs_msg_t_s), [`GT_DATA`](#decl-zcoc2010top-60-gt_data) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L459-L476` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC2010F01` L487-L559 (73줄) + +*업로드된 매출 계획 행에 통화·단위·지점명을 보강하고 금액/수량 구분별 월 합계(GT_SUM_VV100/GT_SUM_VVQ01)와 행별 연간 합계(SUM)를 계산한다.* + +> 이 unit 의 조각 2개가 57/73줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 행별로 통화(GV_WAERS)·단위(GC_MEINS)를 세팅하고 구분이 금액이면 GT_SUM_VV100, 수량이면 GT_SUM_VVQ01에 COLLECT로 월별 합계를 집계하며 GT_ZCOT0090에서 지점명(WW120_TEXT)을 보강한다. + +```abap + 500| LOOP AT GT_DATA. + 501| GT_DATA-REC_WAERS = GV_WAERS. + 502| GT_DATA-MEINS = GC_MEINS. + 503| + 504| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 505| MOVE-CORRESPONDING GT_DATA TO GT_SUM_VV100. + 506| CLEAR : GT_SUM_VV100-WW120. + 507| CLEAR : GT_SUM_VV100-REC_WAERS. + 508| COLLECT GT_SUM_VV100. + 509| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 510| MOVE-CORRESPONDING GT_DATA TO GT_SUM_VVQ01. + 511| CLEAR : GT_SUM_VVQ01-WW120. + 512| CLEAR : GT_SUM_VVQ01-MEINS. + 513| COLLECT GT_SUM_VVQ01. + 514| ENDIF. + 515| + 516| READ TABLE GT_ZCOT0090 WITH KEY WW120 = GT_DATA-WW120 + 517| BINARY SEARCH. + 518| + 519| IF SY-SUBRC EQ 0. + 520| GT_DATA-WW120_TEXT = GT_ZCOT0090-WW120_TEXT. + 521| ENDIF. + 522| + 523| MODIFY GT_DATA. + 524| CLEAR : GT_DATA, GT_ZCOT0090, GT_SUM_VV100, GT_SUM_VVQ01. + 525| ENDLOOP. +``` + +- **EN**: Set currency/unit, COLLECT monthly totals into GT_SUM_VV100 (amount) or GT_SUM_VVQ01 (quantity) by type, and enrich the branch text from GT_ZCOT0090. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0090 +- 업무 키워드: 월별 합계 집계, 금액 구분, 수량 구분, 지점명 보강 +- English: COLLECT, Monthly Total, Branch Text +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcoc2010top-37-gc_meins), [`GC_GUBUN1`](#decl-zcoc2010top-35-gc_gubun1), [`GT_SUM_VV100`](#decl-zcoc2010top-87-gt_sum_vv100), [`GC_GUBUN2`](#decl-zcoc2010top-36-gc_gubun2), [`GT_SUM_VVQ01`](#decl-zcoc2010top-88-gt_sum_vvq01), [`GT_ZCOT0090`](#decl-zcoc2010top-98-gt_zcot0090) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L500-L525` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#EDIT_DATA#C1` + +#### [calculation] 행별로 MONTH01~12를 동적 ASSIGN해 소수점 없이 표시 형식으로 정리하며 연간 합계 SUM을 계산하고, 구분별 전체 합계 GV_VV110_SUM(금액)/GV_VVQ01_SUM(수량)을 누적한다. + +```abap + 527| LOOP AT GT_DATA. + 528| CLEAR : LV_SUM. + 529| DO 12 TIMES. + 530| LV_NC = SY-INDEX. + 531| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD. + 532| ASSIGN (LV_FIELD) TO . + 533| + 534| IF SY-SUBRC EQ 0. + 535| LV_FIELD_VALUE = . + 536| + 537| WRITE LV_FIELD_VALUE TO LEFT-JUSTIFIED + 538| NO-GAP DECIMALS 0. + 539| + 540| LV_SUM = LV_SUM + LV_FIELD_VALUE. + 541| + 542| ENDIF. + 543| + 544| CLEAR : LV_FIELD_VALUE. + 545| ENDDO. + 546| + 547| WRITE LV_SUM TO GT_DATA-SUM LEFT-JUSTIFIED + 548| NO-GAP DECIMALS 0. + 549| + 550| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 551| GV_VV110_SUM = GV_VV110_SUM + LV_SUM. + 552| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2.. + 553| GV_VVQ01_SUM = GV_VVQ01_SUM + LV_SUM. + 554| ENDIF. + 555| + 556| MODIFY GT_DATA. CLEAR : GT_DATA. + 557| ENDLOOP. +``` + +- **EN**: Format the 12 monthly values, compute the yearly SUM per row, and accumulate overall totals GV_VV110_SUM (amount) and GV_VVQ01_SUM (quantity). +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 연간 합계, 월별 금액 형식, 전체 합계 누적 +- English: Yearly Total, Formatting, Dynamic Field +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`LV_SUM`](#decl-zcoc2010f01-491-lv_sum), [`LV_NC`](#decl-zcoc2010f01-489-lv_nc), [`LV_FIELD`](#decl-zcoc2010f01-488-lv_field), [``](#decl-zcoc2010f01-490--fs_value-), [`LV_FIELD_VALUE`](#decl-zcoc2010f01-492-lv_field_value), [`GC_GUBUN1`](#decl-zcoc2010top-35-gc_gubun1), [`GV_VV110_SUM`](#decl-zcoc2010top-107-gv_vv110_sum), [`GC_GUBUN2`](#decl-zcoc2010top-36-gc_gubun2), [`GV_VVQ01_SUM`](#decl-zcoc2010top-108-gv_vvq01_sum) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L527-L557` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#EDIT_DATA#C2` + +### EVENT END-OF-SELECTION — `ZCOC2010` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data) +- 위치: `abap://ZCOC2010/ZCOC2010#L57-L67` · confidence 0.85 · `ZCOC2010#ZCOC2010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC2010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC2010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC2010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC2010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2010top-126-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC2010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC2010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC2010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs) +- 위치: `abap://ZCOC2010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC2010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC2010F01` L388-L443 (56줄) + +*ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 행 번호로 GT_DATA를 읽고 GT_LOG_POP 필드카탈로그의 컬럼명(상태/메시지)을 설정한 뒤 MSG_LIST를 LT_POPUP으로 옮겨 팝업 ALV(W_POPUP_GRID->SHOW_DATA)로 오류 로그를 표시한다. + +```abap + 400| CHECK P_ROW CO '0123456789 '. + 401| + 402| READ TABLE GT_DATA INDEX P_ROW. + 403| + 404| CHECK SY-SUBRC EQ 0. + 405| + 406| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 407| USING 'GT_LOG_POP'. + 408| + 409| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. + 410| + 411| CASE LS_FIELDCAT-FIELDNAME. + 412| WHEN 'STATUS'. + 413| LS_FIELDCAT-COLTEXT = '상태'(F10). + 414| WHEN 'MESSAGE'. + 415| LS_FIELDCAT-COLTEXT = '메시지'(F11). + 416| ENDCASE. + 417| + 418| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. + 419| ENDLOOP. + 420| + 421| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 422| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 423| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 424| APPEND LT_POPUP. + 425| CLEAR : LT_POPUP. + 426| ENDLOOP. + 427| + 428| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 429| + 430| CREATE OBJECT W_POPUP_GRID + 431| EXPORTING + 432| I_T_FIELDCATALOG = POPUP_FIELDCAT + 433| I_S_LAYOUT = LS_LAYO + 434| I_CAPTION = '' + 435| I_LEFT = 100 + 436| I_TOP = 150 + 437| I_HEIGHT = 400 + 438| I_WIDTH = 900. + 439| + 440| CALL METHOD W_POPUP_GRID->SHOW_DATA + 441| EXPORTING + 442| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Read the selected GT_DATA row, build a popup field catalog for GT_LOG_POP and show its MSG_LIST entries in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): GET_FCAT_LIKE_ITAB, SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, ALV 팝업 +- English: Error Log, Popup ALV, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc2010f01-389-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2010f01-392-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc2010top-84-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc2010top-76-gt_log_pop), [`LT_POPUP`](#decl-zcoc2010f01-391-lt_popup), [`LS_LAYO`](#decl-zcoc2010f01-390-ls_layo), [`W_POPUP_GRID`](#decl-zcoc2010top-82-w_popup_grid) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L400-L442` · confidence 0.8 · `ZCOC2010#ZCOC2010F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC2010F01` L285-L303 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 288| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 289| + 290| IF L_EXISTS = ABAP_FALSE. + 291| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 292| LEAVE LIST-PROCESSING. + 293| EXIT. + 294| ENDIF. + 295| + 296| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 297| 'GS_UPLOAD' + 298| P_NAME + 299| 1 "S_COL-LOW + 300| 2 "S_ROW-LOW + 301| 256 "S_COL-HIGH + 302| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc2010f01-286-l_exists) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L288-L302` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM EXECUTE_SAVE — `ZCOC2010F01` L356-L380 (25줄) + +*중복 저장을 막고 사용자 확인 팝업 후 PERFORM_SAVE로 지점별 매출 계획을 저장한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 저장된 경우(GV_ALREADY_POST) 오류 후 종료하고, POPUP_TO_CONFIRM_02로 매출 계획 입력 확인(J) 시 재저장 방지 플래그를 세운 뒤 PERFORM_SAVE를 수행한다. + +```abap + 361| IF GV_ALREADY_POST = 'X'. + 362| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 저장하였습니다.'(F08). + 363| EXIT. + 364| ENDIF. + 365| + 366| IF GV_UPLOAD_ERROR = 'X'. + 367| * PERFORM PGM_MSG USING 'F11' 'E'. + 368| ENDIF. + 369| + 370| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 371| '매출 계획을 입력하시겠습니까?'(F09) '' + 372| CHANGING L_ANSWER. + 373| IF L_ANSWER <> 'J'. + 374| EXIT. + 375| ENDIF. + 376| + 377| GV_ALREADY_POST = 'X'. + 378| PERFORM PERFORM_SAVE. +``` + +- **EN**: Prevent duplicate saving, confirm with POPUP_TO_CONFIRM_02, then run PERFORM_SAVE to store the sales plan. +- 호출(파서): POPUP_TO_CONFIRM_02, PERFORM_SAVE +- SAP 객체: POPUP_TO_CONFIRM_02 +- 업무 키워드: 중복 저장 방지, 확인 팝업, 매출 계획 저장 +- English: Confirmation Popup, Duplicate Check, Save +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc2010top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc2010top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc2010f01-357-l_answer) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L361-L378` · confidence 0.85 · `ZCOC2010#ZCOC2010F01#FORM#EXECUTE_SAVE#C1` + +### FORM PERFORM_SAVE — `ZCOC2010F01` L687-L774 (88줄) + +*검증된 GT_DATA를 구분(금액/수량)에 따라 ZCOT0160(매출액 계획, COST_GUBUN '40')·ZCOT0170(매출수량 계획, COST_GUBUN '50')에 월별로 변환해 기존 연도 데이터를 삭제 후 저장한다.* + +> 이 unit 의 조각 2개가 68/88줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 행별로 MONTH01~12를 동적 ASSIGN해 BDC_CURR로 숫자 정리하고, 금액 구분(GC_GUBUN1)이면 CONVERT_1000_U(천원→원)·CONV_DB_WAERS 변환 후 LT_ZCOT0160(KOKRS, WW120, GJAHR, COST_GUBUN '40', 통화)에, 수량 구분(GC_GUBUN2)이면 LT_ZCOT0170(COST_GUBUN '50', 단위 EA)에 적재한다. + +```abap + 702| LOOP AT GT_DATA. + 703| DO 12 TIMES. + 704| LV_NC = SY-INDEX. + 705| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD1. + 706| ASSIGN (LV_FIELD1) TO . + 707| IF SY-SUBRC EQ 0. + 708| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 709| CONCATENATE 'LT_ZCOT0160-MONTH' LV_NC INTO LV_FIELD2. + 710| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 711| CONCATENATE 'LT_ZCOT0170-MONTH' LV_NC INTO LV_FIELD2. + 712| ENDIF. + 713| + 714| ASSIGN (LV_FIELD2) TO . + 715| IF SY-SUBRC EQ 0. + 716| + 717| PERFORM BDC_CURR USING . + 718| = . + 719| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 720| PERFORM CONVERT_1000_U USING . + 721| PERFORM CONV_DB_WAERS USING GV_WAERS. + 722| ENDIF. + 723| ENDIF. + 724| ENDIF. + 725| ENDDO. + 726| + 727| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 728| LT_ZCOT0160-KOKRS = P_KOKRS. + 729| LT_ZCOT0160-REC_WAERS = GV_WAERS. + 730| LT_ZCOT0160-WW120 = GT_DATA-WW120. + 731| LT_ZCOT0160-GJAHR = P_GJAHR. + 732| LT_ZCOT0160-COST_GUBUN = '40'. + 733| APPEND LT_ZCOT0160. + 734| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 735| LT_ZCOT0170-KOKRS = P_KOKRS. + 736| LT_ZCOT0170-MEINS = GC_MEINS. + 737| LT_ZCOT0170-WW120 = GT_DATA-WW120. + 738| LT_ZCOT0170-GJAHR = P_GJAHR. + 739| LT_ZCOT0170-COST_GUBUN = '50'. + 740| APPEND LT_ZCOT0170. + 741| ENDIF. + 742| CLEAR : LT_ZCOT0160, LT_ZCOT0170. + 743| ENDLOOP. +``` + +- **EN**: Convert each row's 12 monthly values (amount rows scaled by 1000 and currency-converted) into ZCOT0160 (COST_GUBUN 40) or ZCOT0170 (COST_GUBUN 50) records per branch WW120 and fiscal year. +- 호출(파서): BDC_CURR, CONVERT_1000_U, CONV_DB_WAERS +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 매출액 계획, 매출수량 계획, 월별 금액 변환, 천원 단위 환산, 지점 +- English: Sales Plan, Sales Quantity Plan, Monthly Values, Amount Conversion +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`LV_NC`](#decl-zcoc2010f01-690-lv_nc), [`LV_FIELD1`](#decl-zcoc2010f01-688-lv_field1), [``](#decl-zcoc2010f01-692--fs_value1-), [`GC_GUBUN1`](#decl-zcoc2010top-35-gc_gubun1), [`LV_FIELD2`](#decl-zcoc2010f01-689-lv_field2), [`GC_GUBUN2`](#decl-zcoc2010top-36-gc_gubun2), [``](#decl-zcoc2010f01-693--fs_value2-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LT_ZCOT0160`](#decl-zcoc2010f01-694-lt_zcot0160), [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs), [`P_GJAHR`](#decl-zcoc2010top-123-p_gjahr) 외 2건 +- 위치: `abap://ZCOC2010/ZCOC2010F01#L702-L743` · confidence 0.88 · `ZCOC2010#ZCOC2010F01#FORM#PERFORM_SAVE#C1` + +#### [db_write] 관리회계영역·회계연도 기준 기존 ZCOT0160/ZCOT0170 데이터를 DELETE한 뒤 LT_ZCOT0160/LT_ZCOT0170을 MODIFY로 저장하고, 결과에 따라 GT_DATA 상태(GREEN/RED)와 메시지를 일괄 갱신한다. + +```abap + 745| IF LT_ZCOT0160[] IS NOT INITIAL. + 746| DELETE FROM ZCOT0160 WHERE KOKRS = P_KOKRS + 747| AND GJAHR = P_GJAHR. + 748| MODIFY ZCOT0160 FROM TABLE LT_ZCOT0160. + 749| LV_SUBRC1 = SY-SUBRC. + 750| ENDIF. + 751| + 752| IF LT_ZCOT0170[] IS NOT INITIAL. + 753| DELETE FROM ZCOT0170 WHERE KOKRS = P_KOKRS + 754| AND GJAHR = P_GJAHR. + 755| MODIFY ZCOT0170 FROM TABLE LT_ZCOT0170. + 756| LV_SUBRC2 = SY-SUBRC. + 757| ENDIF. + 758| + 759| IF LV_SUBRC1 EQ 0 AND LV_SUBRC2 EQ 0. + 760| MESSAGE S000 WITH '정상적으로 반영되었습니다.'(F12). + 761| LS_DATA-STATUS = GC_STATUS_GREEN. + 762| LS_DATA-MESSAGE = '정상적으로 반영되었습니다'(F12). + 763| ELSE. + 764| MESSAGE S000 WITH '저장 중 오류가 발생하였습니다.'(F13). + 765| LS_DATA-STATUS = GC_STATUS_RED. + 766| LS_DATA-MESSAGE = '저장 중 오류가 발생하였습니다'(F13). + 767| ENDIF. + 768| + 769| MODIFY GT_DATA FROM LS_DATA TRANSPORTING STATUS MESSAGE + 770| WHERE WW120 IS NOT INITIAL . +``` + +- **EN**: Delete existing ZCOT0160/ZCOT0170 rows for the controlling area and fiscal year, MODIFY the new plan records, and set green/red status and message on GT_DATA. +- 테이블(파서): read - / write [ZCOT0160](/tables/ZCOT0160.md), [ZCOT0170](/tables/ZCOT0170.md), [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 기존 데이터 삭제, 매출 계획 저장, 저장 결과 상태, 회계연도 +- English: Delete and Replace, MODIFY Table, Save Result +- 정의부(복사 시 함께 필요): [`LT_ZCOT0160`](#decl-zcoc2010f01-694-lt_zcot0160), [`P_KOKRS`](#decl-zcoc2010top-117-p_kokrs), [`P_GJAHR`](#decl-zcoc2010top-123-p_gjahr), [`LV_SUBRC1`](#decl-zcoc2010f01-699-lv_subrc1), [`LT_ZCOT0170`](#decl-zcoc2010f01-695-lt_zcot0170), [`LV_SUBRC2`](#decl-zcoc2010f01-700-lv_subrc2), [`GT_DATA`](#decl-zcoc2010top-60-gt_data), [`LS_DATA`](#decl-zcoc2010f01-696-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC2010/ZCOC2010F01#L745-L770` · confidence 0.9 · `ZCOC2010#ZCOC2010F01#FORM#PERFORM_SAVE#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC2010I01` L6-L30 (25줄) + +*화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드가 BACK/CANC/EXIT이면 ALV 컨테이너를 해제하고 화면을 종료하며, &SAVE이면 EXECUTE_SAVE로 지점별 매출 계획을 ZCOT0160/ZCOT0170에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&SAVE'. + 24| PERFORM EXECUTE_SAVE. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 0100 function codes: free ALV containers and leave on BACK/EXIT, run EXECUTE_SAVE to store the sales plan on &SAVE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_SAVE +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 사용자 명령, 매출 계획 저장, 화면 종료 +- English: User Command, PAI, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc2010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc2010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC2010/ZCOC2010I01#L9-L28` · confidence 0.85 · `ZCOC2010#ZCOC2010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (342건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC2010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc2010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC2010TOP` (52건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc2010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc2010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc2010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc2010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc2010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc2010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc2010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc2010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc2010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc2010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc2010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc2010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc2010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc2010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc2010top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc2010top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0260'. +``` + +#### GC_SMW0 — constants · L32-L32 {#decl-zcoc2010top-32-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC2010'. +``` + +#### GC_GUBUN1 — constants · L35-L35 {#decl-zcoc2010top-35-gc_gubun1} + +```abap +CONSTANTS : GC_GUBUN1(1) TYPE C VALUE '금'. "금액 +``` + +#### GC_GUBUN2 — constants · L36-L36 {#decl-zcoc2010top-36-gc_gubun2} + +```abap +CONSTANTS : GC_GUBUN2(1) TYPE C VALUE '수'. "수량 +``` + +#### GC_MEINS — constants · L37-L37 {#decl-zcoc2010top-37-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE COSP-MEINH VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L43-L43 {#decl-zcoc2010top-43-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L48-L48 {#decl-zcoc2010top-48--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L49-L49 {#decl-zcoc2010top-49--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L51-L51 {#decl-zcoc2010top-51-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L52-L52 {#decl-zcoc2010top-52-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L54-L54 {#decl-zcoc2010top-54-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L55-L55 {#decl-zcoc2010top-55-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L60-L72 {#decl-zcoc2010top-60-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0260. + +DATA : +WW120_TEXT LIKE ZCOT0090-WW120_TEXT, +SUM(16) TYPE C, + +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L74-L74 {#decl-zcoc2010top-74-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L76-L79 {#decl-zcoc2010top-76-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L82-L82 {#decl-zcoc2010top-82-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L84-L84 {#decl-zcoc2010top-84-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L86-L86 {#decl-zcoc2010top-86-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE T001-BUKRS. +``` + +#### GT_SUM_VV100 — data · L87-L87 {#decl-zcoc2010top-87-gt_sum_vv100} + +```abap +DATA : GT_SUM_VV100 LIKE ZCOT0160 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_VVQ01 — data · L88-L88 {#decl-zcoc2010top-88-gt_sum_vvq01} + +```abap +DATA : GT_SUM_VVQ01 LIKE ZCOT0170 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L91-L91 {#decl-zcoc2010top-91-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L92-L92 {#decl-zcoc2010top-92-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L95-L95 {#decl-zcoc2010top-95-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L96-L96 {#decl-zcoc2010top-96-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L97-L97 {#decl-zcoc2010top-97-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L98-L98 {#decl-zcoc2010top-98-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L100-L100 {#decl-zcoc2010top-100-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L101-L101 {#decl-zcoc2010top-101-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L102-L102 {#decl-zcoc2010top-102-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L103-L103 {#decl-zcoc2010top-103-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L104-L104 {#decl-zcoc2010top-104-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L105-L105 {#decl-zcoc2010top-105-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GV_VV110_SUM — data · L107-L107 {#decl-zcoc2010top-107-gv_vv110_sum} + +```abap +DATA : GV_VV110_SUM LIKE ZCOT0160-MONTH12. +``` + +#### GV_VVQ01_SUM — data · L108-L108 {#decl-zcoc2010top-108-gv_vvq01_sum} + +```abap +DATA : GV_VVQ01_SUM LIKE ZCOT0170-MONTH12. +``` + +#### P_KOKRS — parameter · L117-L118 {#decl-zcoc2010top-117-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L123-L124 {#decl-zcoc2010top-123-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### P_FNAME — parameter · L126-L127 {#decl-zcoc2010top-126-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC2010_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC2010F01` (34건) + +#### L_UCOMM — data · unit 로컬 · L35-L35 {#decl-zcoc2010f01-35-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L113-L116 {#decl-zcoc2010f01-113-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L118-L118 {#decl-zcoc2010f01-118--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L119-L119 {#decl-zcoc2010f01-119--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L120-L120 {#decl-zcoc2010f01-120-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L121-L121 {#decl-zcoc2010f01-121-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L122-L122 {#decl-zcoc2010f01-122-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_CHECK — data · unit 로컬 · L214-L214 {#decl-zcoc2010f01-214-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L215-L215 {#decl-zcoc2010f01-215-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L286-L286 {#decl-zcoc2010f01-286-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### L_ANSWER — data · unit 로컬 · L357-L357 {#decl-zcoc2010f01-357-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L389-L389 {#decl-zcoc2010f01-389-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L390-L390 {#decl-zcoc2010f01-390-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L391-L391 {#decl-zcoc2010f01-391-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L392-L392 {#decl-zcoc2010f01-392-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_MESSAGE — data · unit 로컬 · L454-L454 {#decl-zcoc2010f01-454-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L455-L455 {#decl-zcoc2010f01-455-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_FIELD — data · unit 로컬 · L488-L488 {#decl-zcoc2010f01-488-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L489-L489 {#decl-zcoc2010f01-489-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L490-L490 {#decl-zcoc2010f01-490--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_SUM — data · unit 로컬 · L491-L491 {#decl-zcoc2010f01-491-lv_sum} + +```abap + DATA : LV_SUM LIKE ZCOT0160-MONTH01. +``` + +#### LV_FIELD_VALUE — data · unit 로컬 · L492-L492 {#decl-zcoc2010f01-492-lv_field_value} + +```abap + DATA : LV_FIELD_VALUE LIKE ZCOT0160-MONTH01. +``` + +#### LV_STRNM — data · unit 로컬 · L568-L568 {#decl-zcoc2010f01-568-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L569-L569 {#decl-zcoc2010f01-569-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +#### LV_FIELD1 — data · unit 로컬 · L688-L688 {#decl-zcoc2010f01-688-lv_field1} + +```abap + DATA : LV_FIELD1(30) TYPE C. +``` + +#### LV_FIELD2 — data · unit 로컬 · L689-L689 {#decl-zcoc2010f01-689-lv_field2} + +```abap + DATA : LV_FIELD2(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L690-L690 {#decl-zcoc2010f01-690-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L692-L692 {#decl-zcoc2010f01-692--fs_value1-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L693-L693 {#decl-zcoc2010f01-693--fs_value2-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LT_ZCOT0160 — data · unit 로컬 · L694-L694 {#decl-zcoc2010f01-694-lt_zcot0160} + +```abap + DATA : LT_ZCOT0160 LIKE ZCOT0160 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOT0170 — data · unit 로컬 · L695-L695 {#decl-zcoc2010f01-695-lt_zcot0170} + +```abap + DATA : LT_ZCOT0170 LIKE ZCOT0170 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_DATA — data · unit 로컬 · L696-L696 {#decl-zcoc2010f01-696-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### LV_SUBRC1 — data · unit 로컬 · L699-L699 {#decl-zcoc2010f01-699-lv_subrc1} + +```abap + DATA : LV_SUBRC1 LIKE SY-DATUM. +``` + +#### LV_SUBRC2 — data · unit 로컬 · L700-L700 {#decl-zcoc2010f01-700-lv_subrc2} + +```abap + DATA : LV_SUBRC2 LIKE SY-DATUM. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC2010 L26-32 | 0 | INITIALIZATION 이벤트에서 관리회계영역 텍스트 설정(SET_DYNP)과 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC2010 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능키(양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC2010 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC2010 L42-47 | 0 | 업로드 파일 파라미터 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC2010 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC2010 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC2010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC2010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC2010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC2010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC2010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC2010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC2010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC2010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC2010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC2010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC2010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC2010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC2010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC2010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC2010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC2010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC2010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC2010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC2010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC2010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC2010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC2010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC2010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC2010C01 L631-690 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC2010C01 L700-710 | 0 | | +| HANDLE_TOP_OF_PAGE | FORM | ZCOC2010C01 L719-724 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC2010F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC2010F01 L22-25 | 0 | 초기화 시 관리회계영역 P_KOKRS의 기준 정보를 SET_KOKRS_BASE로 조회해 명칭(P_BEZEI)을 선택화면에 표시한다. | +| CONTROL_FCXX | FORM | ZCOC2010F01 L34-45 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 문서를 열어 지점별 매출 계획 업로드 양식을 제공한다. | +| CHECK_INPUT | FORM | ZCOC2010F01 L54-61 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC2010F01 L67-82 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC2010F01 L88-91 | 0 | 특성 마스터 적재(SET_CHARACTER_MASTER) 후 READ_DATA를 호출해 엑셀 업로드·검증을 수행하는 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC2010F01 L100-103 | 0 | 선택화면 기능키 01에 엑셀 양식 다운로드 버튼(아이콘·텍스트)을 설정한다. | +| TRANSFER_GT_DATA | FORM | ZCOC2010F01 L112-203 | 2 | 동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC2010F01 L213-278 | 1 | 업로드된 매출 계획 행의 구분값(금액/수량), 지점코드 입력 여부, ZCOT0090 지점 마스터 존재 여부, 지점+구분 중복을 검증해 오류 행을 표시한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC2010F01 L285-303 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC2010F01 L312-334 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC2010F01 L342-350 | 0 | 오류가 발생한 필드를 ALV 셀 색상(COL=6, 빨강)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 보조 FORM이다. | +| EXECUTE_SAVE | FORM | ZCOC2010F01 L356-380 | 1 | 중복 저장을 막고 사용자 확인 팝업 후 PERFORM_SAVE로 지점별 매출 계획을 저장한다. | +| SHOW_ERROR_LOG | FORM | ZCOC2010F01 L388-443 | 1 | ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC2010F01 L452-478 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC2010F01 L487-559 | 2 | 업로드된 매출 계획 행에 통화·단위·지점명을 보강하고 금액/수량 구분별 월 합계(GT_SUM_VV100/GT_SUM_VVQ01)와 행별 연간 합계(SUM)를 계산한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC2010F01 L567-613 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| SET_CHARACTER_MASTER | FORM | ZCOC2010F01 L622-678 | 3 | CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다. | +| PERFORM_SAVE | FORM | ZCOC2010F01 L687-774 | 2 | 검증된 GT_DATA를 구분(금액/수량)에 따라 ZCOT0160(매출액 계획, COST_GUBUN '40')·ZCOT0170(매출수량 계획, COST_GUBUN '50')에 월별로 변환해 기존 연도 데이터를 삭제 후 저장한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC2010I01 L6-30 | 1 | 화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC2010O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC2010O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC2010O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC2010O01 L136-148 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC2010O01 L156-163 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC2010O01 L171-184 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC2010O01 L193-216 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC2010O01 L225-243 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC2010O01 L253-338 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC2010O01 L346-373 | 0 | | +| SET_HTML_TOP_OF_PAGE | FORM | ZCOC2010O01 L382-594 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC2020.md b/wiki/programs/ZCOC2020.md new file mode 100644 index 0000000..a82dfb4 --- /dev/null +++ b/wiki/programs/ZCOC2020.md @@ -0,0 +1,5167 @@ +--- +type: abap-program +title: "ZCOC2020 — 품목(중)별 매출 계획 Upload" +description: "하이마트 CO 사업계획 수립을 위해 품목(중분류, WW220)별 연간 매출 계획을 엑셀로 업로드하는 프로그램이다. 구분이 '금액'인 행은 매출액 계획(천원, KRW)으로 커스텀 테이블 ZCOT0180(COST_GUBUN '40')에, '수량'인 행은 매출수량 계획(EA)으로 ZCOT0190(COST_GUBUN '60')에 월별로 저장한다. 품목(중) 코드는 T2505로 존재 검증하고 ZCOT0110에서 코드명을 가져오며 관리회계영역 TKA01/TKA02를 참조한다." +resource: "abap://ZCOC2020" +tags: ["사업계획", "매출계획", "품목별계획", "엑셀업로드", "관리회계", "CO", "매출액 계획", "매출수량 계획", "천원 단위 환산", "품목(중)", "월별 값", "계획 저장", "기존 데이터 삭제", "저장 결과", "매출액", "매출수량", "월 합계", "품목(중)명", "구분", "연간 합계"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:14+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD01L", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110"] +x-tables-write: ["GT_DATA", "ZCOT0180", "ZCOT0190"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "285571aa95af278003044c0c12110fce1e83f4cb1f90d2cf15efba9f6c80d71d" +x-unit-count: 146 +x-chunk-count: 72 +x-declaration-count: 226 +--- + +## 업무 목적 + +하이마트 CO 사업계획 수립을 위해 품목(중분류, WW220)별 연간 매출 계획을 엑셀로 업로드하는 프로그램이다. 구분이 '금액'인 행은 매출액 계획(천원, KRW)으로 커스텀 테이블 ZCOT0180(COST_GUBUN '40')에, '수량'인 행은 매출수량 계획(EA)으로 ZCOT0190(COST_GUBUN '60')에 월별로 저장한다. 품목(중) 코드는 T2505로 존재 검증하고 ZCOT0110에서 코드명을 가져오며 관리회계영역 TKA01/TKA02를 참조한다. + +## 주 흐름 + +1. 선택화면에서 관리회계영역(TKA01) 텍스트/통화를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일명이 입력되었는지 확인하고 상태 변수·ALV 필드카탈로그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 판매조직·품목 마스터(T2500~T2508)와 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110), 회사코드(TKA02)를 내부테이블로 적재한다 (SET_CHARACTER_MASTER) +4. 업로드 구조 기반 동적 내부테이블을 생성하고 엑셀 파일(2행부터)을 읽어 적재한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT) +5. 엑셀 값을 CONVERSION_EXIT/숫자·날짜 변환을 거쳐 GT_DATA로 이전한다 (TRANSFER_GT_DATA) +6. 구분값('금'/'수'), 품목(중) 코드 입력 여부, T2505 존재 여부, 품목+구분 중복을 검증하고 오류 행을 빨간색으로 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 월별 12개월 합계와 구분별 총합을 계산하고 코드명을 보강해 ALV(화면 100)에 표시한다 (EDIT_DATA) +8. 저장 버튼(&SAVE) 시 확인 팝업 후 금액은 천원→원 환산하여 ZCOT0180, 수량은 ZCOT0190에 기존 연도 데이터를 삭제하고 MODIFY로 반영한다 (EXECUTE_SAVE, PERFORM_SAVE) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 결과 메인 테이블(구조 ZCOS0270 + 품목(중)명, 합계, 상태, 메시지) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA / 소비: PERFORM_SAVE, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0270 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_T2505` — 품목(중) 마스터 - 존재 여부 검증 (채움: SET_CHARACTER_MASTER / 소비: VALIDATION_CHECK) +- `GT_ZCOT0110` — 품목 특성 마스터(WW220 기준 중복 제거) - 품목(중) 명칭 (채움: SET_CHARACTER_MASTER / 소비: EDIT_DATA) +- `GT_SUM_VV100 / GT_SUM_VVQ01` — 금액/수량 구분별 월 합계 (ZCOT0180/ZCOT0190 구조) (채움: EDIT_DATA / 소비: SET_HTML_TOP_OF_PAGE) +- `LT_ZCOT0180 / LT_ZCOT0190` — DB 저장용 매출액/매출수량 계획 테이블 (채움: PERFORM_SAVE / 소비: PERFORM_SAVE) + +## 테이블 / 외부 호출 + +- read: AENR, DD01L, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110 +- write: GT_DATA, ZCOT0180, ZCOT0190 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (72건 / unit 61개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC2020F01` L34-L45 (12줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 문서(GC_SMW0, 품목별 매출 계획 Upload 양식)를 열어 엑셀 양식을 다운로드하게 한다. + +```abap + 37| CASE L_UCOMM. + 38| WHEN 'FC01'. + 39| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 40| EXPORTING + 41| P_DOCNAM = GC_SMW0 + 42| P_TITLE = '품목별 매출 계획 Upload'(F02). + 43| ENDCASE. +``` + +- **EN**: On function key FC01 open the SMW0 Excel template via Z_CO_OPEN_SMW0 so the user can download the upload form. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 템플릿 +- English: SMW0 template, Excel template +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc2020f01-35-l_ucomm), [`GC_SMW0`](#decl-zcoc2020top-32-gc_smw0) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L37-L43` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC2020` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC2020/ZCOC2020#L49-L51` · confidence 0.8 · `ZCOC2020#ZCOC2020#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC2020F01` L54-L61 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 56| IF P_FNAME IS INITIAL. + 57| MESSAGE S000 DISPLAY LIKE 'E' WITH + 58| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 59| LEAVE LIST-PROCESSING. + 60| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2020top-126-p_fname) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L56-L60` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC2020F01` L67-L82 (16줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 68| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 69| P_BEZEI = GV_KOKRS_BEZEI. + 70| + 71| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 72| " MAIN ALV용 딕셔너리 구조 취득. + 73| PERFORM GET_FCAT_LIKE_ITAB + 74| TABLES GT_MAIN_FIELDCAT + 75| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc2020top-43-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc2020top-28-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L68-L75` · confidence 0.75 · `ZCOC2020#ZCOC2020F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOC2020F01` L617-L676 (60줄) + +*판매조직·품목 마스터(T2500~T2508), 하이마트 CO 특성 마스터(ZCOT0080/0090/0110, 품목(중) WW220 기준 중복 제거), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다.* + +> 이 unit 의 조각 3개가 43/60줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 판매조직/품목 특성 마스터 T2500~T2508 전체를 GT_T25xx에 조회하고 정렬한다(T2505는 품목(중) 존재 검증에 사용). + +```abap + 631| SELECT * FROM T2500 INTO TABLE GT_T2500. + 632| SORT GT_T2500. + 633| SELECT * FROM T2501 INTO TABLE GT_T2501. + 634| SORT GT_T2501. + 635| SELECT * FROM T2502 INTO TABLE GT_T2502. + 636| SORT GT_T2502. + 637| SELECT * FROM T2503 INTO TABLE GT_T2503. + 638| SORT GT_T2503. + 639| SELECT * FROM T2504 INTO TABLE GT_T2504. + 640| SORT GT_T2504. + 641| SELECT * FROM T2505 INTO TABLE GT_T2505. + 642| SORT GT_T2505. + 643| SELECT * FROM T2506 INTO TABLE GT_T2506. + 644| SORT GT_T2506. + 645| SELECT * FROM T2507 INTO TABLE GT_T2507. + 646| SORT GT_T2507. + 647| SELECT * FROM T2508 INTO TABLE GT_T2508. + 648| SORT GT_T2508. +``` + +- **EN**: Load the full characteristic master tables T2500 to T2508 into internal tables and sort them (T2505 is used for item group validation). +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508 +- 업무 키워드: 판매조직 마스터, 품목 마스터, 특성 마스터 +- English: Characteristic master, Sales organization, T2505 +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcoc2020top-95-gt_t2500), [`GT_T2501`](#decl-zcoc2020top-96-gt_t2501), [`GT_T2502`](#decl-zcoc2020top-97-gt_t2502), [`GT_T2503`](#decl-zcoc2020top-100-gt_t2503), [`GT_T2504`](#decl-zcoc2020top-101-gt_t2504), [`GT_T2505`](#decl-zcoc2020top-102-gt_t2505), [`GT_T2506`](#decl-zcoc2020top-103-gt_t2506), [`GT_T2507`](#decl-zcoc2020top-104-gt_t2507), [`GT_T2508`](#decl-zcoc2020top-91-gt_t2508) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L631-L648` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역 기준으로 ZCOT0080, ZCOT0090(지점), ZCOT0110(품목 특성)을 조회하고 ZCOT0110은 품목(중) WW220 기준으로 정렬·중복 제거하여 품목(중)명 조회용으로 준비한다. + +```abap + 650| SELECT * FROM ZCOT0080 + 651| INTO TABLE GT_ZCOT0080 + 652| WHERE KOKRS = P_KOKRS. + 653| + 654| SORT GT_ZCOT0080 BY WW300. + 655| + 656| SELECT * FROM ZCOT0090 + 657| INTO TABLE GT_ZCOT0090 + 658| WHERE KOKRS = P_KOKRS. + 659| + 660| SORT GT_ZCOT0090 BY WW120. + 661| + 662| SELECT * FROM ZCOT0110 + 663| INTO TABLE GT_ZCOT0110 + 664| WHERE KOKRS = P_KOKRS. + 665| + 666| * SORT GT_ZCOT0110 BY WW240. + 667| SORT GT_ZCOT0110 BY WW220. + 668| DELETE ADJACENT DUPLICATES FROM GT_ZCOT0110 + 669| COMPARING WW220. +``` + +- **EN**: Select ZCOT0080, ZCOT0090 and ZCOT0110 for the controlling area; sort ZCOT0110 by WW220 and remove duplicates for item group text lookup. +- 테이블(파서): read [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: 품목 특성 마스터, 지점 마스터, 중복 제거, 품목(중) +- English: Characteristic master, Item group, DELETE ADJACENT DUPLICATES +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc2020top-92-gt_zcot0080), [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs), [`GT_ZCOT0090`](#decl-zcoc2020top-98-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcoc2020top-105-gt_zcot0110) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L650-L669` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#SET_CHARACTER_MASTER#C2` + +#### [sql_select] 관리회계영역과 회사코드가 1:1이므로 TKA02에서 KOKRS에 해당하는 BUKRS 한 건을 GV_BUKRS로 조회한다. + +```abap + 671| CLEAR : GV_BUKRS. + 672| " 하이마트는 관리회계영역과 회사코드는 1:1로 간다. + 673| SELECT SINGLE BUKRS FROM TKA02 + 674| INTO GV_BUKRS + 675| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read the single company code assigned to the controlling area from TKA02. +- 테이블(파서): read [TKA02](/tables/TKA02.md) / write - +- SAP 객체: TKA02 +- 업무 키워드: 회사코드, 관리회계영역 할당 +- English: Company Code, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcoc2020top-86-gv_bukrs), [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L671-L675` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#SET_CHARACTER_MASTER#C3` + +### FORM READ_DATA — `ZCOC2020F01` L313-L335 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 316| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 317| * 2. 업로드 파일 취득 + 318| PERFORM UPLOAD_XLS_STRUCT TABLES + 319| USING P_FNAME " 파일명 + 320| 1 "S_COL-LOW + 321| 2 "S_ROW-LOW + 322| 256 "S_COL-HIGH + 323| 65536. "S_ROW-HIGH + 324| CHECK [] IS NOT INITIAL. + 325| *3. 인터널 테이블로 이전 + 326| PERFORM TRANSFER_GT_DATA. + 327| + 328| CHECK GT_DATA[] IS NOT INITIAL. + 329| + 330| "4. Validation + 331| PERFORM VALIDATION_CHECK. + 332| + 333| *5. 인터널 테이블 데이터 + 334| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc2020top-30-gc_upload_struct), [``](#decl-zcoc2020top-48--gf_uploadt-), [`P_FNAME`](#decl-zcoc2020top-126-p_fname), [`GT_DATA`](#decl-zcoc2020top-60-gt_data) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L316-L334` · confidence 0.8 · `ZCOC2020#ZCOC2020F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC2020F01` L562-L608 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 568| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 569| EXPORTING + 570| I_STRUCTURE_NAME = LV_STRNM + 571| I_BYPASSING_BUFFER = 'X' + 572| CHANGING + 573| CT_FIELDCAT = GT_UPLD_FCAT + 574| EXCEPTIONS + 575| INCONSISTENT_INTERFACE = 1 + 576| PROGRAM_ERROR = 2 + 577| OTHERS = 3. + 578| + 579| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 580| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 581| + 582| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 583| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 584| ENDIF. + 585| + 586| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 587| GS_UPLD_FCAT-INTLEN = '10'. + 588| ENDIF. + 589| + 590| " 올린 그대로 받기 위해 CHAR로 변환. + 591| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 592| GS_UPLD_FCAT-INTTYPE = 'C'. + 593| + 594| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 595| ENDLOOP. + 596| + 597| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 598| EXPORTING + 599| IT_FIELDCATALOG = LT_UPLD_FCAT + 600| IMPORTING + 601| EP_TABLE = GF_UPLOADT. + 602| + 603| ASSIGN GF_UPLOADT->* TO . + 604| + 605| CREATE DATA GF_UPLOADS LIKE LINE OF . + 606| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc2020f01-563-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc2020top-54-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2020top-55-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc2020f01-564-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc2020top-51-gf_uploadt), [``](#decl-zcoc2020top-48--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc2020top-52-gf_uploads), [``](#decl-zcoc2020top-49--gf_uploads-) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L568-L606` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC2020F01` L112-L203 (92줄) + +*동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 74/92줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 필드카탈로그의 도메인별 소문자 허용 여부(LOWERCASE)를 DD01L에서 조회해 정렬·중복 제거한다. + +```abap + 128| SELECT DOMNAME LOWERCASE + 129| INTO TABLE LT_LOWERCASE + 130| FROM DD01L + 131| FOR ALL ENTRIES IN GT_UPLD_FCAT + 132| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 133| AND AS4LOCAL = 'A'. + 134| + 135| SORT LT_LOWERCASE. + 136| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE + 137| COMPARING ALL FIELDS. +``` + +- **EN**: Select the LOWERCASE flag per domain from DD01L for the upload field catalog. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L +- 업무 키워드: 도메인 소문자 허용, 데이터 딕셔너리 +- English: Domain, DD01L, Lower Case +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc2020f01-113-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc2020top-54-gt_upld_fcat) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L128-L137` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 업로드 행의 각 컬럼을 COL_POS로 ASSIGN해 소문자 비허용 도메인은 대문자화하고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자(BDC_CURR)·날짜(BDC_DATE) 형식을 정리한 뒤 GS_DATA 필드로 옮기고(타입 변환 예외 시 오류 종료) 상태 INIT로 GT_DATA에 추가한다. + +```abap + 139| LOOP AT INTO . + 140| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 141| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 142| TO . + 143| + 144| IF SY-SUBRC NE 0. + 145| MESSAGE S000 WITH 'Field assign Fail.'. + 146| LEAVE LIST-PROCESSING. + 147| ENDIF. + 148| + 149| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 150| BINARY SEARCH. + 151| + 152| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 153| TRANSLATE TO UPPER CASE. + 154| ENDIF. + 155| + 156| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 157| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 158| INTO LV_CONVFUNC. + 159| + 160| CALL FUNCTION LV_CONVFUNC + 161| EXPORTING + 162| INPUT = + 163| IMPORTING + 164| OUTPUT = + 165| EXCEPTIONS + 166| OTHERS = 1. + 167| ENDIF. + 168| + 169| CASE GS_UPLD_FCAT-DATATYPE. + 170| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 171| 'DEC' OR 'CURR'. + 172| PERFORM BDC_CURR USING . + 173| WHEN 'DATS'. + 174| PERFORM BDC_DATE USING . + 175| ENDCASE. + 176| + 177| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 178| TO . + 179| + 180| IF SY-SUBRC NE 0. + 181| MESSAGE S000 WITH 'Field assign Fail.'. + 182| LEAVE LIST-PROCESSING. + 183| ENDIF. + 184| + 185| TRY . + 186| = . + 187| + 188| CATCH CX_ROOT INTO LF_OREF. + 189| LV_TEXT = LF_OREF->GET_TEXT( ). + 190| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 191| 'Type conversion error :' LV_TEXT. + 192| LEAVE LIST-PROCESSING. + 193| ENDTRY. + 194| ENDLOOP. + 195| + 196| GS_DATA-STATUS = GC_STATUS_INIT. + 197| + 198| APPEND GS_DATA TO GT_DATA. + 199| CLEAR GS_DATA. + 200| CLEAR : LT_LOWERCASE. + 201| + 202| ENDLOOP. +``` + +- **EN**: For each uploaded row and catalog field: upper-case, apply CONVERSION_EXIT_*_INPUT dynamically, normalize numeric/date values, move into GS_DATA with type-conversion error handling, and append to GT_DATA with initial status. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: DD01L, CX_ROOT +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 대문자 변환, 숫자 날짜 형식, 타입 변환 오류 +- English: Conversion Exit, Dynamic Field Assignment, Excel Upload, Type Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc2020top-48--gf_uploadt-), [``](#decl-zcoc2020top-49--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc2020top-54-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2020top-55-gs_upld_fcat), [``](#decl-zcoc2020f01-118--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc2020f01-113-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc2020f01-120-lv_convfunc), [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`GS_DATA`](#decl-zcoc2020top-74-gs_data), [``](#decl-zcoc2020f01-119--fs_data_field-), [`LF_OREF`](#decl-zcoc2020f01-121-lf_oref), [`LV_TEXT`](#decl-zcoc2020f01-122-lv_text) 외 1건 +- 위치: `abap://ZCOC2020/ZCOC2020F01#L139-L202` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC2020F01` L213-L279 (67줄) + +*업로드 행의 구분값('금액'/'수량'), 품목(중) 코드 입력 여부, T2505 존재 여부, 품목+구분 중복을 검증하여 오류 행을 빨간색으로 표시한다.* + +> 이 unit 의 조각 2개가 51/67줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 행별로 GUBUN 첫 글자가 금/수인지, WW220(품목(중) 코드)이 입력되었는지, GT_T2505 마스터에 존재하는지 검사해 오류 시 메시지·빨간 상태·필드 강조·GV_UPLOAD_ERROR를 설정한다. + +```abap + 219| LOOP AT GT_DATA. + 220| + 221| IF NOT ( GT_DATA-GUBUN(1) = GC_GUBUN1 OR GT_DATA-GUBUN(1) = GC_GUBUN2 ). + 222| GT_DATA-MESSAGE = '구분값은 ''금액''과 ''수량'' 텍스트만 넣어주십시오.'(F04). + 223| GT_DATA-STATUS = GC_STATUS_RED. + 224| GV_UPLOAD_ERROR = 'X'. + 225| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. + 226| PERFORM ADD_DATA_MESSAGE USING 'E' + 227| GT_DATA-GUBUN + 228| GT_DATA-MESSAGE. + 229| ENDIF. + 230| + 231| IF GT_DATA-WW220 IS INITIAL. + 232| GT_DATA-MESSAGE = '품목(중) 코드가 입력되지 않았습니다.'(F05). + 233| GT_DATA-STATUS = GC_STATUS_RED. + 234| GV_UPLOAD_ERROR = 'X'. + 235| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 236| PERFORM ADD_DATA_MESSAGE USING 'E' + 237| GT_DATA-WW220 + 238| GT_DATA-MESSAGE. + 239| ENDIF. + 240| + 241| READ TABLE GT_T2505 WITH KEY WW220 = GT_DATA-WW220 + 242| BINARY SEARCH. + 243| + 244| IF SY-SUBRC NE 0. + 245| GT_DATA-MESSAGE = '품목(중) 코드가 존재하지 않습니다.'(F06). + 246| GT_DATA-STATUS = GC_STATUS_RED. + 247| GV_UPLOAD_ERROR = 'X'. + 248| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 249| PERFORM ADD_DATA_MESSAGE USING 'E' + 250| GT_DATA-WW220 + 251| GT_DATA-MESSAGE. + 252| ENDIF. +``` + +- **EN**: Validate the amount/quantity type text, mandatory item group code WW220 and its existence in GT_T2505; mark errors with message, red status and field highlight. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: T2505 +- 업무 키워드: 구분값 검증, 품목(중) 코드 필수, 품목 존재 여부, 업로드 오류 +- English: Validation, Item group, Master check, Upload error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`GC_GUBUN1`](#decl-zcoc2020top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2020top-36-gc_gubun2), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2020top-22-gv_upload_error), [`GT_T2505`](#decl-zcoc2020top-102-gt_t2505) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L219-L252` · confidence 0.95 · `ZCOC2020#ZCOC2020F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] 복사본 LT_CHECK에서 동일 품목(중)(WW220)+구분 조합이 2건 이상이면 '중복 품목(중) 데이터' 오류로 표시한다. + +```abap + 255| LOOP AT LT_CHECK WHERE WW220 = GT_DATA-WW220 + 256| AND GUBUN(1) = GT_DATA-GUBUN(1). + 257| ADD 1 TO LV_CNT. + 258| IF LV_CNT = 2. + 259| EXIT. + 260| ENDIF. + 261| ENDLOOP. + 262| + 263| IF LV_CNT = 2. + 264| GT_DATA-MESSAGE = '중복 품목(중) 데이터가 업로드되었습니다.'(F07). + 265| GT_DATA-STATUS = GC_STATUS_RED. + 266| GV_UPLOAD_ERROR = 'X'. + 267| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 268| PERFORM ADD_DATA_MESSAGE USING 'E' + 269| GT_DATA-WW220 + 270| GT_DATA-MESSAGE. + 271| ENDIF. +``` + +- **EN**: Detect duplicate item group + type combinations in LT_CHECK and flag the row as duplicate upload error. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 중복 검증, 품목+구분 중복, 업로드 오류 +- English: Duplicate check, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`LT_CHECK`](#decl-zcoc2020f01-214-lt_check), [`LV_CNT`](#decl-zcoc2020f01-215-lv_cnt), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2020top-22-gv_upload_error) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L255-L271` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#VALIDATION_CHECK#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC2020F01` L453-L479 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 460| IF P_VALUE IS NOT INITIAL. + 461| CONCATENATE P_VALUE ` : ` P_MESSAGE + 462| INTO LV_MESSAGE. + 463| ELSE. + 464| LV_MESSAGE = P_MESSAGE. + 465| ENDIF. + 466| + 467| IF P_STATUS = 'S'. + 468| LV_STATUS = GC_STATUS_GREEN. + 469| ELSEIF P_STATUS = 'E'. + 470| LV_STATUS = GC_STATUS_RED. + 471| ELSEIF P_STATUS = 'W'. + 472| LV_STATUS = GC_STATUS_YELLOW. + 473| ENDIF. + 474| GS_MSG_T_S-STATUS = LV_STATUS. + 475| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 476| + 477| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc2020f01-455-lv_message), [`LV_STATUS`](#decl-zcoc2020f01-456-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc2020top-84-gs_msg_t_s), [`GT_DATA`](#decl-zcoc2020top-60-gt_data) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L460-L477` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC2020F01` L488-L554 (67줄) + +*구분('금액'/'수량')별로 월 합계를 GT_SUM_VV100/GT_SUM_VVQ01에 COLLECT하고 품목(중)명을 보강한 뒤 행별 연간 합계와 구분별 총합을 계산한다.* + +> 이 unit 의 조각 2개가 51/67줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 통화·단위를 세팅하고 GUBUN 첫 글자에 따라 금액 행은 GT_SUM_VV100, 수량 행은 GT_SUM_VVQ01에 품목 제외 월 합계를 COLLECT하며 GT_ZCOT0110에서 품목(중)명(WW220_TEXT)을 채운다. + +```abap + 501| LOOP AT GT_DATA. + 502| GT_DATA-REC_WAERS = GV_WAERS. + 503| GT_DATA-MEINS = GC_MEINS. + 504| + 505| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 506| MOVE-CORRESPONDING GT_DATA TO GT_SUM_VV100. + 507| CLEAR : GT_SUM_VV100-WW220. + 508| CLEAR : GT_SUM_VV100-REC_WAERS. + 509| COLLECT GT_SUM_VV100. + 510| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 511| MOVE-CORRESPONDING GT_DATA TO GT_SUM_VVQ01. + 512| CLEAR : GT_SUM_VVQ01-WW220. + 513| CLEAR : GT_SUM_VVQ01-MEINS. + 514| COLLECT GT_SUM_VVQ01. + 515| ENDIF. + 516| + 517| READ TABLE GT_ZCOT0110 WITH KEY WW220 = GT_DATA-WW220 + 518| BINARY SEARCH. + 519| + 520| IF SY-SUBRC EQ 0. + 521| GT_DATA-WW220_TEXT = GT_ZCOT0110-WW220_TEXT. + 522| ENDIF. + 523| MODIFY GT_DATA. + 524| CLEAR : GT_DATA, GT_ZCOT0110, GT_SUM_VV100, GT_SUM_VVQ01. + 525| ENDLOOP. +``` + +- **EN**: Set currency/unit, COLLECT monthly totals for amount rows into GT_SUM_VV100 and quantity rows into GT_SUM_VVQ01, and enrich item group text from GT_ZCOT0110. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0110, ZCOT0180, ZCOT0190 +- 업무 키워드: 매출액, 매출수량, 월 합계, 품목(중)명, 구분 +- English: COLLECT, Sales amount, Sales quantity, Item group text +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcoc2020top-37-gc_meins), [`GC_GUBUN1`](#decl-zcoc2020top-35-gc_gubun1), [`GT_SUM_VV100`](#decl-zcoc2020top-87-gt_sum_vv100), [`GC_GUBUN2`](#decl-zcoc2020top-36-gc_gubun2), [`GT_SUM_VVQ01`](#decl-zcoc2020top-88-gt_sum_vvq01), [`GT_ZCOT0110`](#decl-zcoc2020top-105-gt_zcot0110) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L501-L525` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#EDIT_DATA#C1` + +#### [calculation] 행별 MONTH01~12를 합산해 소수 0자리 문자열로 재기록하고 GT_DATA-SUM(연간 합계)을 만들며 금액/수량 총합(GV_VV110_SUM, GV_VVQ01_SUM)에 누적한다. + +```abap + 527| LOOP AT GT_DATA. + 528| CLEAR : LV_SUM. + 529| DO 12 TIMES. + 530| LV_NC = SY-INDEX. + 531| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD. + 532| ASSIGN (LV_FIELD) TO . + 533| + 534| IF SY-SUBRC EQ 0. + 535| LV_FIELD_VALUE = . + 536| WRITE LV_FIELD_VALUE TO LEFT-JUSTIFIED + 537| NO-GAP DECIMALS 0. + 538| LV_SUM = LV_SUM + LV_FIELD_VALUE. + 539| ENDIF. + 540| ENDDO. + 541| + 542| WRITE LV_SUM TO GT_DATA-SUM LEFT-JUSTIFIED + 543| NO-GAP DECIMALS 0. + 544| + 545| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 546| GV_VV110_SUM = GV_VV110_SUM + LV_SUM. + 547| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2.. + 548| GV_VVQ01_SUM = GV_VVQ01_SUM + LV_SUM. + 549| ENDIF. + 550| + 551| MODIFY GT_DATA. CLEAR : GT_DATA. + 552| ENDLOOP. +``` + +- **EN**: Sum MONTH01..12 per row, rewrite the cells with zero decimals, set GT_DATA-SUM and accumulate amount/quantity grand totals. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 연간 합계, 구분별 총합, 월별 합산 +- English: Annual total, Grand total, Dynamic field +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`LV_SUM`](#decl-zcoc2020f01-492-lv_sum), [`LV_NC`](#decl-zcoc2020f01-490-lv_nc), [`LV_FIELD`](#decl-zcoc2020f01-489-lv_field), [``](#decl-zcoc2020f01-491--fs_value-), [`LV_FIELD_VALUE`](#decl-zcoc2020f01-493-lv_field_value), [`GC_GUBUN1`](#decl-zcoc2020top-35-gc_gubun1), [`GV_VV110_SUM`](#decl-zcoc2020top-107-gv_vv110_sum), [`GC_GUBUN2`](#decl-zcoc2020top-36-gc_gubun2), [`GV_VVQ01_SUM`](#decl-zcoc2020top-108-gv_vvq01_sum) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L527-L552` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#EDIT_DATA#C2` + +### EVENT END-OF-SELECTION — `ZCOC2020` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data) +- 위치: `abap://ZCOC2020/ZCOC2020#L57-L67` · confidence 0.85 · `ZCOC2020#ZCOC2020#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC2020/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC2020/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC2020/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC2020/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2020top-126-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC2020/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC2020#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC2020#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs) +- 위치: `abap://ZCOC2020/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC2020#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC2020F01` L389-L444 (56줄) + +*ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 행 번호로 GT_DATA를 읽고 GT_LOG_POP 필드카탈로그의 컬럼명(상태/메시지)을 설정한 뒤 MSG_LIST를 LT_POPUP으로 옮겨 팝업 ALV(W_POPUP_GRID->SHOW_DATA)로 오류 로그를 표시한다. + +```abap + 401| CHECK P_ROW CO '0123456789 '. + 402| + 403| READ TABLE GT_DATA INDEX P_ROW. + 404| + 405| CHECK SY-SUBRC EQ 0. + 406| + 407| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 408| USING 'GT_LOG_POP'. + 409| + 410| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. + 411| + 412| CASE LS_FIELDCAT-FIELDNAME. + 413| WHEN 'STATUS'. + 414| LS_FIELDCAT-COLTEXT = '상태'(F10). + 415| WHEN 'MESSAGE'. + 416| LS_FIELDCAT-COLTEXT = '메시지'(F11). + 417| ENDCASE. + 418| + 419| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. + 420| ENDLOOP. + 421| + 422| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 423| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 424| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 425| APPEND LT_POPUP. + 426| CLEAR : LT_POPUP. + 427| ENDLOOP. + 428| + 429| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 430| + 431| CREATE OBJECT W_POPUP_GRID + 432| EXPORTING + 433| I_T_FIELDCATALOG = POPUP_FIELDCAT + 434| I_S_LAYOUT = LS_LAYO + 435| I_CAPTION = '' + 436| I_LEFT = 100 + 437| I_TOP = 150 + 438| I_HEIGHT = 400 + 439| I_WIDTH = 900. + 440| + 441| CALL METHOD W_POPUP_GRID->SHOW_DATA + 442| EXPORTING + 443| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Read the selected GT_DATA row, build a popup field catalog for GT_LOG_POP and show its MSG_LIST entries in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): GET_FCAT_LIKE_ITAB, SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, ALV 팝업 +- English: Error Log, Popup ALV, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc2020f01-390-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2020f01-393-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc2020top-84-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc2020top-76-gt_log_pop), [`LT_POPUP`](#decl-zcoc2020f01-392-lt_popup), [`LS_LAYO`](#decl-zcoc2020f01-391-ls_layo), [`W_POPUP_GRID`](#decl-zcoc2020top-82-w_popup_grid) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L401-L443` · confidence 0.8 · `ZCOC2020#ZCOC2020F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC2020F01` L286-L304 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 289| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 290| + 291| IF L_EXISTS = ABAP_FALSE. + 292| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 293| LEAVE LIST-PROCESSING. + 294| EXIT. + 295| ENDIF. + 296| + 297| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 298| 'GS_UPLOAD' + 299| P_NAME + 300| 1 "S_COL-LOW + 301| 2 "S_ROW-LOW + 302| 256 "S_COL-HIGH + 303| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc2020f01-287-l_exists) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L289-L303` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM EXECUTE_SAVE — `ZCOC2020F01` L357-L381 (25줄) + +*중복 저장을 막고 사용자 확인 팝업 후 PERFORM_SAVE로 지점별 매출 계획을 저장한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 저장된 경우(GV_ALREADY_POST) 오류 후 종료하고, POPUP_TO_CONFIRM_02로 매출 계획 입력 확인(J) 시 재저장 방지 플래그를 세운 뒤 PERFORM_SAVE를 수행한다. + +```abap + 362| IF GV_ALREADY_POST = 'X'. + 363| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 저장하였습니다.'(F08). + 364| EXIT. + 365| ENDIF. + 366| + 367| IF GV_UPLOAD_ERROR = 'X'. + 368| * PERFORM PGM_MSG USING 'F11' 'E'. + 369| ENDIF. + 370| + 371| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 372| '매출 계획을 입력하시겠습니까?'(F09) '' + 373| CHANGING L_ANSWER. + 374| IF L_ANSWER <> 'J'. + 375| EXIT. + 376| ENDIF. + 377| + 378| GV_ALREADY_POST = 'X'. + 379| PERFORM PERFORM_SAVE. +``` + +- **EN**: Prevent duplicate saving, confirm with POPUP_TO_CONFIRM_02, then run PERFORM_SAVE to store the sales plan. +- 호출(파서): POPUP_TO_CONFIRM_02, PERFORM_SAVE +- SAP 객체: POPUP_TO_CONFIRM_02 +- 업무 키워드: 중복 저장 방지, 확인 팝업, 매출 계획 저장 +- English: Confirmation Popup, Duplicate Check, Save +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc2020top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc2020top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc2020f01-358-l_answer) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L362-L379` · confidence 0.85 · `ZCOC2020#ZCOC2020F01#FORM#EXECUTE_SAVE#C1` + +### FORM PERFORM_SAVE — `ZCOC2020F01` L685-L769 (85줄) + +*GT_DATA의 월별 값을 구분(금액/수량)에 따라 ZCOT0180(매출액, COST_GUBUN '40', 천원→원 환산)과 ZCOT0190(매출수량, COST_GUBUN '60')으로 구성한 뒤 기존 데이터를 삭제하고 저장한다.* + +> 이 unit 의 조각 2개가 67/85줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 행별 MONTH01~12를 동적 ASSIGN으로 옮기며 '금액' 행은 BDC_CURR 정리·CONVERT_1000_U 천원 환산·CONV_DB_WAERS 후 LT_ZCOT0180(COST_GUBUN '40', 통화)에, '수량' 행은 LT_ZCOT0190(COST_GUBUN '60', 단위 GC_MEINS)에 품목(중) WW220 키로 적재한다. + +```abap + 699| LOOP AT GT_DATA. + 700| DO 12 TIMES. + 701| LV_NC = SY-INDEX. + 702| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD1. + 703| ASSIGN (LV_FIELD1) TO . + 704| IF SY-SUBRC EQ 0. + 705| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 706| CONCATENATE 'LT_ZCOT0180-MONTH' LV_NC INTO LV_FIELD2. + 707| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 708| CONCATENATE 'LT_ZCOT0190-MONTH' LV_NC INTO LV_FIELD2. + 709| ENDIF. + 710| + 711| ASSIGN (LV_FIELD2) TO . + 712| IF SY-SUBRC EQ 0. + 713| PERFORM BDC_CURR USING . + 714| = . + 715| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 716| PERFORM CONVERT_1000_U USING . + 717| PERFORM CONV_DB_WAERS USING GV_WAERS. + 718| ENDIF. + 719| ENDIF. + 720| ENDIF. + 721| ENDDO. + 722| + 723| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 724| LT_ZCOT0180-KOKRS = P_KOKRS. + 725| LT_ZCOT0180-REC_WAERS = GV_WAERS. + 726| LT_ZCOT0180-WW220 = GT_DATA-WW220. + 727| LT_ZCOT0180-GJAHR = P_GJAHR. + 728| LT_ZCOT0180-COST_GUBUN = '40'. + 729| APPEND LT_ZCOT0180. + 730| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 731| LT_ZCOT0190-KOKRS = P_KOKRS. + 732| LT_ZCOT0190-MEINS = GC_MEINS. + 733| LT_ZCOT0190-WW220 = GT_DATA-WW220. + 734| LT_ZCOT0190-GJAHR = P_GJAHR. + 735| LT_ZCOT0190-COST_GUBUN = '60'. + 736| APPEND LT_ZCOT0190. + 737| ENDIF. + 738| CLEAR : LT_ZCOT0180, LT_ZCOT0190. + 739| ENDLOOP. +``` + +- **EN**: Move the 12 monthly values per row: amount rows scaled by 1000 and currency-converted into LT_ZCOT0180 (COST_GUBUN 40), quantity rows into LT_ZCOT0190 (COST_GUBUN 60) keyed by item group WW220. +- 호출(파서): BDC_CURR, CONVERT_1000_U, CONV_DB_WAERS +- SAP 객체: ZCOT0180, ZCOT0190 +- 업무 키워드: 매출액 계획, 매출수량 계획, 천원 단위 환산, 품목(중), 월별 값 +- English: Sales plan amount, Sales plan quantity, Amount scaling, Item group +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`LV_NC`](#decl-zcoc2020f01-688-lv_nc), [`LV_FIELD1`](#decl-zcoc2020f01-686-lv_field1), [``](#decl-zcoc2020f01-690--fs_value1-), [`GC_GUBUN1`](#decl-zcoc2020top-35-gc_gubun1), [`LV_FIELD2`](#decl-zcoc2020f01-687-lv_field2), [`GC_GUBUN2`](#decl-zcoc2020top-36-gc_gubun2), [``](#decl-zcoc2020f01-691--fs_value2-), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LT_ZCOT0180`](#decl-zcoc2020f01-692-lt_zcot0180), [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs), [`P_GJAHR`](#decl-zcoc2020top-123-p_gjahr) 외 2건 +- 위치: `abap://ZCOC2020/ZCOC2020F01#L699-L739` · confidence 0.9 · `ZCOC2020#ZCOC2020F01#FORM#PERFORM_SAVE#C1` + +#### [db_write] 관리회계영역·회계연도의 기존 ZCOT0180/ZCOT0190 계획을 각각 DELETE 후 MODIFY로 저장하고 두 결과가 모두 성공이면 녹색, 아니면 빨간 상태와 메시지를 GT_DATA 전 행에 반영한다. + +```abap + 741| IF LT_ZCOT0180[] IS NOT INITIAL. + 742| DELETE FROM ZCOT0180 WHERE KOKRS = P_KOKRS + 743| AND GJAHR = P_GJAHR. + 744| MODIFY ZCOT0180 FROM TABLE LT_ZCOT0180. + 745| LV_SUBRC1 = SY-SUBRC. + 746| ENDIF. + 747| + 748| IF LT_ZCOT0190[] IS NOT INITIAL. + 749| DELETE FROM ZCOT0190 WHERE KOKRS = P_KOKRS + 750| AND GJAHR = P_GJAHR. + 751| MODIFY ZCOT0190 FROM TABLE LT_ZCOT0190. + 752| LV_SUBRC2 = SY-SUBRC. + 753| ENDIF. + 754| + 755| IF LV_SUBRC1 EQ 0 AND LV_SUBRC2 EQ 0. + 756| MESSAGE S000 WITH '정상적으로 반영되었습니다.'(F12). + 757| LS_DATA-STATUS = GC_STATUS_GREEN. + 758| LS_DATA-MESSAGE = '정상적으로 반영되었습니다'(F12). + 759| ELSE. + 760| MESSAGE S000 WITH '저장 중 오류가 발생하였습니다.'(F13). + 761| LS_DATA-STATUS = GC_STATUS_RED. + 762| LS_DATA-MESSAGE = '저장 중 오류가 발생하였습니다'(F13). + 763| ENDIF. + 764| + 765| MODIFY GT_DATA FROM LS_DATA TRANSPORTING STATUS MESSAGE + 766| WHERE WW220 IS NOT INITIAL . +``` + +- **EN**: Delete and MODIFY ZCOT0180 (amount) and ZCOT0190 (quantity) plan rows for the controlling area and fiscal year and set the result status/message on all GT_DATA rows. +- 테이블(파서): read - / write [ZCOT0180](/tables/ZCOT0180.md), [ZCOT0190](/tables/ZCOT0190.md), [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0180, ZCOT0190 +- 업무 키워드: 계획 저장, 기존 데이터 삭제, 저장 결과 +- English: DELETE, MODIFY table, Sales plan save +- 정의부(복사 시 함께 필요): [`LT_ZCOT0180`](#decl-zcoc2020f01-692-lt_zcot0180), [`P_KOKRS`](#decl-zcoc2020top-117-p_kokrs), [`P_GJAHR`](#decl-zcoc2020top-123-p_gjahr), [`LV_SUBRC1`](#decl-zcoc2020f01-696-lv_subrc1), [`LT_ZCOT0190`](#decl-zcoc2020f01-693-lt_zcot0190), [`LV_SUBRC2`](#decl-zcoc2020f01-697-lv_subrc2), [`GT_DATA`](#decl-zcoc2020top-60-gt_data), [`LS_DATA`](#decl-zcoc2020f01-694-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC2020/ZCOC2020F01#L741-L766` · confidence 0.95 · `ZCOC2020#ZCOC2020F01#FORM#PERFORM_SAVE#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC2020I01` L6-L30 (25줄) + +*화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드가 BACK/CANC/EXIT이면 ALV 컨테이너를 해제하고 화면을 종료하며, &SAVE이면 EXECUTE_SAVE로 지점별 매출 계획을 ZCOT0160/ZCOT0170에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&SAVE'. + 24| PERFORM EXECUTE_SAVE. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 0100 function codes: free ALV containers and leave on BACK/EXIT, run EXECUTE_SAVE to store the sales plan on &SAVE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_SAVE +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 사용자 명령, 매출 계획 저장, 화면 종료 +- English: User Command, PAI, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc2020top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc2020c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC2020/ZCOC2020I01#L9-L28` · confidence 0.85 · `ZCOC2020#ZCOC2020I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (342건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC2020C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc2020c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC2020TOP` (52건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc2020top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc2020top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc2020top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc2020top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc2020top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc2020top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc2020top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc2020top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc2020top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc2020top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc2020top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc2020top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc2020top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc2020top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc2020top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc2020top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0270'. +``` + +#### GC_SMW0 — constants · L32-L32 {#decl-zcoc2020top-32-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC2020'. +``` + +#### GC_GUBUN1 — constants · L35-L35 {#decl-zcoc2020top-35-gc_gubun1} + +```abap +CONSTANTS : GC_GUBUN1(1) TYPE C VALUE '금'. "금액 +``` + +#### GC_GUBUN2 — constants · L36-L36 {#decl-zcoc2020top-36-gc_gubun2} + +```abap +CONSTANTS : GC_GUBUN2(1) TYPE C VALUE '수'. "수량 +``` + +#### GC_MEINS — constants · L37-L37 {#decl-zcoc2020top-37-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE COSP-MEINH VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L43-L43 {#decl-zcoc2020top-43-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L48-L48 {#decl-zcoc2020top-48--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L49-L49 {#decl-zcoc2020top-49--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L51-L51 {#decl-zcoc2020top-51-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L52-L52 {#decl-zcoc2020top-52-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L54-L54 {#decl-zcoc2020top-54-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L55-L55 {#decl-zcoc2020top-55-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L60-L72 {#decl-zcoc2020top-60-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0270. + +DATA : +WW220_TEXT LIKE ZCOT0110-WW220_TEXT, +SUM(16) TYPE C, + +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L74-L74 {#decl-zcoc2020top-74-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L76-L79 {#decl-zcoc2020top-76-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L82-L82 {#decl-zcoc2020top-82-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L84-L84 {#decl-zcoc2020top-84-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L86-L86 {#decl-zcoc2020top-86-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE T001-BUKRS. +``` + +#### GT_SUM_VV100 — data · L87-L87 {#decl-zcoc2020top-87-gt_sum_vv100} + +```abap +DATA : GT_SUM_VV100 LIKE ZCOT0180 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_VVQ01 — data · L88-L88 {#decl-zcoc2020top-88-gt_sum_vvq01} + +```abap +DATA : GT_SUM_VVQ01 LIKE ZCOT0190 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L91-L91 {#decl-zcoc2020top-91-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L92-L92 {#decl-zcoc2020top-92-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L95-L95 {#decl-zcoc2020top-95-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L96-L96 {#decl-zcoc2020top-96-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L97-L97 {#decl-zcoc2020top-97-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L98-L98 {#decl-zcoc2020top-98-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L100-L100 {#decl-zcoc2020top-100-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L101-L101 {#decl-zcoc2020top-101-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L102-L102 {#decl-zcoc2020top-102-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L103-L103 {#decl-zcoc2020top-103-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L104-L104 {#decl-zcoc2020top-104-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L105-L105 {#decl-zcoc2020top-105-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GV_VV110_SUM — data · L107-L107 {#decl-zcoc2020top-107-gv_vv110_sum} + +```abap +DATA : GV_VV110_SUM LIKE ZCOT0160-MONTH12. +``` + +#### GV_VVQ01_SUM — data · L108-L108 {#decl-zcoc2020top-108-gv_vvq01_sum} + +```abap +DATA : GV_VVQ01_SUM LIKE ZCOT0170-MONTH12. +``` + +#### P_KOKRS — parameter · L117-L118 {#decl-zcoc2020top-117-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L123-L124 {#decl-zcoc2020top-123-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### P_FNAME — parameter · L126-L127 {#decl-zcoc2020top-126-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC2020_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC2020F01` (34건) + +#### L_UCOMM — data · unit 로컬 · L35-L35 {#decl-zcoc2020f01-35-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L113-L116 {#decl-zcoc2020f01-113-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L118-L118 {#decl-zcoc2020f01-118--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L119-L119 {#decl-zcoc2020f01-119--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L120-L120 {#decl-zcoc2020f01-120-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L121-L121 {#decl-zcoc2020f01-121-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L122-L122 {#decl-zcoc2020f01-122-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_CHECK — data · unit 로컬 · L214-L214 {#decl-zcoc2020f01-214-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L215-L215 {#decl-zcoc2020f01-215-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L287-L287 {#decl-zcoc2020f01-287-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### L_ANSWER — data · unit 로컬 · L358-L358 {#decl-zcoc2020f01-358-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L390-L390 {#decl-zcoc2020f01-390-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L391-L391 {#decl-zcoc2020f01-391-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L392-L392 {#decl-zcoc2020f01-392-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L393-L393 {#decl-zcoc2020f01-393-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_MESSAGE — data · unit 로컬 · L455-L455 {#decl-zcoc2020f01-455-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L456-L456 {#decl-zcoc2020f01-456-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_FIELD — data · unit 로컬 · L489-L489 {#decl-zcoc2020f01-489-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L490-L490 {#decl-zcoc2020f01-490-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L491-L491 {#decl-zcoc2020f01-491--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_SUM — data · unit 로컬 · L492-L492 {#decl-zcoc2020f01-492-lv_sum} + +```abap + DATA : LV_SUM LIKE ZCOT0160-MONTH01. +``` + +#### LV_FIELD_VALUE — data · unit 로컬 · L493-L493 {#decl-zcoc2020f01-493-lv_field_value} + +```abap + DATA : LV_FIELD_VALUE LIKE ZCOT0160-MONTH01. +``` + +#### LV_STRNM — data · unit 로컬 · L563-L563 {#decl-zcoc2020f01-563-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L564-L564 {#decl-zcoc2020f01-564-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +#### LV_FIELD1 — data · unit 로컬 · L686-L686 {#decl-zcoc2020f01-686-lv_field1} + +```abap + DATA : LV_FIELD1(30) TYPE C. +``` + +#### LV_FIELD2 — data · unit 로컬 · L687-L687 {#decl-zcoc2020f01-687-lv_field2} + +```abap + DATA : LV_FIELD2(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L688-L688 {#decl-zcoc2020f01-688-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L690-L690 {#decl-zcoc2020f01-690--fs_value1-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L691-L691 {#decl-zcoc2020f01-691--fs_value2-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LT_ZCOT0180 — data · unit 로컬 · L692-L692 {#decl-zcoc2020f01-692-lt_zcot0180} + +```abap + DATA : LT_ZCOT0180 LIKE ZCOT0180 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOT0190 — data · unit 로컬 · L693-L693 {#decl-zcoc2020f01-693-lt_zcot0190} + +```abap + DATA : LT_ZCOT0190 LIKE ZCOT0190 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_DATA — data · unit 로컬 · L694-L694 {#decl-zcoc2020f01-694-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### LV_SUBRC1 — data · unit 로컬 · L696-L696 {#decl-zcoc2020f01-696-lv_subrc1} + +```abap + DATA : LV_SUBRC1 LIKE SY-DATUM. +``` + +#### LV_SUBRC2 — data · unit 로컬 · L697-L697 {#decl-zcoc2020f01-697-lv_subrc2} + +```abap + DATA : LV_SUBRC2 LIKE SY-DATUM. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC2020 L26-32 | 0 | 프로그램 초기화 시 화면 기본값 설정(SET_DYNP)과 FC01 버튼 활성화를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC2020 L33-35 | 0 | 선택화면 PAI에서 기능키 처리를 위해 CONTROL_FCXX를 호출한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC2020 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 조정한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC2020 L42-47 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC2020 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC2020 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC2020C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC2020C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC2020C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC2020C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC2020C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC2020C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC2020C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC2020C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC2020C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC2020C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC2020C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC2020C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC2020C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC2020C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC2020C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC2020C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC2020C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC2020C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC2020C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC2020C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC2020C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC2020C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC2020C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC2020C01 L631-690 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC2020C01 L700-710 | 0 | | +| HANDLE_TOP_OF_PAGE | FORM | ZCOC2020C01 L719-724 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC2020F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 만드는 화면 속성 설정이다. | +| SET_DYNP | FORM | ZCOC2020F01 L22-25 | 0 | 화면 초기화 시 관리회계영역 기본값과 텍스트(P_BEZEI)를 설정한다. | +| CONTROL_FCXX | FORM | ZCOC2020F01 L34-45 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다. | +| CHECK_INPUT | FORM | ZCOC2020F01 L54-61 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC2020F01 L67-82 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC2020F01 L88-91 | 0 | 마스터 적재(SET_CHARACTER_MASTER)와 엑셀 데이터 읽기(READ_DATA)를 호출하는 단순 래퍼이다. | +| FC01_ACTIVE | FORM | ZCOC2020F01 L100-103 | 0 | 선택화면 기능키 버튼 FC01을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC2020F01 L112-203 | 2 | 동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC2020F01 L213-279 | 2 | 업로드 행의 구분값('금액'/'수량'), 품목(중) 코드 입력 여부, T2505 존재 여부, 품목+구분 중복을 검증하여 오류 행을 빨간색으로 표시한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC2020F01 L286-304 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC2020F01 L313-335 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC2020F01 L343-351 | 0 | 오류 필드를 ALV 셀 색상(빨강, COL 6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EXECUTE_SAVE | FORM | ZCOC2020F01 L357-381 | 1 | 중복 저장을 막고 사용자 확인 팝업 후 PERFORM_SAVE로 지점별 매출 계획을 저장한다. | +| SHOW_ERROR_LOG | FORM | ZCOC2020F01 L389-444 | 1 | ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC2020F01 L453-479 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC2020F01 L488-554 | 2 | 구분('금액'/'수량')별로 월 합계를 GT_SUM_VV100/GT_SUM_VVQ01에 COLLECT하고 품목(중)명을 보강한 뒤 행별 연간 합계와 구분별 총합을 계산한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC2020F01 L562-608 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| SET_CHARACTER_MASTER | FORM | ZCOC2020F01 L617-676 | 3 | 판매조직·품목 마스터(T2500~T2508), 하이마트 CO 특성 마스터(ZCOT0080/0090/0110, 품목(중) WW220 기준 중복 제거), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다. | +| PERFORM_SAVE | FORM | ZCOC2020F01 L685-769 | 2 | GT_DATA의 월별 값을 구분(금액/수량)에 따라 ZCOT0180(매출액, COST_GUBUN '40', 천원→원 환산)과 ZCOT0190(매출수량, COST_GUBUN '60')으로 구성한 뒤 기존 데이터를 삭제하고 저장한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC2020I01 L6-30 | 1 | 화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC2020O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC2020O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC2020O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC2020O01 L136-148 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC2020O01 L156-163 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC2020O01 L171-184 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC2020O01 L193-216 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC2020O01 L225-243 | 0 | | +| SET_HTML_TOP_OF_PAGE | FORM | ZCOC2020O01 L252-464 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC2020O01 L474-559 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC2020O01 L567-594 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC2030.md b/wiki/programs/ZCOC2030.md new file mode 100644 index 0000000..c74d7c8 --- /dev/null +++ b/wiki/programs/ZCOC2030.md @@ -0,0 +1,5246 @@ +--- +type: abap-program +title: "ZCOC2030 — 지점별 매출원가/장려금/수수료 계획 Upload" +description: "하이마트 CO 사업계획 수립을 위해 지점(WW120)별 연간 매출원가·장려금·수수료 계획을 엑셀로 업로드하는 프로그램이다. 구분 텍스트 첫 글자('매'/'장'/'수')에 따라 COST_GUBUN '10'/'20'/'30'을 부여하고 천원 단위 금액을 KRW 원 단위로 환산하여 커스텀 테이블 ZCOT0200에 월별(MONTH01~12)로 저장한다. 지점코드는 ZCOT0090으로 검증하며 판매조직 마스터 T2500~T2508, 관리회계영역 TKA01/TKA02를 참조한다." +resource: "abap://ZCOC2030" +tags: ["사업계획", "매출원가계획", "장려금", "수수료", "지점별계획", "엑셀업로드", "CO", "월별 금액", "천원 단위 환산", "지점", "매출원가 계획", "계획 저장", "기존 데이터 삭제", "저장 결과", "중복 저장 방지", "확인 팝업", "통화 변환", "내부 금액 형식", "동적 필드", "매출원가"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:15+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD01L", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110"] +x-tables-write: ["GT_DATA", "ZCOT0200"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "41edfd30340ca573709e964ee04889fb6fe239e36b0a73e35cc89723a8829958" +x-unit-count: 147 +x-chunk-count: 73 +x-declaration-count: 229 +--- + +## 업무 목적 + +하이마트 CO 사업계획 수립을 위해 지점(WW120)별 연간 매출원가·장려금·수수료 계획을 엑셀로 업로드하는 프로그램이다. 구분 텍스트 첫 글자('매'/'장'/'수')에 따라 COST_GUBUN '10'/'20'/'30'을 부여하고 천원 단위 금액을 KRW 원 단위로 환산하여 커스텀 테이블 ZCOT0200에 월별(MONTH01~12)로 저장한다. 지점코드는 ZCOT0090으로 검증하며 판매조직 마스터 T2500~T2508, 관리회계영역 TKA01/TKA02를 참조한다. + +## 주 흐름 + +1. 선택화면에서 관리회계영역(TKA01) 텍스트/통화를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일명이 입력되었는지 확인하고 상태 변수·ALV 필드카탈로그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 판매조직·품목 마스터(T2500~T2508)와 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110), 회사코드(TKA02)를 내부테이블로 적재한다 (SET_CHARACTER_MASTER) +4. 업로드 구조 기반 동적 내부테이블을 생성하고 엑셀 파일(2행부터)을 읽어 적재한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT) +5. 엑셀 값을 CONVERSION_EXIT/숫자·날짜 변환을 거쳐 GT_DATA로 이전한다 (TRANSFER_GT_DATA) +6. 구분값('매'/'장'/'수'), 지점코드 입력 여부, ZCOT0090 존재 여부, 지점+구분 중복을 검증하고 오류 행을 빨간색으로 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 월별 12개월 합계와 구분별 총합을 계산하고 코드명을 보강해 ALV(화면 100)에 표시한다 (EDIT_DATA) +8. 저장 버튼(&SAVE) 시 확인 팝업 후 금액을 천원→원 환산하여 ZCOT0200에 기존 연도 데이터를 삭제하고 MODIFY로 반영한다 (EXECUTE_SAVE, PERFORM_SAVE) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 결과 메인 테이블(구조 ZCOS0280 + 지점명, 합계, COST_GUBUN, 상태, 메시지) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, CONVERT_KRW_DATA / 소비: PERFORM_SAVE, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0280 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_ZCOT0090` — 지점(WW120) 마스터 및 지점명 (채움: SET_CHARACTER_MASTER / 소비: VALIDATION_CHECK, EDIT_DATA) +- `GT_SUM_10_VV100 / GT_SUM_20_VV100 / GT_SUM_30_VV100` — 매출원가/장려금/수수료 구분별 월 합계 (ZCOT0200 구조) (채움: EDIT_DATA / 소비: SET_HTML_TOP_OF_PAGE) +- `LT_ZCOT0200` — DB 저장용 원가 계획 테이블 (채움: PERFORM_SAVE / 소비: PERFORM_SAVE) + +## 테이블 / 외부 호출 + +- read: AENR, DD01L, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110 +- write: GT_DATA, ZCOT0200 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (73건 / unit 62개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC2030F01` L34-L45 (12줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0로 SMW0 문서(GC_SMW0, 지점별 매출원가/장려금/수수료 계획 Upload 양식)를 열어 엑셀 양식을 다운로드하게 한다. + +```abap + 37| CASE L_UCOMM. + 38| WHEN 'FC01'. + 39| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 40| EXPORTING + 41| P_DOCNAM = GC_SMW0 + 42| P_TITLE = '지점별 매출원가/장려금/수수료 계획 Upload'(F02). + 43| ENDCASE. +``` + +- **EN**: On function key FC01 open the SMW0 Excel template via Z_CO_OPEN_SMW0 so the user can download the upload form. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 템플릿 +- English: SMW0 template, Excel template +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc2030f01-35-l_ucomm), [`GC_SMW0`](#decl-zcoc2030top-32-gc_smw0) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L37-L43` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC2030` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC2030/ZCOC2030#L49-L51` · confidence 0.8 · `ZCOC2030#ZCOC2030#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC2030F01` L54-L61 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 56| IF P_FNAME IS INITIAL. + 57| MESSAGE S000 DISPLAY LIKE 'E' WITH + 58| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 59| LEAVE LIST-PROCESSING. + 60| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2030top-130-p_fname) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L56-L60` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC2030F01` L67-L82 (16줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 68| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 69| P_BEZEI = GV_KOKRS_BEZEI. + 70| + 71| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 72| " MAIN ALV용 딕셔너리 구조 취득. + 73| PERFORM GET_FCAT_LIKE_ITAB + 74| TABLES GT_MAIN_FIELDCAT + 75| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc2030top-44-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc2030top-28-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L68-L75` · confidence 0.75 · `ZCOC2030#ZCOC2030F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOC2030F01` L670-L726 (57줄) + +*CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다.* + +> 이 unit 의 조각 3개가 38/57줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CO-PA 사용자 특성 체크테이블 T2500~T2508(사업부·지사·지점·품목 대/중/소/상세·메이커)을 전체 조회해 GT_T2500~GT_T2508에 담고 정렬한다(본 로직에서는 참조하지 않음). + +```abap + 684| SELECT * FROM T2500 INTO TABLE GT_T2500. + 685| SORT GT_T2500. + 686| SELECT * FROM T2501 INTO TABLE GT_T2501. + 687| SORT GT_T2501. + 688| SELECT * FROM T2502 INTO TABLE GT_T2502. + 689| SORT GT_T2502. + 690| SELECT * FROM T2503 INTO TABLE GT_T2503. + 691| SORT GT_T2503. + 692| SELECT * FROM T2504 INTO TABLE GT_T2504. + 693| SORT GT_T2504. + 694| SELECT * FROM T2505 INTO TABLE GT_T2505. + 695| SORT GT_T2505. + 696| SELECT * FROM T2506 INTO TABLE GT_T2506. + 697| SORT GT_T2506. + 698| SELECT * FROM T2507 INTO TABLE GT_T2507. + 699| SORT GT_T2507. + 700| SELECT * FROM T2508 INTO TABLE GT_T2508. + 701| SORT GT_T2508. +``` + +- **EN**: Load the CO-PA user characteristic check tables T2500 through T2508 (division, region, branch, product hierarchy, maker) into GT_T2500-GT_T2508 and sort them; they are not referenced further in this program. +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508 +- 업무 키워드: CO-PA 특성 체크테이블, 품목 계층, 지점, 메이커 +- English: CO-PA Characteristic, Check Table, Product Hierarchy +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcoc2030top-98-gt_t2500), [`GT_T2501`](#decl-zcoc2030top-99-gt_t2501), [`GT_T2502`](#decl-zcoc2030top-100-gt_t2502), [`GT_T2503`](#decl-zcoc2030top-103-gt_t2503), [`GT_T2504`](#decl-zcoc2030top-104-gt_t2504), [`GT_T2505`](#decl-zcoc2030top-105-gt_t2505), [`GT_T2506`](#decl-zcoc2030top-106-gt_t2506), [`GT_T2507`](#decl-zcoc2030top-107-gt_t2507), [`GT_T2508`](#decl-zcoc2030top-94-gt_t2508) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L684-L701` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역(P_KOKRS)의 사용자 특성 마스터 ZCOT0080(메이커 WW300), ZCOT0090(지점 WW120→사업부/지사), ZCOT0110(품목상세 WW240→품목 대/중/소)을 조회해 각 특성 키로 정렬한다. + +```abap + 703| SELECT * FROM ZCOT0080 + 704| INTO TABLE GT_ZCOT0080 + 705| WHERE KOKRS = P_KOKRS. + 706| + 707| SORT GT_ZCOT0080 BY WW300. + 708| + 709| SELECT * FROM ZCOT0090 + 710| INTO TABLE GT_ZCOT0090 + 711| WHERE KOKRS = P_KOKRS. + 712| + 713| SORT GT_ZCOT0090 BY WW120. + 714| + 715| SELECT * FROM ZCOT0110 + 716| INTO TABLE GT_ZCOT0110 + 717| WHERE KOKRS = P_KOKRS. + 718| + 719| SORT GT_ZCOT0110 BY WW240. +``` + +- **EN**: Read the custom characteristic masters ZCOT0080 (maker WW300), ZCOT0090 (branch WW120 with parent division/region) and ZCOT0110 (product detail WW240 with product hierarchy) for the controlling area and sort by key. +- 테이블(파서): read [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: 특성 마스터, 지점, 품목상세, 메이커, 특성 파생 +- English: Characteristic Master, Branch, Product Detail, Maker, Derivation +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc2030top-95-gt_zcot0080), [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs), [`GT_ZCOT0090`](#decl-zcoc2030top-101-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcoc2030top-108-gt_zcot0110) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L703-L719` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#SET_CHARACTER_MASTER#C2` + +#### [sql_select] 관리회계영역과 회사코드가 1:1인 하이마트 전제로 TKA02에서 관리회계영역에 할당된 회사코드를 GV_BUKRS에 읽는다. + +```abap + 723| SELECT SINGLE BUKRS FROM TKA02 + 724| INTO GV_BUKRS + 725| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read the company code assigned to the controlling area from TKA02 into GV_BUKRS, assuming a 1:1 relationship. +- 테이블(파서): read [TKA02](/tables/TKA02.md) / write - +- SAP 객체: TKA02 +- 업무 키워드: 회사코드, 관리회계영역 할당 +- English: Company Code, Controlling Area Assignment, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcoc2030top-88-gv_bukrs), [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L723-L725` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#SET_CHARACTER_MASTER#C3` + +### FORM READ_DATA — `ZCOC2030F01` L353-L376 (24줄) + +*동적 업로드 테이블 생성, 엑셀 읽기, GT_DATA 이전, 검증, 편집·통화 변환까지 업로드 처리 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 20/24줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE → UPLOAD_XLS_STRUCT(2행부터) → TRANSFER_GT_DATA → VALIDATION_CHECK → EDIT_DATA/CONVERT_KRW_DATA 순으로 업로드 파이프라인을 실행한다. + +```abap + 356| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 357| * 2. 업로드 파일 취득 + 358| PERFORM UPLOAD_XLS_STRUCT TABLES + 359| USING P_FNAME " 파일명 + 360| 1 "S_COL-LOW + 361| 2 "S_ROW-LOW + 362| 256 "S_COL-HIGH + 363| 65536. "S_ROW-HIGH + 364| CHECK [] IS NOT INITIAL. + 365| *3. 인터널 테이블로 이전 + 366| PERFORM TRANSFER_GT_DATA. + 367| + 368| CHECK GT_DATA[] IS NOT INITIAL. + 369| + 370| "4. Validation + 371| PERFORM VALIDATION_CHECK. + 372| + 373| *5. 인터널 테이블 데이터 + 374| PERFORM EDIT_DATA. + 375| PERFORM CONVERT_KRW_DATA. +``` + +- **EN**: Orchestrate the upload pipeline: create dynamic table, read Excel, transfer, validate, edit and convert currency. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, CONVERT_KRW_DATA +- 업무 키워드: 업로드 처리 흐름, 검증, 엑셀 읽기 +- English: Upload pipeline, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc2030top-30-gc_upload_struct), [``](#decl-zcoc2030top-49--gf_uploadt-), [`P_FNAME`](#decl-zcoc2030top-130-p_fname), [`GT_DATA`](#decl-zcoc2030top-61-gt_data) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L356-L375` · confidence 0.8 · `ZCOC2030#ZCOC2030F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC2030F01` L615-L661 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 621| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 622| EXPORTING + 623| I_STRUCTURE_NAME = LV_STRNM + 624| I_BYPASSING_BUFFER = 'X' + 625| CHANGING + 626| CT_FIELDCAT = GT_UPLD_FCAT + 627| EXCEPTIONS + 628| INCONSISTENT_INTERFACE = 1 + 629| PROGRAM_ERROR = 2 + 630| OTHERS = 3. + 631| + 632| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 633| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 634| + 635| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 636| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 637| ENDIF. + 638| + 639| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 640| GS_UPLD_FCAT-INTLEN = '10'. + 641| ENDIF. + 642| + 643| " 올린 그대로 받기 위해 CHAR로 변환. + 644| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 645| GS_UPLD_FCAT-INTTYPE = 'C'. + 646| + 647| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 648| ENDLOOP. + 649| + 650| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 651| EXPORTING + 652| IT_FIELDCATALOG = LT_UPLD_FCAT + 653| IMPORTING + 654| EP_TABLE = GF_UPLOADT. + 655| + 656| ASSIGN GF_UPLOADT->* TO . + 657| + 658| CREATE DATA GF_UPLOADS LIKE LINE OF . + 659| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc2030f01-616-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc2030top-55-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2030top-56-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc2030f01-617-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc2030top-52-gf_uploadt), [``](#decl-zcoc2030top-49--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc2030top-53-gf_uploads), [``](#decl-zcoc2030top-50--gf_uploads-) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L621-L659` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC2030F01` L112-L203 (92줄) + +*동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 74/92줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 필드카탈로그의 도메인별 소문자 허용 여부(LOWERCASE)를 DD01L에서 조회해 정렬·중복 제거한다. + +```abap + 128| SELECT DOMNAME LOWERCASE + 129| INTO TABLE LT_LOWERCASE + 130| FROM DD01L + 131| FOR ALL ENTRIES IN GT_UPLD_FCAT + 132| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 133| AND AS4LOCAL = 'A'. + 134| + 135| SORT LT_LOWERCASE. + 136| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE + 137| COMPARING ALL FIELDS. +``` + +- **EN**: Select the LOWERCASE flag per domain from DD01L for the upload field catalog. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L +- 업무 키워드: 도메인 소문자 허용, 데이터 딕셔너리 +- English: Domain, DD01L, Lower Case +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc2030f01-113-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc2030top-55-gt_upld_fcat) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L128-L137` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 업로드 행의 각 컬럼을 COL_POS로 ASSIGN해 소문자 비허용 도메인은 대문자화하고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자(BDC_CURR)·날짜(BDC_DATE) 형식을 정리한 뒤 GS_DATA 필드로 옮기고(타입 변환 예외 시 오류 종료) 상태 INIT로 GT_DATA에 추가한다. + +```abap + 139| LOOP AT INTO . + 140| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 141| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 142| TO . + 143| + 144| IF SY-SUBRC NE 0. + 145| MESSAGE S000 WITH 'Field assign Fail.'. + 146| LEAVE LIST-PROCESSING. + 147| ENDIF. + 148| + 149| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 150| BINARY SEARCH. + 151| + 152| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 153| TRANSLATE TO UPPER CASE. + 154| ENDIF. + 155| + 156| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 157| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 158| INTO LV_CONVFUNC. + 159| + 160| CALL FUNCTION LV_CONVFUNC + 161| EXPORTING + 162| INPUT = + 163| IMPORTING + 164| OUTPUT = + 165| EXCEPTIONS + 166| OTHERS = 1. + 167| ENDIF. + 168| + 169| CASE GS_UPLD_FCAT-DATATYPE. + 170| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 171| 'DEC' OR 'CURR'. + 172| PERFORM BDC_CURR USING . + 173| WHEN 'DATS'. + 174| PERFORM BDC_DATE USING . + 175| ENDCASE. + 176| + 177| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 178| TO . + 179| + 180| IF SY-SUBRC NE 0. + 181| MESSAGE S000 WITH 'Field assign Fail.'. + 182| LEAVE LIST-PROCESSING. + 183| ENDIF. + 184| + 185| TRY . + 186| = . + 187| + 188| CATCH CX_ROOT INTO LF_OREF. + 189| LV_TEXT = LF_OREF->GET_TEXT( ). + 190| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 191| 'Type conversion error :' LV_TEXT. + 192| LEAVE LIST-PROCESSING. + 193| ENDTRY. + 194| ENDLOOP. + 195| + 196| GS_DATA-STATUS = GC_STATUS_INIT. + 197| + 198| APPEND GS_DATA TO GT_DATA. + 199| CLEAR GS_DATA. + 200| CLEAR : LT_LOWERCASE. + 201| + 202| ENDLOOP. +``` + +- **EN**: For each uploaded row and catalog field: upper-case, apply CONVERSION_EXIT_*_INPUT dynamically, normalize numeric/date values, move into GS_DATA with type-conversion error handling, and append to GT_DATA with initial status. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: DD01L, CX_ROOT +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 대문자 변환, 숫자 날짜 형식, 타입 변환 오류 +- English: Conversion Exit, Dynamic Field Assignment, Excel Upload, Type Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc2030top-49--gf_uploadt-), [``](#decl-zcoc2030top-50--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc2030top-55-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2030top-56-gs_upld_fcat), [``](#decl-zcoc2030f01-118--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc2030f01-113-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc2030f01-120-lv_convfunc), [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`GS_DATA`](#decl-zcoc2030top-76-gs_data), [``](#decl-zcoc2030f01-119--fs_data_field-), [`LF_OREF`](#decl-zcoc2030f01-121-lf_oref), [`LV_TEXT`](#decl-zcoc2030f01-122-lv_text) 외 1건 +- 위치: `abap://ZCOC2030/ZCOC2030F01#L139-L202` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC2030F01` L213-L319 (107줄) + +*업로드 행의 구분값('매출원가'/'장려금'/'수수료'), 지점코드 입력 여부, ZCOT0090 존재 여부, 지점+구분 중복을 검증하여 오류 행을 빨간색으로 표시한다.* + +> 이 unit 의 조각 2개가 92/107줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 행별로 GUBUN 첫 글자가 매/장/수인지, WW120(지점코드)이 입력되었는지, GT_ZCOT0090(지점 마스터)에 존재하는지 검사해 오류 시 메시지·빨간 상태·필드 강조·GV_UPLOAD_ERROR를 설정한다. + +```abap + 219| LOOP AT GT_DATA. + 220| + 221| IF NOT ( GT_DATA-GUBUN(1) = GC_GUBUN1 OR GT_DATA-GUBUN(1) = GC_GUBUN2 + 222| OR GT_DATA-GUBUN(1) = GC_GUBUN3 ). + 223| GT_DATA-MESSAGE = '구분값은 ''매출원가''과 ''장려금'' ''수수료'' 텍스트만 넣어주십시오.'(F04). + 224| GT_DATA-STATUS = GC_STATUS_RED. + 225| GV_UPLOAD_ERROR = 'X'. + 226| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. + 227| PERFORM ADD_DATA_MESSAGE USING 'E' + 228| GT_DATA-WW120 + 229| GT_DATA-MESSAGE. + 230| ENDIF. + 231| + 232| IF GT_DATA-WW120 IS INITIAL. + 233| GT_DATA-MESSAGE = '지점코드가 입력되지 않았습니다.'(F05). + 234| GT_DATA-STATUS = GC_STATUS_RED. + 235| GV_UPLOAD_ERROR = 'X'. + 236| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 237| PERFORM ADD_DATA_MESSAGE USING 'E' + 238| GT_DATA-WW120 + 239| GT_DATA-MESSAGE. + 240| ENDIF. + 241| + 242| READ TABLE GT_ZCOT0090 WITH KEY WW120 = GT_DATA-WW120 + 243| BINARY SEARCH. + 244| + 245| IF SY-SUBRC NE 0. + 246| GT_DATA-MESSAGE = '지점코드가 존재하지 않습니다.'(F06). + 247| GT_DATA-STATUS = GC_STATUS_RED. + 248| GV_UPLOAD_ERROR = 'X'. + 249| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 250| PERFORM ADD_DATA_MESSAGE USING 'E' + 251| GT_DATA-WW120 + 252| GT_DATA-MESSAGE. + 253| ENDIF. +``` + +- **EN**: Validate cost type text, mandatory branch code WW120 and branch existence in GT_ZCOT0090; mark errors with message, red status and field highlight. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: ZCOT0090 +- 업무 키워드: 구분값 검증, 지점코드 필수, 지점 존재 여부, 업로드 오류 +- English: Validation, Branch code, Master check, Upload error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`GC_GUBUN1`](#decl-zcoc2030top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2030top-36-gc_gubun2), [`GC_GUBUN3`](#decl-zcoc2030top-37-gc_gubun3), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2030top-22-gv_upload_error), [`GT_ZCOT0090`](#decl-zcoc2030top-101-gt_zcot0090) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L219-L253` · confidence 0.95 · `ZCOC2030#ZCOC2030F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] 복사본 LT_CHECK에서 동일 지점(WW120)+구분 조합이 2건 이상이면 '중복 지점 데이터' 오류로 표시한다(GUBUN(1)/(2)/(3) 비교를 세 번 반복). + +```abap + 255| LOOP AT LT_CHECK WHERE WW120 = GT_DATA-WW120 + 256| AND GUBUN(1) = GT_DATA-GUBUN(1). + 257| ADD 1 TO LV_CNT. + 258| IF LV_CNT = 2. + 259| EXIT. + 260| ENDIF. + 261| ENDLOOP. + 262| + 263| IF LV_CNT = 2. + 264| GT_DATA-MESSAGE = '중복 지점 데이터가 업로드되었습니다.'(F07). + 265| GT_DATA-STATUS = GC_STATUS_RED. + 266| GV_UPLOAD_ERROR = 'X'. + 267| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 268| PERFORM ADD_DATA_MESSAGE USING 'E' + 269| GT_DATA-WW120 + 270| GT_DATA-MESSAGE. + 271| ENDIF. + 272| + 273| CLEAR : LV_CNT. + 274| + 275| LOOP AT LT_CHECK WHERE WW120 = GT_DATA-WW120 + 276| AND GUBUN(1) = GT_DATA-GUBUN(2). + 277| ADD 1 TO LV_CNT. + 278| IF LV_CNT = 2. + 279| EXIT. + 280| ENDIF. + 281| ENDLOOP. + 282| + 283| IF LV_CNT = 2. + 284| GT_DATA-MESSAGE = '중복 지점 데이터가 업로드되었습니다.'(F07). + 285| GT_DATA-STATUS = GC_STATUS_RED. + 286| GV_UPLOAD_ERROR = 'X'. + 287| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 288| PERFORM ADD_DATA_MESSAGE USING 'E' + 289| GT_DATA-WW120 + 290| GT_DATA-MESSAGE. + 291| ENDIF. + 292| + 293| CLEAR : LV_CNT. + 294| + 295| LOOP AT LT_CHECK WHERE WW120 = GT_DATA-WW120 + 296| AND GUBUN(1) = GT_DATA-GUBUN(3). + 297| ADD 1 TO LV_CNT. + 298| IF LV_CNT = 2. + 299| EXIT. + 300| ENDIF. + 301| ENDLOOP. + 302| + 303| IF LV_CNT = 2. + 304| GT_DATA-MESSAGE = '중복 지점 데이터가 업로드되었습니다.'(F07). + 305| GT_DATA-STATUS = GC_STATUS_RED. + 306| GV_UPLOAD_ERROR = 'X'. + 307| PERFORM SET_ERROR_FIELD_RED USING 'WW120'. + 308| PERFORM ADD_DATA_MESSAGE USING 'E' + 309| GT_DATA-WW120 + 310| GT_DATA-MESSAGE. + 311| ENDIF. +``` + +- **EN**: Detect duplicate branch + cost type combinations in LT_CHECK and flag the row as duplicate upload error. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 중복 검증, 지점+구분 중복, 업로드 오류 +- English: Duplicate check, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`LT_CHECK`](#decl-zcoc2030f01-214-lt_check), [`LV_CNT`](#decl-zcoc2030f01-215-lv_cnt), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2030top-22-gv_upload_error) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L255-L311` · confidence 0.8 · `ZCOC2030#ZCOC2030F01#FORM#VALIDATION_CHECK#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC2030F01` L494-L520 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 501| IF P_VALUE IS NOT INITIAL. + 502| CONCATENATE P_VALUE ` : ` P_MESSAGE + 503| INTO LV_MESSAGE. + 504| ELSE. + 505| LV_MESSAGE = P_MESSAGE. + 506| ENDIF. + 507| + 508| IF P_STATUS = 'S'. + 509| LV_STATUS = GC_STATUS_GREEN. + 510| ELSEIF P_STATUS = 'E'. + 511| LV_STATUS = GC_STATUS_RED. + 512| ELSEIF P_STATUS = 'W'. + 513| LV_STATUS = GC_STATUS_YELLOW. + 514| ENDIF. + 515| GS_MSG_T_S-STATUS = LV_STATUS. + 516| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 517| + 518| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc2030f01-496-lv_message), [`LV_STATUS`](#decl-zcoc2030f01-497-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc2030top-86-gs_msg_t_s), [`GT_DATA`](#decl-zcoc2030top-61-gt_data) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L501-L518` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC2030F01` L529-L607 (79줄) + +*구분 텍스트('매'/'장'/'수')로 COST_GUBUN 10/20/30을 부여하고 구분별 월 합계를 COLLECT하며 지점명을 보강한 뒤 행별 연간 합계와 구분별 총합을 계산한다.* + +> 이 unit 의 조각 2개가 64/79줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] GUBUN 첫 글자(GC_GUBUN1/2/3)에 따라 COST_GUBUN '10'(매출원가)/'20'(장려금)/'30'(수수료)을 세팅하고 GT_SUM_10/20/30_VV100에 지점 제외 월 합계를 COLLECT하며 GT_ZCOT0090에서 지점명(WW120_TEXT)을 채운다. + +```abap + 541| LOOP AT GT_DATA. + 542| GT_DATA-REC_WAERS = GV_WAERS. + 543| + 544| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 545| GT_DATA-COST_GUBUN = '10'. + 546| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 547| GT_DATA-COST_GUBUN = '20'. + 548| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 549| GT_DATA-COST_GUBUN = '30'. + 550| ENDIF. + 551| + 552| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 553| MOVE-CORRESPONDING GT_DATA TO GT_SUM_10_VV100. + 554| CLEAR : GT_SUM_10_VV100-WW120. + 555| CLEAR : GT_SUM_10_VV100-REC_WAERS. + 556| COLLECT GT_SUM_10_VV100. + 557| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 558| MOVE-CORRESPONDING GT_DATA TO GT_SUM_20_VV100. + 559| CLEAR : GT_SUM_20_VV100-WW120. + 560| CLEAR : GT_SUM_20_VV100-REC_WAERS. + 561| COLLECT GT_SUM_20_VV100. + 562| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 563| MOVE-CORRESPONDING GT_DATA TO GT_SUM_30_VV100. + 564| CLEAR : GT_SUM_30_VV100-WW120. + 565| CLEAR : GT_SUM_30_VV100-REC_WAERS. + 566| COLLECT GT_SUM_30_VV100. + 567| ENDIF. + 568| + 569| READ TABLE GT_ZCOT0090 WITH KEY WW120 = GT_DATA-WW120 + 570| BINARY SEARCH. + 571| + 572| IF SY-SUBRC EQ 0. + 573| GT_DATA-WW120_TEXT = GT_ZCOT0090-WW120_TEXT. + 574| ENDIF. + 575| + 576| MODIFY GT_DATA. + 577| CLEAR : GT_DATA, GT_ZCOT0090, GT_SUM_10_VV100. + 578| ENDLOOP. +``` + +- **EN**: Derive COST_GUBUN 10/20/30 from the first character of GUBUN, COLLECT monthly totals per cost type into GT_SUM_xx_VV100 and enrich branch text from GT_ZCOT0090. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0090, ZCOT0200 +- 업무 키워드: 매출원가, 장려금, 수수료, 구분 코드, 월 합계, 지점명 +- English: COST_GUBUN, COLLECT, Branch text, Cost of sales, Incentive, Commission +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_GUBUN1`](#decl-zcoc2030top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2030top-36-gc_gubun2), [`GC_GUBUN3`](#decl-zcoc2030top-37-gc_gubun3), [`GT_SUM_10_VV100`](#decl-zcoc2030top-89-gt_sum_10_vv100), [`GT_SUM_20_VV100`](#decl-zcoc2030top-90-gt_sum_20_vv100), [`GT_SUM_30_VV100`](#decl-zcoc2030top-91-gt_sum_30_vv100), [`GT_ZCOT0090`](#decl-zcoc2030top-101-gt_zcot0090) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L541-L578` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#EDIT_DATA#C1` + +#### [calculation] 행별 MONTH01~12를 동적 ASSIGN으로 합산해 GT_DATA-SUM(연간 합계)을 만들고 구분별 총합(GV_VV110_10/20/30_SUM)에 누적한 뒤 지점·구분 순으로 정렬한다. + +```abap + 580| LOOP AT GT_DATA. + 581| CLEAR : LV_SUM. + 582| DO 12 TIMES. + 583| LV_NC = SY-INDEX. + 584| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD. + 585| ASSIGN (LV_FIELD) TO . + 586| + 587| IF SY-SUBRC EQ 0. + 588| LV_SUM = LV_SUM + . + 589| ENDIF. + 590| ENDDO. + 591| + 592| GT_DATA-SUM = LV_SUM. + 593| + 594| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 595| GV_VV110_10_SUM = GV_VV110_10_SUM + LV_SUM. + 596| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 597| GV_VV110_20_SUM = GV_VV110_20_SUM + LV_SUM. + 598| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 599| GV_VV110_30_SUM = GV_VV110_30_SUM + LV_SUM. + 600| ENDIF. + 601| + 602| MODIFY GT_DATA. CLEAR : GT_DATA. + 603| ENDLOOP. + 604| + 605| SORT GT_DATA BY WW120 COST_GUBUN. +``` + +- **EN**: Sum MONTH01..12 per row into GT_DATA-SUM, accumulate per-cost-type grand totals and sort by branch and COST_GUBUN. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 연간 합계, 구분별 총합, 월별 합산 +- English: Annual total, Grand total, Dynamic field +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`LV_SUM`](#decl-zcoc2030f01-533-lv_sum), [`LV_NC`](#decl-zcoc2030f01-531-lv_nc), [`LV_FIELD`](#decl-zcoc2030f01-530-lv_field), [``](#decl-zcoc2030f01-532--fs_value-), [`GC_GUBUN1`](#decl-zcoc2030top-35-gc_gubun1), [`GV_VV110_10_SUM`](#decl-zcoc2030top-110-gv_vv110_10_sum), [`GC_GUBUN2`](#decl-zcoc2030top-36-gc_gubun2), [`GV_VV110_20_SUM`](#decl-zcoc2030top-111-gv_vv110_20_sum), [`GC_GUBUN3`](#decl-zcoc2030top-37-gc_gubun3), [`GV_VV110_30_SUM`](#decl-zcoc2030top-112-gv_vv110_30_sum) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L580-L605` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#EDIT_DATA#C2` + +### FORM CONVERT_KRW_DATA — `ZCOC2030F01` L806-L826 (21줄) + +*필드카탈로그에서 통화(CURR) 타입 필드를 찾아 GT_DATA 각 행의 금액을 CONV_DB_WAERS로 내부 통화형식으로 변환한다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT의 CURR 타입 필드마다 GT_DATA 행에 동적 ASSIGN하여 CONV_DB_WAERS로 통화(GV_WAERS) 기준 내부 금액 형식으로 변환한다. + +```abap + 812| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 813| WHERE DATATYPE = 'CURR'. + 814| + 815| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 816| INTO LV_FIELD. + 817| + 818| LOOP AT GT_DATA ASSIGNING . + 819| ASSIGN (LV_FIELD) TO . + 820| + 821| IF SY-SUBRC EQ 0. + 822| PERFORM CONV_DB_WAERS USING GV_WAERS. + 823| ENDIF. + 824| ENDLOOP. + 825| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the GT_DATA amount and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: LVC_S_FCAT +- 업무 키워드: 통화 변환, 내부 금액 형식, 동적 필드 +- English: Currency conversion, Internal format, Field symbol +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc2030top-44-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2030f01-807-ls_fieldcat), [`LV_FIELD`](#decl-zcoc2030f01-810-lv_field), [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [``](#decl-zcoc2030f01-809--fs_data-), [``](#decl-zcoc2030f01-808--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L812-L825` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### EVENT END-OF-SELECTION — `ZCOC2030` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data) +- 위치: `abap://ZCOC2030/ZCOC2030#L57-L67` · confidence 0.85 · `ZCOC2030#ZCOC2030#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC2030/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC2030/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC2030/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC2030/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2030top-130-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC2030/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC2030#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC2030#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs) +- 위치: `abap://ZCOC2030/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC2030#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC2030F01` L430-L485 (56줄) + +*ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 행 번호로 GT_DATA를 읽고 GT_LOG_POP 필드카탈로그의 컬럼명(상태/메시지)을 설정한 뒤 MSG_LIST를 LT_POPUP으로 옮겨 팝업 ALV(W_POPUP_GRID->SHOW_DATA)로 오류 로그를 표시한다. + +```abap + 442| CHECK P_ROW CO '0123456789 '. + 443| + 444| READ TABLE GT_DATA INDEX P_ROW. + 445| + 446| CHECK SY-SUBRC EQ 0. + 447| + 448| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 449| USING 'GT_LOG_POP'. + 450| + 451| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. + 452| + 453| CASE LS_FIELDCAT-FIELDNAME. + 454| WHEN 'STATUS'. + 455| LS_FIELDCAT-COLTEXT = '상태'(F10). + 456| WHEN 'MESSAGE'. + 457| LS_FIELDCAT-COLTEXT = '메시지'(F11). + 458| ENDCASE. + 459| + 460| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. + 461| ENDLOOP. + 462| + 463| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 464| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 465| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 466| APPEND LT_POPUP. + 467| CLEAR : LT_POPUP. + 468| ENDLOOP. + 469| + 470| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 471| + 472| CREATE OBJECT W_POPUP_GRID + 473| EXPORTING + 474| I_T_FIELDCATALOG = POPUP_FIELDCAT + 475| I_S_LAYOUT = LS_LAYO + 476| I_CAPTION = '' + 477| I_LEFT = 100 + 478| I_TOP = 150 + 479| I_HEIGHT = 400 + 480| I_WIDTH = 900. + 481| + 482| CALL METHOD W_POPUP_GRID->SHOW_DATA + 483| EXPORTING + 484| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Read the selected GT_DATA row, build a popup field catalog for GT_LOG_POP and show its MSG_LIST entries in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): GET_FCAT_LIKE_ITAB, SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, ALV 팝업 +- English: Error Log, Popup ALV, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc2030f01-431-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2030f01-434-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc2030top-86-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc2030top-78-gt_log_pop), [`LT_POPUP`](#decl-zcoc2030f01-433-lt_popup), [`LS_LAYO`](#decl-zcoc2030f01-432-ls_layo), [`W_POPUP_GRID`](#decl-zcoc2030top-84-w_popup_grid) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L442-L484` · confidence 0.8 · `ZCOC2030#ZCOC2030F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC2030F01` L326-L344 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 329| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 330| + 331| IF L_EXISTS = ABAP_FALSE. + 332| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 333| LEAVE LIST-PROCESSING. + 334| EXIT. + 335| ENDIF. + 336| + 337| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 338| 'GS_UPLOAD' + 339| P_NAME + 340| 1 "S_COL-LOW + 341| 2 "S_ROW-LOW + 342| 256 "S_COL-HIGH + 343| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc2030f01-327-l_exists) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L329-L343` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM EXECUTE_SAVE — `ZCOC2030F01` L398-L422 (25줄) + +*중복 저장을 막고 '매출원가계획을 입력하시겠습니까?' 확인 팝업 후 PERFORM_SAVE로 ZCOT0200 저장을 실행한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 저장된 경우 오류 메시지로 중단하고, POPUP_TO_CONFIRM_02 확인(J) 후 저장 플래그를 세우고 PERFORM_SAVE를 호출한다. + +```abap + 403| IF GV_ALREADY_POST = 'X'. + 404| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 저장하였습니다.'(F08). + 405| EXIT. + 406| ENDIF. + 407| + 408| IF GV_UPLOAD_ERROR = 'X'. + 409| * PERFORM PGM_MSG USING 'F11' 'E'. + 410| ENDIF. + 411| + 412| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 413| '매출원가계획을 입력하시겠습니까?'(F09) '' + 414| CHANGING L_ANSWER. + 415| IF L_ANSWER <> 'J'. + 416| EXIT. + 417| ENDIF. + 418| + 419| GV_ALREADY_POST = 'X'. + 420| PERFORM PERFORM_SAVE. +``` + +- **EN**: Block duplicate save, ask for confirmation via POPUP_TO_CONFIRM_02 and then run PERFORM_SAVE. +- 호출(파서): POPUP_TO_CONFIRM_02, PERFORM_SAVE +- SAP 객체: ZCOT0200 +- 업무 키워드: 중복 저장 방지, 확인 팝업, 매출원가 계획 +- English: Duplicate check, Confirmation popup, Save +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc2030top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc2030top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc2030f01-399-l_answer) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L403-L420` · confidence 0.85 · `ZCOC2030#ZCOC2030F01#FORM#EXECUTE_SAVE#C1` + +### FORM PERFORM_SAVE — `ZCOC2030F01` L735-L797 (63줄) + +*GT_DATA의 월별 금액을 천원 단위 환산하여 ZCOT0200 레코드로 구성한 뒤 해당 관리회계영역·회계연도 데이터를 삭제하고 MODIFY로 저장하며 결과 상태를 ALV 행에 반영한다.* + +> 이 unit 의 조각 2개가 45/63줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_DATA 각 행의 MONTH01~MONTH12를 동적 ASSIGN으로 LT_ZCOT0200에 복사하며 CONVERT_1000_U로 천원→원 단위 환산하고 KOKRS·통화·지점(WW120)·회계연도·COST_GUBUN 키를 세팅한다. + +```abap + 748| LOOP AT GT_DATA. + 749| DO 12 TIMES. + 750| LV_NC = SY-INDEX. + 751| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD1. + 752| ASSIGN (LV_FIELD1) TO . + 753| IF SY-SUBRC EQ 0. + 754| CONCATENATE 'LT_ZCOT0200-MONTH' LV_NC INTO LV_FIELD2. + 755| + 756| ASSIGN (LV_FIELD2) TO . + 757| IF SY-SUBRC EQ 0. + 758| = . + 759| PERFORM CONVERT_1000_U USING . + 760| ENDIF. + 761| ENDIF. + 762| ENDDO. + 763| + 764| LT_ZCOT0200-KOKRS = P_KOKRS. + 765| LT_ZCOT0200-REC_WAERS = GV_WAERS. + 766| LT_ZCOT0200-WW120 = GT_DATA-WW120. + 767| LT_ZCOT0200-GJAHR = P_GJAHR. + 768| + 769| LT_ZCOT0200-COST_GUBUN = GT_DATA-COST_GUBUN. + 770| + 771| APPEND LT_ZCOT0200. CLEAR : LT_ZCOT0200. + 772| + 773| CLEAR : LT_ZCOT0200. + 774| ENDLOOP. +``` + +- **EN**: Copy the 12 monthly amounts per row into LT_ZCOT0200 with thousand-KRW scaling and set controlling area, currency, branch WW120, fiscal year and COST_GUBUN. +- 호출(파서): CONVERT_1000_U +- SAP 객체: ZCOT0200 +- 업무 키워드: 월별 금액, 천원 단위 환산, 지점, 매출원가 계획, 장려금, 수수료 +- English: Monthly plan, Amount scaling, Branch, Cost plan +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`LV_NC`](#decl-zcoc2030f01-738-lv_nc), [`LV_FIELD1`](#decl-zcoc2030f01-736-lv_field1), [``](#decl-zcoc2030f01-740--fs_value1-), [`LV_FIELD2`](#decl-zcoc2030f01-737-lv_field2), [``](#decl-zcoc2030f01-741--fs_value2-), [`LT_ZCOT0200`](#decl-zcoc2030f01-742-lt_zcot0200), [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`P_GJAHR`](#decl-zcoc2030top-127-p_gjahr) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L748-L774` · confidence 0.9 · `ZCOC2030#ZCOC2030F01#FORM#PERFORM_SAVE#C1` + +#### [db_write] 관리회계영역·회계연도의 기존 ZCOT0200 계획을 DELETE한 뒤 MODIFY로 업로드 계획을 저장하고 성공/실패 메시지와 상태를 GT_DATA 전 행에 반영한다. + +```abap + 776| IF LT_ZCOT0200[] IS NOT INITIAL. + 777| DELETE FROM ZCOT0200 WHERE KOKRS = P_KOKRS + 778| AND GJAHR = P_GJAHR. + 779| MODIFY ZCOT0200 FROM TABLE LT_ZCOT0200. + 780| + 781| IF SY-SUBRC EQ 0. + 782| MESSAGE S000 WITH '정상적으로 반영되었습니다.'(F12). + 783| LS_DATA-STATUS = GC_STATUS_GREEN. + 784| LS_DATA-MESSAGE = '정상적으로 반영되었습니다'(F12). + 785| ELSE. + 786| MESSAGE S000 WITH '저장 중 오류가 발생하였습니다.'(F13). + 787| LS_DATA-STATUS = GC_STATUS_RED. + 788| LS_DATA-MESSAGE = '저장 중 오류가 발생하였습니다'(F13). + 789| ENDIF. + 790| ENDIF. + 791| + 792| MODIFY GT_DATA FROM LS_DATA TRANSPORTING STATUS MESSAGE + 793| WHERE WW120 IS NOT INITIAL . +``` + +- **EN**: Delete existing ZCOT0200 rows for the controlling area and fiscal year, MODIFY the new plan rows and set green/red status with message on all GT_DATA rows. +- 테이블(파서): read - / write [ZCOT0200](/tables/ZCOT0200.md), [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0200 +- 업무 키워드: 계획 저장, 기존 데이터 삭제, 저장 결과 +- English: DELETE, MODIFY table, Cost plan save +- 정의부(복사 시 함께 필요): [`LT_ZCOT0200`](#decl-zcoc2030f01-742-lt_zcot0200), [`P_KOKRS`](#decl-zcoc2030top-121-p_kokrs), [`P_GJAHR`](#decl-zcoc2030top-127-p_gjahr), [`GT_DATA`](#decl-zcoc2030top-61-gt_data), [`LS_DATA`](#decl-zcoc2030f01-743-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC2030/ZCOC2030F01#L776-L793` · confidence 0.95 · `ZCOC2030#ZCOC2030F01#FORM#PERFORM_SAVE#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC2030I01` L6-L30 (25줄) + +*화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드가 BACK/CANC/EXIT이면 ALV 컨테이너를 해제하고 화면을 종료하며, &SAVE이면 EXECUTE_SAVE로 지점별 매출 계획을 ZCOT0160/ZCOT0170에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&SAVE'. + 24| PERFORM EXECUTE_SAVE. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 0100 function codes: free ALV containers and leave on BACK/EXIT, run EXECUTE_SAVE to store the sales plan on &SAVE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_SAVE +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 사용자 명령, 매출 계획 저장, 화면 종료 +- English: User Command, PAI, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc2030top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc2030c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC2030/ZCOC2030I01#L9-L28` · confidence 0.85 · `ZCOC2030#ZCOC2030I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (345건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC2030C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc2030c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC2030TOP` (55건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc2030top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc2030top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc2030top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc2030top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc2030top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc2030top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc2030top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc2030top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc2030top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc2030top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc2030top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc2030top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc2030top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc2030top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc2030top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc2030top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0280'. +``` + +#### GC_SMW0 — constants · L32-L32 {#decl-zcoc2030top-32-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC2030'. +``` + +#### GC_GUBUN1 — constants · L35-L35 {#decl-zcoc2030top-35-gc_gubun1} + +```abap +CONSTANTS : GC_GUBUN1(1) TYPE C VALUE '매'. "매출원가 +``` + +#### GC_GUBUN2 — constants · L36-L36 {#decl-zcoc2030top-36-gc_gubun2} + +```abap +CONSTANTS : GC_GUBUN2(1) TYPE C VALUE '장'. "장려금 +``` + +#### GC_GUBUN3 — constants · L37-L37 {#decl-zcoc2030top-37-gc_gubun3} + +```abap +CONSTANTS : GC_GUBUN3(1) TYPE C VALUE '수'. "수수료 +``` + +#### GC_MEINS — constants · L38-L38 {#decl-zcoc2030top-38-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE COSP-MEINH VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L44-L44 {#decl-zcoc2030top-44-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L49-L49 {#decl-zcoc2030top-49--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L50-L50 {#decl-zcoc2030top-50--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L52-L52 {#decl-zcoc2030top-52-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L53-L53 {#decl-zcoc2030top-53-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L55-L55 {#decl-zcoc2030top-55-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L56-L56 {#decl-zcoc2030top-56-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L61-L74 {#decl-zcoc2030top-61-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0280. + +DATA : +WW120_TEXT LIKE ZCOT0090-WW120_TEXT, +SUM LIKE ZCOT0200-MONTH12, +COST_GUBUN LIKE ZCOT0200-COST_GUBUN, + +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L76-L76 {#decl-zcoc2030top-76-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L78-L81 {#decl-zcoc2030top-78-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L84-L84 {#decl-zcoc2030top-84-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L86-L86 {#decl-zcoc2030top-86-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L88-L88 {#decl-zcoc2030top-88-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE T001-BUKRS. +``` + +#### GT_SUM_10_VV100 — data · L89-L89 {#decl-zcoc2030top-89-gt_sum_10_vv100} + +```abap +DATA : GT_SUM_10_VV100 LIKE ZCOT0200 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_20_VV100 — data · L90-L90 {#decl-zcoc2030top-90-gt_sum_20_vv100} + +```abap +DATA : GT_SUM_20_VV100 LIKE ZCOT0200 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_30_VV100 — data · L91-L91 {#decl-zcoc2030top-91-gt_sum_30_vv100} + +```abap +DATA : GT_SUM_30_VV100 LIKE ZCOT0200 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L94-L94 {#decl-zcoc2030top-94-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L95-L95 {#decl-zcoc2030top-95-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L98-L98 {#decl-zcoc2030top-98-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L99-L99 {#decl-zcoc2030top-99-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L100-L100 {#decl-zcoc2030top-100-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L101-L101 {#decl-zcoc2030top-101-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L103-L103 {#decl-zcoc2030top-103-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L104-L104 {#decl-zcoc2030top-104-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L105-L105 {#decl-zcoc2030top-105-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L106-L106 {#decl-zcoc2030top-106-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L107-L107 {#decl-zcoc2030top-107-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L108-L108 {#decl-zcoc2030top-108-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GV_VV110_10_SUM — data · L110-L110 {#decl-zcoc2030top-110-gv_vv110_10_sum} + +```abap +DATA : GV_VV110_10_SUM LIKE ZCOT0200-MONTH12. " 매출원가 +``` + +#### GV_VV110_20_SUM — data · L111-L111 {#decl-zcoc2030top-111-gv_vv110_20_sum} + +```abap +DATA : GV_VV110_20_SUM LIKE ZCOT0200-MONTH12. " 장려금 +``` + +#### GV_VV110_30_SUM — data · L112-L112 {#decl-zcoc2030top-112-gv_vv110_30_sum} + +```abap +DATA : GV_VV110_30_SUM LIKE ZCOT0200-MONTH12. " 수수료 +``` + +#### P_KOKRS — parameter · L121-L122 {#decl-zcoc2030top-121-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L127-L128 {#decl-zcoc2030top-127-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### P_FNAME — parameter · L130-L131 {#decl-zcoc2030top-130-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC2030_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC2030F01` (34건) + +#### L_UCOMM — data · unit 로컬 · L35-L35 {#decl-zcoc2030f01-35-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L113-L116 {#decl-zcoc2030f01-113-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L118-L118 {#decl-zcoc2030f01-118--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L119-L119 {#decl-zcoc2030f01-119--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L120-L120 {#decl-zcoc2030f01-120-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L121-L121 {#decl-zcoc2030f01-121-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L122-L122 {#decl-zcoc2030f01-122-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_CHECK — data · unit 로컬 · L214-L214 {#decl-zcoc2030f01-214-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L215-L215 {#decl-zcoc2030f01-215-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L327-L327 {#decl-zcoc2030f01-327-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### L_ANSWER — data · unit 로컬 · L399-L399 {#decl-zcoc2030f01-399-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L431-L431 {#decl-zcoc2030f01-431-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L432-L432 {#decl-zcoc2030f01-432-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L433-L433 {#decl-zcoc2030f01-433-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L434-L434 {#decl-zcoc2030f01-434-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_MESSAGE — data · unit 로컬 · L496-L496 {#decl-zcoc2030f01-496-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L497-L497 {#decl-zcoc2030f01-497-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_FIELD — data · unit 로컬 · L530-L530 {#decl-zcoc2030f01-530-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L531-L531 {#decl-zcoc2030f01-531-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L532-L532 {#decl-zcoc2030f01-532--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_SUM — data · unit 로컬 · L533-L533 {#decl-zcoc2030f01-533-lv_sum} + +```abap + DATA : LV_SUM LIKE ZCOT0160-MONTH01. +``` + +#### LV_STRNM — data · unit 로컬 · L616-L616 {#decl-zcoc2030f01-616-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L617-L617 {#decl-zcoc2030f01-617-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +#### LV_FIELD1 — data · unit 로컬 · L736-L736 {#decl-zcoc2030f01-736-lv_field1} + +```abap + DATA : LV_FIELD1(30) TYPE C. +``` + +#### LV_FIELD2 — data · unit 로컬 · L737-L737 {#decl-zcoc2030f01-737-lv_field2} + +```abap + DATA : LV_FIELD2(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L738-L738 {#decl-zcoc2030f01-738-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L740-L740 {#decl-zcoc2030f01-740--fs_value1-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L741-L741 {#decl-zcoc2030f01-741--fs_value2-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LT_ZCOT0200 — data · unit 로컬 · L742-L742 {#decl-zcoc2030f01-742-lt_zcot0200} + +```abap + DATA : LT_ZCOT0200 LIKE ZCOT0200 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_DATA — data · unit 로컬 · L743-L743 {#decl-zcoc2030f01-743-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L807-L807 {#decl-zcoc2030f01-807-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L808-L808 {#decl-zcoc2030f01-808--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L809-L809 {#decl-zcoc2030f01-809--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L810-L810 {#decl-zcoc2030f01-810-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC2030 L26-32 | 0 | 프로그램 초기화 시 화면 기본값 설정(SET_DYNP)과 FC01 버튼 활성화를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC2030 L33-35 | 0 | 선택화면 PAI에서 기능키 처리를 위해 CONTROL_FCXX를 호출한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC2030 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 조정한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC2030 L42-47 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말을 제공한다. | +| START-OF-SELECTION | EVENT | ZCOC2030 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC2030 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC2030C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC2030C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC2030C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC2030C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC2030C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC2030C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC2030C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC2030C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC2030C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC2030C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC2030C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC2030C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC2030C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC2030C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC2030C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC2030C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC2030C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC2030C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC2030C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC2030C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC2030C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC2030C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC2030C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC2030C01 L631-690 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC2030C01 L700-710 | 0 | | +| HANDLE_TOP_OF_PAGE | FORM | ZCOC2030C01 L719-724 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC2030F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 만드는 화면 속성 설정이다. | +| SET_DYNP | FORM | ZCOC2030F01 L22-25 | 0 | 화면 초기화 시 관리회계영역 기본값과 텍스트(P_BEZEI)를 설정한다. | +| CONTROL_FCXX | FORM | ZCOC2030F01 L34-45 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 SMW0 템플릿을 Z_CO_OPEN_SMW0로 연다. | +| CHECK_INPUT | FORM | ZCOC2030F01 L54-61 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC2030F01 L67-82 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC2030F01 L88-91 | 0 | 마스터 적재(SET_CHARACTER_MASTER)와 엑셀 데이터 읽기(READ_DATA)를 호출하는 단순 래퍼이다. | +| FC01_ACTIVE | FORM | ZCOC2030F01 L100-103 | 0 | 선택화면 기능키 버튼 FC01을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC2030F01 L112-203 | 2 | 동적 엑셀 수신 테이블 의 각 컬럼을 필드카탈로그 기준으로 대문자·CONVERSION_EXIT·숫자/날짜 형식 변환한 뒤 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC2030F01 L213-319 | 2 | 업로드 행의 구분값('매출원가'/'장려금'/'수수료'), 지점코드 입력 여부, ZCOT0090 존재 여부, 지점+구분 중복을 검증하여 오류 행을 빨간색으로 표시한다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC2030F01 L326-344 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC2030F01 L353-376 | 1 | 동적 업로드 테이블 생성, 엑셀 읽기, GT_DATA 이전, 검증, 편집·통화 변환까지 업로드 처리 흐름을 순서대로 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC2030F01 L384-392 | 0 | 오류 필드를 ALV 셀 색상(빨강, COL 6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EXECUTE_SAVE | FORM | ZCOC2030F01 L398-422 | 1 | 중복 저장을 막고 '매출원가계획을 입력하시겠습니까?' 확인 팝업 후 PERFORM_SAVE로 ZCOT0200 저장을 실행한다. | +| SHOW_ERROR_LOG | FORM | ZCOC2030F01 L430-485 | 1 | ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC2030F01 L494-520 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC2030F01 L529-607 | 2 | 구분 텍스트('매'/'장'/'수')로 COST_GUBUN 10/20/30을 부여하고 구분별 월 합계를 COLLECT하며 지점명을 보강한 뒤 행별 연간 합계와 구분별 총합을 계산한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC2030F01 L615-661 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| SET_CHARACTER_MASTER | FORM | ZCOC2030F01 L670-726 | 3 | CO-PA 특성 체크테이블(T2500~T2508)과 사용자 특성 마스터 ZCOT0080(메이커)·ZCOT0090(지점)·ZCOT0110(품목상세), 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재한다. | +| PERFORM_SAVE | FORM | ZCOC2030F01 L735-797 | 2 | GT_DATA의 월별 금액을 천원 단위 환산하여 ZCOT0200 레코드로 구성한 뒤 해당 관리회계영역·회계연도 데이터를 삭제하고 MODIFY로 저장하며 결과 상태를 ALV 행에 반영한다. | +| CONVERT_KRW_DATA | FORM | ZCOC2030F01 L806-826 | 1 | 필드카탈로그에서 통화(CURR) 타입 필드를 찾아 GT_DATA 각 행의 금액을 CONV_DB_WAERS로 내부 통화형식으로 변환한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC2030I01 L6-30 | 1 | 화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC2030O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC2030O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC2030O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC2030O01 L136-148 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC2030O01 L156-163 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC2030O01 L171-184 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC2030O01 L193-216 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC2030O01 L225-243 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC2030O01 L253-338 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC2030O01 L346-373 | 0 | | +| SET_HTML_TOP_OF_PAGE | FORM | ZCOC2030O01 L382-622 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC2040.md b/wiki/programs/ZCOC2040.md new file mode 100644 index 0000000..3437188 --- /dev/null +++ b/wiki/programs/ZCOC2040.md @@ -0,0 +1,5261 @@ +--- +type: abap-program +title: "ZCOC2040 — 품목(중)별 매출원가/장려금/수수료 계획 Upload" +description: "하이마트 CO 사업계획 수립을 위해 품목(중분류, WW220)별 연간 매출원가·장려금·수수료 계획을 엑셀로 업로드하는 프로그램이다. 구분 텍스트 첫 글자('매'/'장'/'수')에 따라 COST_GUBUN '10'/'20'/'30'을 부여하고 천원 단위 금액을 KRW 원 단위로 환산하여 커스텀 테이블 ZCOT0210에 월별(MONTH01~12)로 저장한다. 품목(중) 코드는 T2505로 검증하고 ZCOT0110에서 명칭을 보강하며 관리회계영역 TKA01/TKA02를 참조한다." +resource: "abap://ZCOC2040" +tags: ["사업계획", "매출원가계획", "장려금", "수수료", "품목별계획", "엑셀업로드", "CO", "매출원가 계획", "월별 금액", "천원 단위 환산", "품목 중분류", "원가구분", "계획 저장", "전체 삭제 후 재저장", "저장 결과 메시지", "상태 아이콘", "매출원가", "구분별 합계", "품목 중분류 명칭", "연간 합계"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:15+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD01L", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110"] +x-tables-write: ["GT_DATA", "ZCOT0210"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "e44915efbba83cad5c96dfc6fe02b4491728e47c2a576c2db6573ce667715a77" +x-unit-count: 147 +x-chunk-count: 74 +x-declaration-count: 229 +--- + +## 업무 목적 + +하이마트 CO 사업계획 수립을 위해 품목(중분류, WW220)별 연간 매출원가·장려금·수수료 계획을 엑셀로 업로드하는 프로그램이다. 구분 텍스트 첫 글자('매'/'장'/'수')에 따라 COST_GUBUN '10'/'20'/'30'을 부여하고 천원 단위 금액을 KRW 원 단위로 환산하여 커스텀 테이블 ZCOT0210에 월별(MONTH01~12)로 저장한다. 품목(중) 코드는 T2505로 검증하고 ZCOT0110에서 명칭을 보강하며 관리회계영역 TKA01/TKA02를 참조한다. + +## 주 흐름 + +1. 선택화면에서 관리회계영역(TKA01) 텍스트/통화를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일명이 입력되었는지 확인하고 상태 변수·ALV 필드카탈로그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 판매조직·품목 마스터(T2500~T2508)와 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110), 회사코드(TKA02)를 내부테이블로 적재한다 (SET_CHARACTER_MASTER) +4. 업로드 구조 기반 동적 내부테이블을 생성하고 엑셀 파일(2행부터)을 읽어 적재한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT) +5. 엑셀 값을 CONVERSION_EXIT/숫자·날짜 변환을 거쳐 GT_DATA로 이전한다 (TRANSFER_GT_DATA) +6. 구분값('매'/'장'/'수'), 품목(중) 코드 입력 여부, T2505 존재 여부, 품목+구분 중복을 검증하고 오류 행을 빨간색으로 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +7. 월별 12개월 합계와 구분별 총합을 계산하고 코드명을 보강해 ALV(화면 100)에 표시한다 (EDIT_DATA) +8. 저장 버튼(&SAVE) 시 확인 팝업 후 금액을 천원→원 환산하여 ZCOT0210에 기존 연도 데이터를 삭제하고 MODIFY로 반영한다 (EXECUTE_SAVE, PERFORM_SAVE) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 결과 메인 테이블(구조 ZCOS0290 + 품목(중)명, 합계, COST_GUBUN, 상태, 메시지) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, CONVERT_KRW_DATA / 소비: PERFORM_SAVE, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0290 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_T2505` — 품목(중) 마스터 - 존재 여부 검증 (채움: SET_CHARACTER_MASTER / 소비: VALIDATION_CHECK) +- `GT_ZCOT0110` — 품목 특성 마스터 - 품목(중) 명칭 (채움: SET_CHARACTER_MASTER / 소비: EDIT_DATA) +- `GT_SUM_10_VV100 / GT_SUM_20_VV100 / GT_SUM_30_VV100` — 매출원가/장려금/수수료 구분별 월 합계 (ZCOT0210 구조) (채움: EDIT_DATA / 소비: SET_HTML_TOP_OF_PAGE) +- `LT_ZCOT0210` — DB 저장용 원가 계획 테이블 (채움: PERFORM_SAVE / 소비: PERFORM_SAVE) + +## 테이블 / 외부 호출 + +- read: AENR, DD01L, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110 +- write: GT_DATA, ZCOT0210 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (74건 / unit 62개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC2040F01` L34-L45 (12줄) + +*선택화면 기능 버튼 FC01(엑셀 양식 다운로드)이 눌리면 Z_CO_OPEN_SMW0로 SMW0에 등록된 업로드 엑셀 양식(GC_SMW0)을 여는 처리다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0를 호출해 웹 리포지토리(SMW0) 문서 GC_SMW0(품목(중)별 매출원가/장려금/수수료 계획 업로드 양식)을 다운로드/오픈한다. + +```abap + 37| CASE L_UCOMM. + 38| WHEN 'FC01'. + 39| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 40| EXPORTING + 41| P_DOCNAM = GC_SMW0 + 42| P_TITLE = '품목(중)별 매출원가/장려금/수수료 계획 Upload'(F02). + 43| ENDCASE. +``` + +- **EN**: When function code FC01 is pressed, call Z_CO_OPEN_SMW0 to open the Excel upload template stored in the SMW0 web repository under GC_SMW0. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0, SSCRFIELDS +- 업무 키워드: 엑셀 양식 다운로드, SMW0 양식, 선택화면 버튼 +- English: Excel Template, SMW0, Selection Screen Function Key +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc2040f01-35-l_ucomm), [`GC_SMW0`](#decl-zcoc2040top-32-gc_smw0) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L37-L43` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC2040` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC2040/ZCOC2040#L49-L51` · confidence 0.8 · `ZCOC2040#ZCOC2040#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC2040F01` L54-L61 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 56| IF P_FNAME IS INITIAL. + 57| MESSAGE S000 DISPLAY LIKE 'E' WITH + 58| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 59| LEAVE LIST-PROCESSING. + 60| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2040top-130-p_fname) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L56-L60` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOC2040F01` L67-L82 (16줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 68| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 69| P_BEZEI = GV_KOKRS_BEZEI. + 70| + 71| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 72| " MAIN ALV용 딕셔너리 구조 취득. + 73| PERFORM GET_FCAT_LIKE_ITAB + 74| TABLES GT_MAIN_FIELDCAT + 75| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcoc2040top-44-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcoc2040top-28-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L68-L75` · confidence 0.75 · `ZCOC2040#ZCOC2040F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOC2040F01` L673-L729 (57줄) + +*판매조직·품목 계층 마스터(T2500~T2508), 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110)와 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재해 검증·명칭 보강에 사용한다.* + +> 이 unit 의 조각 3개가 38/57줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 판매조직·품목 계층(대/중/소 등) 마스터 테이블 T2500~T2508을 전체 조회해 GT_T2500~GT_T2508에 담고 정렬한다(T2505는 품목(중) WW220 검증에 사용). + +```abap + 687| SELECT * FROM T2500 INTO TABLE GT_T2500. + 688| SORT GT_T2500. + 689| SELECT * FROM T2501 INTO TABLE GT_T2501. + 690| SORT GT_T2501. + 691| SELECT * FROM T2502 INTO TABLE GT_T2502. + 692| SORT GT_T2502. + 693| SELECT * FROM T2503 INTO TABLE GT_T2503. + 694| SORT GT_T2503. + 695| SELECT * FROM T2504 INTO TABLE GT_T2504. + 696| SORT GT_T2504. + 697| SELECT * FROM T2505 INTO TABLE GT_T2505. + 698| SORT GT_T2505. + 699| SELECT * FROM T2506 INTO TABLE GT_T2506. + 700| SORT GT_T2506. + 701| SELECT * FROM T2507 INTO TABLE GT_T2507. + 702| SORT GT_T2507. + 703| SELECT * FROM T2508 INTO TABLE GT_T2508. + 704| SORT GT_T2508. +``` + +- **EN**: Load the full sales organization and product hierarchy master tables T2500 through T2508 into GT_T2500-GT_T2508 and sort them; T2505 is used to validate product group WW220. +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508 +- 업무 키워드: 품목 계층 마스터, 판매조직, 품목 중분류, 마스터 적재 +- English: Product Hierarchy, Sales Organization, Master Data, T2505 +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcoc2040top-98-gt_t2500), [`GT_T2501`](#decl-zcoc2040top-99-gt_t2501), [`GT_T2502`](#decl-zcoc2040top-100-gt_t2502), [`GT_T2503`](#decl-zcoc2040top-103-gt_t2503), [`GT_T2504`](#decl-zcoc2040top-104-gt_t2504), [`GT_T2505`](#decl-zcoc2040top-105-gt_t2505), [`GT_T2506`](#decl-zcoc2040top-106-gt_t2506), [`GT_T2507`](#decl-zcoc2040top-107-gt_t2507), [`GT_T2508`](#decl-zcoc2040top-94-gt_t2508) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L687-L704` · confidence 0.85 · `ZCOC2040#ZCOC2040F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역(P_KOKRS)의 하이마트 CO 특성 마스터 ZCOT0080(WW300), ZCOT0090(WW120), ZCOT0110(품목(중) WW220 명칭)을 조회해 각 특성 키로 정렬한다. + +```abap + 706| SELECT * FROM ZCOT0080 + 707| INTO TABLE GT_ZCOT0080 + 708| WHERE KOKRS = P_KOKRS. + 709| + 710| SORT GT_ZCOT0080 BY WW300. + 711| + 712| SELECT * FROM ZCOT0090 + 713| INTO TABLE GT_ZCOT0090 + 714| WHERE KOKRS = P_KOKRS. + 715| + 716| SORT GT_ZCOT0090 BY WW120. + 717| + 718| SELECT * FROM ZCOT0110 + 719| INTO TABLE GT_ZCOT0110 + 720| WHERE KOKRS = P_KOKRS. + 721| + 722| SORT GT_ZCOT0110 BY WW220. +``` + +- **EN**: Read the custom CO characteristic master tables ZCOT0080 (WW300), ZCOT0090 (WW120) and ZCOT0110 (product group WW220 text) for the controlling area and sort by their characteristic keys. +- 테이블(파서): read [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: CO 특성 마스터, 품목 중분류 명칭, 관리회계영역 +- English: CO-PA Characteristic, Custom Master, Product Group Text +- 정의부(복사 시 함께 필요): [`GT_ZCOT0080`](#decl-zcoc2040top-95-gt_zcot0080), [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs), [`GT_ZCOT0090`](#decl-zcoc2040top-101-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcoc2040top-108-gt_zcot0110) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L706-L722` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#SET_CHARACTER_MASTER#C2` + +#### [sql_select] 관리회계영역과 회사코드가 1:1인 하이마트 전제로 TKA02에서 관리회계영역(P_KOKRS)에 할당된 회사코드를 GV_BUKRS에 읽는다. + +```abap + 726| SELECT SINGLE BUKRS FROM TKA02 + 727| INTO GV_BUKRS + 728| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read the company code assigned to the controlling area from TKA02 into GV_BUKRS, assuming a 1:1 controlling area to company code relationship. +- 테이블(파서): read [TKA02](/tables/TKA02.md) / write - +- SAP 객체: TKA02 +- 업무 키워드: 회사코드, 관리회계영역 할당 +- English: Company Code, Controlling Area Assignment, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcoc2040top-88-gv_bukrs), [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L726-L728` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#SET_CHARACTER_MASTER#C3` + +### FORM READ_DATA — `ZCOC2040F01` L356-L379 (24줄) + +*동적 업로드 테이블 생성, 엑셀 읽기, GT_DATA 이전, 검증, 편집·통화 변환까지 업로드 처리 흐름을 순서대로 호출한다.* + +> 이 unit 의 조각 1개가 20/24줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE → UPLOAD_XLS_STRUCT(2행부터) → TRANSFER_GT_DATA → VALIDATION_CHECK → EDIT_DATA/CONVERT_KRW_DATA 순으로 업로드 파이프라인을 실행한다. + +```abap + 359| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 360| * 2. 업로드 파일 취득 + 361| PERFORM UPLOAD_XLS_STRUCT TABLES + 362| USING P_FNAME " 파일명 + 363| 1 "S_COL-LOW + 364| 2 "S_ROW-LOW + 365| 256 "S_COL-HIGH + 366| 65536. "S_ROW-HIGH + 367| CHECK [] IS NOT INITIAL. + 368| *3. 인터널 테이블로 이전 + 369| PERFORM TRANSFER_GT_DATA. + 370| + 371| CHECK GT_DATA[] IS NOT INITIAL. + 372| + 373| "4. Validation + 374| PERFORM VALIDATION_CHECK. + 375| + 376| *5. 인터널 테이블 데이터 + 377| PERFORM EDIT_DATA. + 378| PERFORM CONVERT_KRW_DATA. +``` + +- **EN**: Orchestrate the upload pipeline: create dynamic table, read Excel, transfer, validate, edit and convert currency. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, CONVERT_KRW_DATA +- 업무 키워드: 업로드 처리 흐름, 검증, 엑셀 읽기 +- English: Upload pipeline, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc2040top-30-gc_upload_struct), [``](#decl-zcoc2040top-49--gf_uploadt-), [`P_FNAME`](#decl-zcoc2040top-130-p_fname), [`GT_DATA`](#decl-zcoc2040top-61-gt_data) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L359-L378` · confidence 0.8 · `ZCOC2040#ZCOC2040F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC2040F01` L618-L664 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 624| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 625| EXPORTING + 626| I_STRUCTURE_NAME = LV_STRNM + 627| I_BYPASSING_BUFFER = 'X' + 628| CHANGING + 629| CT_FIELDCAT = GT_UPLD_FCAT + 630| EXCEPTIONS + 631| INCONSISTENT_INTERFACE = 1 + 632| PROGRAM_ERROR = 2 + 633| OTHERS = 3. + 634| + 635| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 636| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 637| + 638| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 639| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 640| ENDIF. + 641| + 642| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 643| GS_UPLD_FCAT-INTLEN = '10'. + 644| ENDIF. + 645| + 646| " 올린 그대로 받기 위해 CHAR로 변환. + 647| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 648| GS_UPLD_FCAT-INTTYPE = 'C'. + 649| + 650| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 651| ENDLOOP. + 652| + 653| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 654| EXPORTING + 655| IT_FIELDCATALOG = LT_UPLD_FCAT + 656| IMPORTING + 657| EP_TABLE = GF_UPLOADT. + 658| + 659| ASSIGN GF_UPLOADT->* TO . + 660| + 661| CREATE DATA GF_UPLOADS LIKE LINE OF . + 662| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc2040f01-619-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc2040top-55-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2040top-56-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc2040f01-620-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc2040top-52-gf_uploadt), [``](#decl-zcoc2040top-49--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc2040top-53-gf_uploads), [``](#decl-zcoc2040top-50--gf_uploads-) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L624-L662` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC2040F01` L112-L204 (93줄) + +*동적 엑셀 수신 테이블 의 문자값을 업로드 구조 필드카탈로그(GT_UPLD_FCAT)에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 형식 변환을 거쳐 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 75/93줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 구조 필드들의 도메인(GT_UPLD_FCAT-DOMNAME)에 대해 DD01L에서 소문자 허용 여부(LOWERCASE)를 조회해 대문자 변환 대상을 판단할 LT_LOWERCASE를 만든다. + +```abap + 128| SELECT DOMNAME LOWERCASE + 129| INTO TABLE LT_LOWERCASE + 130| FROM DD01L + 131| FOR ALL ENTRIES IN GT_UPLD_FCAT + 132| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 133| AND AS4LOCAL = 'A'. + 134| + 135| SORT LT_LOWERCASE. + 136| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE + 137| COMPARING ALL FIELDS. +``` + +- **EN**: Read the lowercase-allowed flag from DD01L for the domains of the upload structure fields to decide which values must be converted to upper case. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L, GT_UPLD_FCAT +- 업무 키워드: 도메인 소문자 허용, 대문자 변환 기준 +- English: Domain, Lowercase Flag, DD01L +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc2040f01-113-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc2040top-55-gt_upld_fcat) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L128-L137` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 엑셀 수신 행의 각 컬럼을 필드카탈로그 순서로 ASSIGN COMPONENT하여 소문자 비허용 도메인은 대문자로 바꾸고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자형(INT/NUMC/QUAN/DEC/CURR)은 BDC_CURR, 날짜형(DATS)은 BDC_DATE로 변환한 뒤 GS_DATA 필드에 옮기고(형 변환 예외는 메시지 후 종료) 초기 상태로 GT_DATA에 APPEND 한다. + +```abap + 139| LOOP AT INTO . + 140| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 141| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 142| TO . + 143| + 144| IF SY-SUBRC NE 0. + 145| MESSAGE S000 WITH 'Field assign Fail.'. + 146| LEAVE LIST-PROCESSING. + 147| ENDIF. + 148| + 149| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 150| BINARY SEARCH. + 151| + 152| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 153| TRANSLATE TO UPPER CASE. + 154| ENDIF. + 155| + 156| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 157| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 158| INTO LV_CONVFUNC. + 159| + 160| CALL FUNCTION LV_CONVFUNC + 161| EXPORTING + 162| INPUT = + 163| IMPORTING + 164| OUTPUT = + 165| EXCEPTIONS + 166| OTHERS = 1. + 167| ENDIF. + 168| + 169| CASE GS_UPLD_FCAT-DATATYPE. + 170| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 171| 'DEC' OR 'CURR'. + 172| PERFORM BDC_CURR USING . + 173| WHEN 'DATS'. + 174| PERFORM BDC_DATE USING . + 175| ENDCASE. + 176| + 177| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 178| TO . + 179| + 180| IF SY-SUBRC NE 0. + 181| MESSAGE S000 WITH 'Field assign Fail.'. + 182| LEAVE LIST-PROCESSING. + 183| ENDIF. + 184| + 185| TRY . + 186| = . + 187| + 188| CATCH CX_ROOT INTO LF_OREF. + 189| LV_TEXT = LF_OREF->GET_TEXT( ). + 190| CONCATENATE LV_TEXT GS_UPLD_FCAT-FIELDNAME 'Type conversion error :' + 191| INTO LV_TEXT. + 192| MESSAGE S000 WITH LV_TEXT. + 193| LEAVE LIST-PROCESSING. + 194| ENDTRY. + 195| ENDLOOP. + 196| + 197| GS_DATA-STATUS = GC_STATUS_INIT. + 198| + 199| APPEND GS_DATA TO GT_DATA. + 200| CLEAR GS_DATA. + 201| CLEAR : LT_LOWERCASE. + 202| + 203| ENDLOOP. +``` + +- **EN**: For each uploaded Excel row assign every column by field catalog position, upper-case values whose domain disallows lowercase, call CONVERSION_EXIT_xxx_INPUT dynamically when a conversion exit exists, normalize numeric types via BDC_CURR and dates via BDC_DATE, move the value into GS_DATA (abort on type conversion exception) and append the row to GT_DATA with initial status. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: CONVERSION_EXIT_*_INPUT, BDC_CURR, BDC_DATE, GT_DATA, GT_UPLD_FCAT +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 숫자 형식 변환, 날짜 형식 변환, 대문자 변환, 형 변환 오류 +- English: Excel Transfer, Conversion Exit, Numeric Conversion, Date Conversion, Type Conversion Error +- 정의부(복사 시 함께 필요): [``](#decl-zcoc2040top-49--gf_uploadt-), [``](#decl-zcoc2040top-50--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc2040top-55-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc2040top-56-gs_upld_fcat), [``](#decl-zcoc2040f01-118--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc2040f01-113-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc2040f01-120-lv_convfunc), [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`GS_DATA`](#decl-zcoc2040top-76-gs_data), [``](#decl-zcoc2040f01-119--fs_data_field-), [`LF_OREF`](#decl-zcoc2040f01-121-lf_oref), [`LV_TEXT`](#decl-zcoc2040f01-122-lv_text) 외 1건 +- 위치: `abap://ZCOC2040/ZCOC2040F01#L139-L203` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC2040F01` L214-L322 (109줄) + +*업로드된 GT_DATA 각 행의 구분값(매출원가/장려금/수수료), 품목(중) 코드 입력 및 T2505 존재 여부, 품목+구분 중복을 검증해 오류 행에 빨간 상태·메시지를 남기고 업로드 오류 플래그를 세운다.* + +> 이 unit 의 조각 3개가 89/109줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 구분(GUBUN) 텍스트 첫 글자가 매/장/수(GC_GUBUN1~3)가 아니면 오류 메시지(F04)와 빨간 상태를 부여하고 GUBUN 셀을 빨갛게 표시하며 GV_UPLOAD_ERROR를 세운다. + +```abap + 224| IF NOT ( GT_DATA-GUBUN(1) = GC_GUBUN1 OR GT_DATA-GUBUN(1) = GC_GUBUN2 + 225| OR GT_DATA-GUBUN(1) = GC_GUBUN3 ). + 226| GT_DATA-MESSAGE = '구분값은 ''매출원가''과 ''장려금'' ''수수료'' 텍스트만 넣어주십시오.'(F04). + 227| GT_DATA-STATUS = GC_STATUS_RED. + 228| GV_UPLOAD_ERROR = 'X'. + 229| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. + 230| PERFORM ADD_DATA_MESSAGE USING 'E' + 231| GT_DATA-GUBUN + 232| GT_DATA-MESSAGE. + 233| ENDIF. +``` + +- **EN**: Validate that the first character of GUBUN is one of the allowed categories (cost of sales, incentive, commission); otherwise mark the row red with message F04, highlight the GUBUN cell and set the upload error flag. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: GT_DATA, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 구분값 검증, 매출원가, 장려금, 수수료, 업로드 오류 +- English: Category Validation, Cost of Sales, Incentive, Commission, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`GC_GUBUN1`](#decl-zcoc2040top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2040top-36-gc_gubun2), [`GC_GUBUN3`](#decl-zcoc2040top-37-gc_gubun3), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2040top-22-gv_upload_error) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L224-L233` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] 품목(중) 코드 WW220가 비어 있거나 품목(중) 마스터 GT_T2505(T2505)에 존재하지 않으면 오류 메시지(F05/F06)와 빨간 상태를 부여하고 WW220 셀을 강조하며 업로드 오류 플래그를 세운다. + +```abap + 235| IF GT_DATA-WW220 IS INITIAL. + 236| GT_DATA-MESSAGE = '품목(중) 코드가 입력되지 않았습니다.'(F05). + 237| GT_DATA-STATUS = GC_STATUS_RED. + 238| GV_UPLOAD_ERROR = 'X'. + 239| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 240| PERFORM ADD_DATA_MESSAGE USING 'E' + 241| GT_DATA-WW220 + 242| GT_DATA-MESSAGE. + 243| ENDIF. + 244| + 245| READ TABLE GT_T2505 WITH KEY WW220 = GT_DATA-WW220 + 246| BINARY SEARCH. + 247| + 248| IF SY-SUBRC NE 0. + 249| GT_DATA-MESSAGE = '품목(중) 코드가 존재하지 않습니다.'(F06). + 250| GT_DATA-STATUS = GC_STATUS_RED. + 251| GV_UPLOAD_ERROR = 'X'. + 252| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 253| PERFORM ADD_DATA_MESSAGE USING 'E' + 254| GT_DATA-WW220 + 255| GT_DATA-MESSAGE. + 256| ENDIF. +``` + +- **EN**: Check that product group WW220 is entered and exists in the T2505 master (GT_T2505); otherwise mark the row red with message F05/F06, highlight WW220 and set the upload error flag. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: T2505, GT_T2505, GT_DATA +- 업무 키워드: 품목 중분류 검증, 마스터 존재 확인, 필수 입력 +- English: Product Group, Master Data Check, T2505, Required Field +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2040top-22-gv_upload_error), [`GT_T2505`](#decl-zcoc2040top-105-gt_t2505) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L235-L256` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] GT_DATA 복사본 LT_CHECK에서 같은 품목(중) WW220와 같은 구분 첫 글자를 가진 행이 2건 이상이면 중복 품목(중) 데이터 오류(F07)로 빨간 상태·메시지를 부여하고 업로드 오류 플래그를 세운다(동일 검사를 GUBUN(2), GUBUN(3) 오프셋으로 두 번 더 반복). + +```abap + 258| LOOP AT LT_CHECK WHERE WW220 = GT_DATA-WW220 + 259| AND GUBUN(1) = GT_DATA-GUBUN(1). + 260| ADD 1 TO LV_CNT. + 261| IF LV_CNT = 2. + 262| EXIT. + 263| ENDIF. + 264| ENDLOOP. + 265| + 266| IF LV_CNT = 2. + 267| GT_DATA-MESSAGE = '중복 품목(중) 데이터가 업로드되었습니다.'(F07). + 268| GT_DATA-STATUS = GC_STATUS_RED. + 269| GV_UPLOAD_ERROR = 'X'. + 270| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 271| PERFORM ADD_DATA_MESSAGE USING 'E' + 272| GT_DATA-WW220 + 273| GT_DATA-MESSAGE. + 274| ENDIF. + 275| + 276| CLEAR : LV_CNT. + 277| + 278| LOOP AT LT_CHECK WHERE WW220 = GT_DATA-WW220 + 279| AND GUBUN(1) = GT_DATA-GUBUN(2). + 280| ADD 1 TO LV_CNT. + 281| IF LV_CNT = 2. + 282| EXIT. + 283| ENDIF. + 284| ENDLOOP. + 285| + 286| IF LV_CNT = 2. + 287| GT_DATA-MESSAGE = '중복 품목(중) 데이터가 업로드되었습니다.'(F07). + 288| GT_DATA-STATUS = GC_STATUS_RED. + 289| GV_UPLOAD_ERROR = 'X'. + 290| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 291| PERFORM ADD_DATA_MESSAGE USING 'E' + 292| GT_DATA-WW220 + 293| GT_DATA-MESSAGE. + 294| ENDIF. + 295| + 296| CLEAR : LV_CNT. + 297| + 298| LOOP AT LT_CHECK WHERE WW220 = GT_DATA-WW220 + 299| AND GUBUN(1) = GT_DATA-GUBUN(3). + 300| ADD 1 TO LV_CNT. + 301| IF LV_CNT = 2. + 302| EXIT. + 303| ENDIF. + 304| ENDLOOP. + 305| + 306| IF LV_CNT = 2. + 307| GT_DATA-MESSAGE = '중복 품목(중) 데이터가 업로드되었습니다.'(F07). + 308| GT_DATA-STATUS = GC_STATUS_RED. + 309| GV_UPLOAD_ERROR = 'X'. + 310| PERFORM SET_ERROR_FIELD_RED USING 'WW220'. + 311| PERFORM ADD_DATA_MESSAGE USING 'E' + 312| GT_DATA-WW220 + 313| GT_DATA-MESSAGE. + 314| ENDIF. +``` + +- **EN**: Detect duplicate rows with the same product group WW220 and category character in LT_CHECK (count reaches 2) and flag them as duplicate upload error F07 with red status; the same check is repeated using GUBUN offsets 2 and 3. +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: GT_DATA, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 중복 검사, 품목 중분류, 구분, 업로드 오류 +- English: Duplicate Check, Product Group, Category, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`LT_CHECK`](#decl-zcoc2040f01-215-lt_check), [`LV_CNT`](#decl-zcoc2040f01-216-lv_cnt), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc2040top-22-gv_upload_error) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L258-L314` · confidence 0.8 · `ZCOC2040#ZCOC2040F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC2040F01` L497-L523 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 504| IF P_VALUE IS NOT INITIAL. + 505| CONCATENATE P_VALUE ` : ` P_MESSAGE + 506| INTO LV_MESSAGE. + 507| ELSE. + 508| LV_MESSAGE = P_MESSAGE. + 509| ENDIF. + 510| + 511| IF P_STATUS = 'S'. + 512| LV_STATUS = GC_STATUS_GREEN. + 513| ELSEIF P_STATUS = 'E'. + 514| LV_STATUS = GC_STATUS_RED. + 515| ELSEIF P_STATUS = 'W'. + 516| LV_STATUS = GC_STATUS_YELLOW. + 517| ENDIF. + 518| GS_MSG_T_S-STATUS = LV_STATUS. + 519| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 520| + 521| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc2040f01-499-lv_message), [`LV_STATUS`](#decl-zcoc2040f01-500-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc2040top-86-gs_msg_t_s), [`GT_DATA`](#decl-zcoc2040top-61-gt_data) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L504-L521` · confidence 0.85 · `ZCOC2040#ZCOC2040F01#FORM#ADD_DATA_MESSAGE#C1` + +### FORM EDIT_DATA — `ZCOC2040F01` L532-L610 (79줄) + +*업로드된 GT_DATA에 구분 텍스트 첫 글자로 원가구분(COST_GUBUN 10/20/30)을 부여하고 구분별 월 합계를 COLLECT하며 품목(중) 명칭을 붙인 뒤, 행별 12개월 합계와 구분별 총합계를 계산한다.* + +> 이 unit 의 조각 2개가 64/79줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 각 행에 통화(GV_WAERS)를 넣고 구분(GUBUN) 첫 글자가 매/장/수(GC_GUBUN1~3)이면 COST_GUBUN을 10(매출원가)/20(장려금)/30(수수료)으로 매핑하며, 구분별로 품목·통화를 제외한 월별 금액을 GT_SUM_10/20/30_VV100에 COLLECT하고 GT_ZCOT0110에서 품목(중) 명칭(WW220_TEXT)을 보강한다. + +```abap + 544| LOOP AT GT_DATA. + 545| GT_DATA-REC_WAERS = GV_WAERS. + 546| + 547| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 548| GT_DATA-COST_GUBUN = '10'. + 549| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 550| GT_DATA-COST_GUBUN = '20'. + 551| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 552| GT_DATA-COST_GUBUN = '30'. + 553| ENDIF. + 554| + 555| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 556| MOVE-CORRESPONDING GT_DATA TO GT_SUM_10_VV100. + 557| CLEAR : GT_SUM_10_VV100-WW220. + 558| CLEAR : GT_SUM_10_VV100-REC_WAERS. + 559| COLLECT GT_SUM_10_VV100. + 560| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 561| MOVE-CORRESPONDING GT_DATA TO GT_SUM_20_VV100. + 562| CLEAR : GT_SUM_20_VV100-WW220. + 563| CLEAR : GT_SUM_20_VV100-REC_WAERS. + 564| COLLECT GT_SUM_20_VV100. + 565| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 566| MOVE-CORRESPONDING GT_DATA TO GT_SUM_30_VV100. + 567| CLEAR : GT_SUM_30_VV100-WW220. + 568| CLEAR : GT_SUM_30_VV100-REC_WAERS. + 569| COLLECT GT_SUM_30_VV100. + 570| ENDIF. + 571| + 572| READ TABLE GT_ZCOT0110 WITH KEY WW220 = GT_DATA-WW220 + 573| BINARY SEARCH. + 574| + 575| IF SY-SUBRC EQ 0. + 576| GT_DATA-WW220_TEXT = GT_ZCOT0110-WW220_TEXT. + 577| ENDIF. + 578| + 579| MODIFY GT_DATA. + 580| CLEAR : GT_DATA, GT_ZCOT0090, GT_SUM_10_VV100. + 581| ENDLOOP. +``` + +- **EN**: Set currency, map the first character of GUBUN to cost category COST_GUBUN 10 (cost of sales), 20 (incentive) or 30 (commission), COLLECT monthly amounts per category into GT_SUM_10/20/30_VV100 and add the product group text from GT_ZCOT0110. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA, GT_ZCOT0110, ZCOT0110, GT_SUM_10_VV100, GT_SUM_20_VV100, GT_SUM_30_VV100 +- 업무 키워드: 원가구분, 매출원가, 장려금, 수수료, 구분별 합계, 품목 중분류 명칭 +- English: Cost Category, Cost of Sales, Incentive, Commission, COLLECT Sum, Product Group Text +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_GUBUN1`](#decl-zcoc2040top-35-gc_gubun1), [`GC_GUBUN2`](#decl-zcoc2040top-36-gc_gubun2), [`GC_GUBUN3`](#decl-zcoc2040top-37-gc_gubun3), [`GT_SUM_10_VV100`](#decl-zcoc2040top-89-gt_sum_10_vv100), [`GT_SUM_20_VV100`](#decl-zcoc2040top-90-gt_sum_20_vv100), [`GT_SUM_30_VV100`](#decl-zcoc2040top-91-gt_sum_30_vv100), [`GT_ZCOT0110`](#decl-zcoc2040top-108-gt_zcot0110), [`GT_ZCOT0090`](#decl-zcoc2040top-101-gt_zcot0090) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L544-L581` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#EDIT_DATA#C1` + +#### [calculation] 각 행의 MONTH01~12를 동적 ASSIGN으로 합산해 연간 합계(SUM)를 구하고 구분별 총합계(GV_VV110_10/20/30_SUM)를 누적한 뒤 품목(중)·원가구분 순으로 정렬한다. + +```abap + 583| LOOP AT GT_DATA. + 584| CLEAR : LV_SUM. + 585| DO 12 TIMES. + 586| LV_NC = SY-INDEX. + 587| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD. + 588| ASSIGN (LV_FIELD) TO . + 589| + 590| IF SY-SUBRC EQ 0. + 591| LV_SUM = LV_SUM + . + 592| ENDIF. + 593| ENDDO. + 594| + 595| GT_DATA-SUM = LV_SUM. + 596| + 597| IF GT_DATA-GUBUN(1) = GC_GUBUN1. + 598| GV_VV110_10_SUM = GV_VV110_10_SUM + LV_SUM. + 599| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN2. + 600| GV_VV110_20_SUM = GV_VV110_20_SUM + LV_SUM. + 601| ELSEIF GT_DATA-GUBUN(1) = GC_GUBUN3. + 602| GV_VV110_30_SUM = GV_VV110_30_SUM + LV_SUM. + 603| ENDIF. + 604| + 605| MODIFY GT_DATA. CLEAR : GT_DATA. + 606| ENDLOOP. + 607| + 608| SORT GT_DATA BY WW220 COST_GUBUN. +``` + +- **EN**: Sum MONTH01-12 of each row via dynamic ASSIGN into the yearly SUM field, accumulate category totals GV_VV110_10/20/30_SUM, and sort GT_DATA by product group and cost category. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA +- 업무 키워드: 연간 합계, 월별 합산, 구분별 총합계, 정렬 +- English: Yearly Total, Monthly Sum, Category Total +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`LV_SUM`](#decl-zcoc2040f01-536-lv_sum), [`LV_NC`](#decl-zcoc2040f01-534-lv_nc), [`LV_FIELD`](#decl-zcoc2040f01-533-lv_field), [``](#decl-zcoc2040f01-535--fs_value-), [`GC_GUBUN1`](#decl-zcoc2040top-35-gc_gubun1), [`GV_VV110_10_SUM`](#decl-zcoc2040top-110-gv_vv110_10_sum), [`GC_GUBUN2`](#decl-zcoc2040top-36-gc_gubun2), [`GV_VV110_20_SUM`](#decl-zcoc2040top-111-gv_vv110_20_sum), [`GC_GUBUN3`](#decl-zcoc2040top-37-gc_gubun3), [`GV_VV110_30_SUM`](#decl-zcoc2040top-112-gv_vv110_30_sum) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L583-L608` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#EDIT_DATA#C2` + +### FORM CONVERT_KRW_DATA — `ZCOC2040F01` L808-L828 (21줄) + +*필드카탈로그에서 통화(CURR) 타입 필드를 찾아 GT_DATA 각 행의 금액을 CONV_DB_WAERS로 내부 통화형식으로 변환한다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT의 CURR 타입 필드마다 GT_DATA 행에 동적 ASSIGN하여 CONV_DB_WAERS로 통화(GV_WAERS) 기준 내부 금액 형식으로 변환한다. + +```abap + 814| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 815| WHERE DATATYPE = 'CURR'. + 816| + 817| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 818| INTO LV_FIELD. + 819| + 820| LOOP AT GT_DATA ASSIGNING . + 821| ASSIGN (LV_FIELD) TO . + 822| + 823| IF SY-SUBRC EQ 0. + 824| PERFORM CONV_DB_WAERS USING GV_WAERS. + 825| ENDIF. + 826| ENDLOOP. + 827| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the GT_DATA amount and convert it to internal currency format via CONV_DB_WAERS. +- 호출(파서): CONV_DB_WAERS +- SAP 객체: LVC_S_FCAT +- 업무 키워드: 통화 변환, 내부 금액 형식, 동적 필드 +- English: Currency conversion, Internal format, Field symbol +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc2040top-44-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2040f01-809-ls_fieldcat), [`LV_FIELD`](#decl-zcoc2040f01-812-lv_field), [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [``](#decl-zcoc2040f01-811--fs_data-), [``](#decl-zcoc2040f01-810--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L814-L827` · confidence 0.85 · `ZCOC2040#ZCOC2040F01#FORM#CONVERT_KRW_DATA#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### EVENT END-OF-SELECTION — `ZCOC2040` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data) +- 위치: `abap://ZCOC2040/ZCOC2040#L57-L67` · confidence 0.85 · `ZCOC2040#ZCOC2040#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC2040/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC2040/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC2040/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC2040/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc2040top-130-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC2040/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC2040#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC2040#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs) +- 위치: `abap://ZCOC2040/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC2040#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC2040F01` L433-L488 (56줄) + +*ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 행 번호로 GT_DATA를 읽고 GT_LOG_POP 필드카탈로그의 컬럼명(상태/메시지)을 설정한 뒤 MSG_LIST를 LT_POPUP으로 옮겨 팝업 ALV(W_POPUP_GRID->SHOW_DATA)로 오류 로그를 표시한다. + +```abap + 445| CHECK P_ROW CO '0123456789 '. + 446| + 447| READ TABLE GT_DATA INDEX P_ROW. + 448| + 449| CHECK SY-SUBRC EQ 0. + 450| + 451| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT + 452| USING 'GT_LOG_POP'. + 453| + 454| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. + 455| + 456| CASE LS_FIELDCAT-FIELDNAME. + 457| WHEN 'STATUS'. + 458| LS_FIELDCAT-COLTEXT = '상태'(F10). + 459| WHEN 'MESSAGE'. + 460| LS_FIELDCAT-COLTEXT = '메시지'(F11). + 461| ENDCASE. + 462| + 463| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. + 464| ENDLOOP. + 465| + 466| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 467| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 468| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 469| APPEND LT_POPUP. + 470| CLEAR : LT_POPUP. + 471| ENDLOOP. + 472| + 473| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 474| + 475| CREATE OBJECT W_POPUP_GRID + 476| EXPORTING + 477| I_T_FIELDCATALOG = POPUP_FIELDCAT + 478| I_S_LAYOUT = LS_LAYO + 479| I_CAPTION = '' + 480| I_LEFT = 100 + 481| I_TOP = 150 + 482| I_HEIGHT = 400 + 483| I_WIDTH = 900. + 484| + 485| CALL METHOD W_POPUP_GRID->SHOW_DATA + 486| EXPORTING + 487| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Read the selected GT_DATA row, build a popup field catalog for GT_LOG_POP and show its MSG_LIST entries in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): GET_FCAT_LIKE_ITAB, SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, ALV 팝업 +- English: Error Log, Popup ALV, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc2040f01-434-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc2040f01-437-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc2040top-86-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc2040top-78-gt_log_pop), [`LT_POPUP`](#decl-zcoc2040f01-436-lt_popup), [`LS_LAYO`](#decl-zcoc2040f01-435-ls_layo), [`W_POPUP_GRID`](#decl-zcoc2040top-84-w_popup_grid) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L445-L487` · confidence 0.8 · `ZCOC2040#ZCOC2040F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM UPLOAD_EXCEL_DATA — `ZCOC2040F01` L329-L347 (19줄) + +*업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FILE_EXISTS로 파일이 없으면 'File Not Exists' 오류로 중단하고, 있으면 UPLOAD_DATA를 1열·2행부터 256열·65536행까지로 호출해 GT_UPLOAD/GS_UPLOAD에 엑셀 데이터를 적재한다. + +```abap + 332| PERFORM FILE_EXISTS USING P_NAME L_EXISTS. + 333| + 334| IF L_EXISTS = ABAP_FALSE. + 335| MESSAGE S000 DISPLAY LIKE 'E' WITH 'File Not Exists'. + 336| LEAVE LIST-PROCESSING. + 337| EXIT. + 338| ENDIF. + 339| + 340| PERFORM UPLOAD_DATA USING 'GT_UPLOAD[]' + 341| 'GS_UPLOAD' + 342| P_NAME + 343| 1 "S_COL-LOW + 344| 2 "S_ROW-LOW + 345| 256 "S_COL-HIGH + 346| 65536. "S_ROW-HIGH. +``` + +- **EN**: Abort with an error if the file is missing, otherwise call UPLOAD_DATA to load the Excel sheet from row 2 (skipping the header) into GT_UPLOAD. +- 호출(파서): FILE_EXISTS, UPLOAD_DATA +- SAP 객체: FILE_EXISTS, UPLOAD_DATA, GT_UPLOAD +- 업무 키워드: 엑셀 업로드, 파일 존재 확인, 헤더 행 제외 +- English: Excel Upload, File Check +- 정의부(복사 시 함께 필요): [`L_EXISTS`](#decl-zcoc2040f01-330-l_exists) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L332-L346` · confidence 0.85 · `ZCOC2040#ZCOC2040F01#FORM#UPLOAD_EXCEL_DATA#C1` + +### FORM EXECUTE_SAVE — `ZCOC2040F01` L401-L425 (25줄) + +*중복 저장을 막고 '매출원가계획을 입력하시겠습니까?' 확인 팝업 후 PERFORM_SAVE로 ZCOT0200 저장을 실행한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 저장된 경우 오류 메시지로 중단하고, POPUP_TO_CONFIRM_02 확인(J) 후 저장 플래그를 세우고 PERFORM_SAVE를 호출한다. + +```abap + 406| IF GV_ALREADY_POST = 'X'. + 407| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 저장하였습니다.'(F08). + 408| EXIT. + 409| ENDIF. + 410| + 411| IF GV_UPLOAD_ERROR = 'X'. + 412| * PERFORM PGM_MSG USING 'F11' 'E'. + 413| ENDIF. + 414| + 415| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 416| '매출원가계획을 입력하시겠습니까?'(F09) '' + 417| CHANGING L_ANSWER. + 418| IF L_ANSWER <> 'J'. + 419| EXIT. + 420| ENDIF. + 421| + 422| GV_ALREADY_POST = 'X'. + 423| PERFORM PERFORM_SAVE. +``` + +- **EN**: Block duplicate save, ask for confirmation via POPUP_TO_CONFIRM_02 and then run PERFORM_SAVE. +- 호출(파서): POPUP_TO_CONFIRM_02, PERFORM_SAVE +- SAP 객체: ZCOT0200 +- 업무 키워드: 중복 저장 방지, 확인 팝업, 매출원가 계획 +- English: Duplicate check, Confirmation popup, Save +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc2040top-23-gv_already_post), [`GV_UPLOAD_ERROR`](#decl-zcoc2040top-22-gv_upload_error), [`L_ANSWER`](#decl-zcoc2040f01-402-l_answer) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L406-L423` · confidence 0.85 · `ZCOC2040#ZCOC2040F01#FORM#EXECUTE_SAVE#C1` + +### FORM PERFORM_SAVE — `ZCOC2040F01` L738-L799 (62줄) + +*검증을 통과한 업로드 데이터(GT_DATA)의 월별 금액을 천원에서 원 단위로 환산해 ZCOT0210 구조로 만든 뒤 해당 관리회계영역·연도의 기존 계획을 삭제하고 새로 저장하며 결과 상태를 표시한다.* + +> 이 unit 의 조각 2개가 46/62줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_DATA 각 행의 MONTH01~12 금액을 동적 ASSIGN으로 LT_ZCOT0210의 월 필드에 옮기며 CONVERT_1000_U로 천원 단위를 원 단위로 환산하고, 관리회계영역·통화·품목(중) WW220·회계연도·원가구분(COST_GUBUN)을 채워 저장용 테이블을 만든다. + +```abap + 751| LOOP AT GT_DATA. + 752| DO 12 TIMES. + 753| LV_NC = SY-INDEX. + 754| CONCATENATE 'GT_DATA-MONTH' LV_NC INTO LV_FIELD1. + 755| ASSIGN (LV_FIELD1) TO . + 756| IF SY-SUBRC EQ 0. + 757| CONCATENATE 'LT_ZCOT0210-MONTH' LV_NC INTO LV_FIELD2. + 758| + 759| ASSIGN (LV_FIELD2) TO . + 760| IF SY-SUBRC EQ 0. + 761| = . + 762| PERFORM CONVERT_1000_U USING . + 763| ENDIF. + 764| ENDIF. + 765| ENDDO. + 766| + 767| LT_ZCOT0210-KOKRS = P_KOKRS. + 768| LT_ZCOT0210-REC_WAERS = GV_WAERS. + 769| LT_ZCOT0210-WW220 = GT_DATA-WW220. + 770| LT_ZCOT0210-GJAHR = P_GJAHR. + 771| + 772| LT_ZCOT0210-COST_GUBUN = GT_DATA-COST_GUBUN. + 773| + 774| APPEND LT_ZCOT0210. + 775| CLEAR : LT_ZCOT0210. + 776| ENDLOOP. +``` + +- **EN**: For each GT_DATA row copy MONTH01-12 amounts into the ZCOT0210 structure via dynamic ASSIGN, converting from thousand KRW to KRW with CONVERT_1000_U, and fill controlling area, currency, product group WW220, fiscal year and cost category COST_GUBUN. +- 호출(파서): CONVERT_1000_U +- SAP 객체: ZCOT0210, CONVERT_1000_U, GT_DATA +- 업무 키워드: 매출원가 계획, 월별 금액, 천원 단위 환산, 품목 중분류, 원가구분 +- English: Cost of Sales Plan, Monthly Amount, Unit Conversion, Product Group, Cost Category +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`LV_NC`](#decl-zcoc2040f01-741-lv_nc), [`LV_FIELD1`](#decl-zcoc2040f01-739-lv_field1), [``](#decl-zcoc2040f01-743--fs_value1-), [`LV_FIELD2`](#decl-zcoc2040f01-740-lv_field2), [``](#decl-zcoc2040f01-744--fs_value2-), [`LT_ZCOT0210`](#decl-zcoc2040f01-745-lt_zcot0210), [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`P_GJAHR`](#decl-zcoc2040top-127-p_gjahr) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L751-L776` · confidence 0.9 · `ZCOC2040#ZCOC2040F01#FORM#PERFORM_SAVE#C1` + +#### [db_write] 관리회계영역(P_KOKRS)·회계연도(P_GJAHR)의 기존 ZCOT0210 계획 데이터를 DELETE로 전부 지운 뒤 LT_ZCOT0210을 MODIFY로 저장하고, 성공/실패에 따라 S000 메시지와 GT_DATA의 상태 아이콘(초록/빨강)·메시지를 갱신하며 ALV 리프레시 플래그를 켠다. + +```abap + 778| IF LT_ZCOT0210[] IS NOT INITIAL. + 779| DELETE FROM ZCOT0210 WHERE KOKRS = P_KOKRS + 780| AND GJAHR = P_GJAHR. + 781| MODIFY ZCOT0210 FROM TABLE LT_ZCOT0210. + 782| + 783| IF SY-SUBRC EQ 0. + 784| MESSAGE S000 WITH '정상적으로 반영되었습니다.'(F12). + 785| LS_DATA-STATUS = GC_STATUS_GREEN. + 786| LS_DATA-MESSAGE = '정상적으로 반영되었습니다'(F12). + 787| ELSE. + 788| MESSAGE S000 WITH '저장 중 오류가 발생하였습니다.'(F13). + 789| LS_DATA-STATUS = GC_STATUS_RED. + 790| LS_DATA-MESSAGE = '저장 중 오류가 발생하였습니다'(F13). + 791| ENDIF. + 792| ENDIF. + 793| + 794| MODIFY GT_DATA FROM LS_DATA TRANSPORTING STATUS MESSAGE + 795| WHERE WW220 IS NOT INITIAL . + 796| + 797| GV_REFRESH = 'X'. +``` + +- **EN**: Delete existing ZCOT0210 plan rows for the controlling area and fiscal year, MODIFY the new rows from LT_ZCOT0210, issue a success or error message, update status icon and message on all GT_DATA rows and set the ALV refresh flag. +- 테이블(파서): read - / write [ZCOT0210](/tables/ZCOT0210.md), [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0210, GT_DATA +- 업무 키워드: 계획 저장, 전체 삭제 후 재저장, 저장 결과 메시지, 상태 아이콘 +- English: Database Update, Delete and Modify, Plan Data Save, Status Message +- 정의부(복사 시 함께 필요): [`LT_ZCOT0210`](#decl-zcoc2040f01-745-lt_zcot0210), [`P_KOKRS`](#decl-zcoc2040top-121-p_kokrs), [`P_GJAHR`](#decl-zcoc2040top-127-p_gjahr), [`GT_DATA`](#decl-zcoc2040top-61-gt_data), [`LS_DATA`](#decl-zcoc2040f01-746-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) +- 위치: `abap://ZCOC2040/ZCOC2040F01#L778-L797` · confidence 0.95 · `ZCOC2040#ZCOC2040F01#FORM#PERFORM_SAVE#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC2040I01` L6-L30 (25줄) + +*화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드가 BACK/CANC/EXIT이면 ALV 컨테이너를 해제하고 화면을 종료하며, &SAVE이면 EXECUTE_SAVE로 지점별 매출 계획을 ZCOT0160/ZCOT0170에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&SAVE'. + 24| PERFORM EXECUTE_SAVE. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 0100 function codes: free ALV containers and leave on BACK/EXIT, run EXECUTE_SAVE to store the sales plan on &SAVE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_SAVE +- SAP 객체: ZCOT0160, ZCOT0170 +- 업무 키워드: 사용자 명령, 매출 계획 저장, 화면 종료 +- English: User Command, PAI, Save +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc2040top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc2040c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC2040/ZCOC2040I01#L9-L28` · confidence 0.85 · `ZCOC2040#ZCOC2040I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (345건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC2040C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc2040c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC2040TOP` (55건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc2040top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc2040top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc2040top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc2040top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc2040top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc2040top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc2040top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc2040top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc2040top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc2040top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc2040top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc2040top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc2040top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc2040top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcoc2040top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcoc2040top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0290'. +``` + +#### GC_SMW0 — constants · L32-L32 {#decl-zcoc2040top-32-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC2040'. +``` + +#### GC_GUBUN1 — constants · L35-L35 {#decl-zcoc2040top-35-gc_gubun1} + +```abap +CONSTANTS : GC_GUBUN1(1) TYPE C VALUE '매'. "매출원가 +``` + +#### GC_GUBUN2 — constants · L36-L36 {#decl-zcoc2040top-36-gc_gubun2} + +```abap +CONSTANTS : GC_GUBUN2(1) TYPE C VALUE '장'. "장려금 +``` + +#### GC_GUBUN3 — constants · L37-L37 {#decl-zcoc2040top-37-gc_gubun3} + +```abap +CONSTANTS : GC_GUBUN3(1) TYPE C VALUE '수'. "수수료 +``` + +#### GC_MEINS — constants · L38-L38 {#decl-zcoc2040top-38-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE COSP-MEINH VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L44-L44 {#decl-zcoc2040top-44-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L49-L49 {#decl-zcoc2040top-49--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L50-L50 {#decl-zcoc2040top-50--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L52-L52 {#decl-zcoc2040top-52-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L53-L53 {#decl-zcoc2040top-53-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L55-L55 {#decl-zcoc2040top-55-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L56-L56 {#decl-zcoc2040top-56-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L61-L74 {#decl-zcoc2040top-61-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0290. + +DATA : +WW220_TEXT LIKE ZCOT0090-WW120_TEXT, +SUM LIKE ZCOT0200-MONTH12, +COST_GUBUN LIKE ZCOT0200-COST_GUBUN, + +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +CELLTAB TYPE LVC_T_STYL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L76-L76 {#decl-zcoc2040top-76-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L78-L81 {#decl-zcoc2040top-78-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L84-L84 {#decl-zcoc2040top-84-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L86-L86 {#decl-zcoc2040top-86-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L88-L88 {#decl-zcoc2040top-88-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE T001-BUKRS. +``` + +#### GT_SUM_10_VV100 — data · L89-L89 {#decl-zcoc2040top-89-gt_sum_10_vv100} + +```abap +DATA : GT_SUM_10_VV100 LIKE ZCOT0210 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_20_VV100 — data · L90-L90 {#decl-zcoc2040top-90-gt_sum_20_vv100} + +```abap +DATA : GT_SUM_20_VV100 LIKE ZCOT0210 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SUM_30_VV100 — data · L91-L91 {#decl-zcoc2040top-91-gt_sum_30_vv100} + +```abap +DATA : GT_SUM_30_VV100 LIKE ZCOT0210 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L94-L94 {#decl-zcoc2040top-94-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L95-L95 {#decl-zcoc2040top-95-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L98-L98 {#decl-zcoc2040top-98-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L99-L99 {#decl-zcoc2040top-99-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L100-L100 {#decl-zcoc2040top-100-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L101-L101 {#decl-zcoc2040top-101-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L103-L103 {#decl-zcoc2040top-103-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L104-L104 {#decl-zcoc2040top-104-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L105-L105 {#decl-zcoc2040top-105-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L106-L106 {#decl-zcoc2040top-106-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L107-L107 {#decl-zcoc2040top-107-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L108-L108 {#decl-zcoc2040top-108-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GV_VV110_10_SUM — data · L110-L110 {#decl-zcoc2040top-110-gv_vv110_10_sum} + +```abap +DATA : GV_VV110_10_SUM LIKE ZCOT0200-MONTH12. " 매출원가 +``` + +#### GV_VV110_20_SUM — data · L111-L111 {#decl-zcoc2040top-111-gv_vv110_20_sum} + +```abap +DATA : GV_VV110_20_SUM LIKE ZCOT0200-MONTH12. " 장려금 +``` + +#### GV_VV110_30_SUM — data · L112-L112 {#decl-zcoc2040top-112-gv_vv110_30_sum} + +```abap +DATA : GV_VV110_30_SUM LIKE ZCOT0200-MONTH12. " 수수료 +``` + +#### P_KOKRS — parameter · L121-L122 {#decl-zcoc2040top-121-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L127-L128 {#decl-zcoc2040top-127-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### P_FNAME — parameter · L130-L131 {#decl-zcoc2040top-130-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC2040_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC2040F01` (34건) + +#### L_UCOMM — data · unit 로컬 · L35-L35 {#decl-zcoc2040f01-35-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L113-L116 {#decl-zcoc2040f01-113-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L118-L118 {#decl-zcoc2040f01-118--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L119-L119 {#decl-zcoc2040f01-119--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L120-L120 {#decl-zcoc2040f01-120-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L121-L121 {#decl-zcoc2040f01-121-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L122-L122 {#decl-zcoc2040f01-122-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_CHECK — data · unit 로컬 · L215-L215 {#decl-zcoc2040f01-215-lt_check} + +```abap + DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L216-L216 {#decl-zcoc2040f01-216-lv_cnt} + +```abap + DATA : LV_CNT TYPE I. +``` + +#### L_EXISTS — data · unit 로컬 · L330-L330 {#decl-zcoc2040f01-330-l_exists} + +```abap + DATA : L_EXISTS TYPE ABAP_BOOL. +``` + +#### L_ANSWER — data · unit 로컬 · L402-L402 {#decl-zcoc2040f01-402-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L434-L434 {#decl-zcoc2040f01-434-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L435-L435 {#decl-zcoc2040f01-435-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L436-L436 {#decl-zcoc2040f01-436-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L437-L437 {#decl-zcoc2040f01-437-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LV_MESSAGE — data · unit 로컬 · L499-L499 {#decl-zcoc2040f01-499-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L500-L500 {#decl-zcoc2040f01-500-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_FIELD — data · unit 로컬 · L533-L533 {#decl-zcoc2040f01-533-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L534-L534 {#decl-zcoc2040f01-534-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L535-L535 {#decl-zcoc2040f01-535--fs_value-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_SUM — data · unit 로컬 · L536-L536 {#decl-zcoc2040f01-536-lv_sum} + +```abap + DATA : LV_SUM LIKE ZCOT0160-MONTH01. +``` + +#### LV_STRNM — data · unit 로컬 · L619-L619 {#decl-zcoc2040f01-619-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L620-L620 {#decl-zcoc2040f01-620-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +#### LV_FIELD1 — data · unit 로컬 · L739-L739 {#decl-zcoc2040f01-739-lv_field1} + +```abap + DATA : LV_FIELD1(30) TYPE C. +``` + +#### LV_FIELD2 — data · unit 로컬 · L740-L740 {#decl-zcoc2040f01-740-lv_field2} + +```abap + DATA : LV_FIELD2(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L741-L741 {#decl-zcoc2040f01-741-lv_nc} + +```abap + DATA : LV_NC(2) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L743-L743 {#decl-zcoc2040f01-743--fs_value1-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L744-L744 {#decl-zcoc2040f01-744--fs_value2-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LT_ZCOT0210 — data · unit 로컬 · L745-L745 {#decl-zcoc2040f01-745-lt_zcot0210} + +```abap + DATA : LT_ZCOT0210 LIKE ZCOT0210 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_DATA — data · unit 로컬 · L746-L746 {#decl-zcoc2040f01-746-ls_data} + +```abap + DATA : LS_DATA LIKE GT_DATA. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L809-L809 {#decl-zcoc2040f01-809-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L810-L810 {#decl-zcoc2040f01-810--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L811-L811 {#decl-zcoc2040f01-811--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L812-L812 {#decl-zcoc2040f01-812-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC2040 L26-32 | 0 | INITIALIZATION 이벤트에서 선택화면 초기 설정(SET_DYNP)과 엑셀 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC2040 L33-35 | 0 | AT SELECTION-SCREEN에서 선택화면 기능 버튼 처리(CONTROL_FCXX)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC2040 L36-41 | 0 | AT SELECTION-SCREEN OUTPUT에서 화면 필드 속성 제어(LOOP_AT_SCREEN)를 호출하는 PBO 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC2040 L42-47 | 0 | 업로드 파일명(P_FNAME)의 F4 검색도움으로 F4_FNAME(파일 선택 다이얼로그)을 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOC2040 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC2040 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC2040C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC2040C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC2040C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC2040C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC2040C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC2040C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC2040C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC2040C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC2040C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC2040C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC2040C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC2040C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC2040C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC2040C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC2040C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC2040C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC2040C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC2040C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC2040C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC2040C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC2040C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC2040C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC2040C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC2040C01 L631-690 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC2040C01 L700-710 | 0 | | +| HANDLE_TOP_OF_PAGE | FORM | ZCOC2040C01 L719-724 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC2040F01 L6-15 | 0 | 선택화면에서 MG1 그룹 필드(관리회계영역 명칭 등)를 입력 불가로 만드는 LOOP AT SCREEN 화면 제어 루틴이다. | +| SET_DYNP | FORM | ZCOC2040F01 L22-25 | 0 | INITIALIZATION 시 SET_KOKRS_BASE로 관리회계영역 기본정보를 읽어 선택화면에 관리회계영역 명칭(P_BEZEI)을 표시하는 초기 설정 루틴이다. | +| CONTROL_FCXX | FORM | ZCOC2040F01 L34-45 | 1 | 선택화면 기능 버튼 FC01(엑셀 양식 다운로드)이 눌리면 Z_CO_OPEN_SMW0로 SMW0에 등록된 업로드 엑셀 양식(GC_SMW0)을 여는 처리다. | +| CHECK_INPUT | FORM | ZCOC2040F01 L54-61 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC2040F01 L67-82 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 업로드/저장 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC2040F01 L88-91 | 0 | 특성 마스터 적재(SET_CHARACTER_MASTER)와 엑셀 읽기·검증(READ_DATA)을 호출하는 메인 처리 서브루틴이다. | +| FC01_ACTIVE | FORM | ZCOC2040F01 L100-103 | 0 | 선택화면 기능키 01에 엑셀 양식 다운로드 버튼(ICON_XXL)을 SET_BTN_1000으로 활성화하는 화면 설정 루틴이다. | +| TRANSFER_GT_DATA | FORM | ZCOC2040F01 L112-204 | 2 | 동적 엑셀 수신 테이블 의 문자값을 업로드 구조 필드카탈로그(GT_UPLD_FCAT)에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 형식 변환을 거쳐 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC2040F01 L214-322 | 3 | 업로드된 GT_DATA 각 행의 구분값(매출원가/장려금/수수료), 품목(중) 코드 입력 및 T2505 존재 여부, 품목+구분 중복을 검증해 오류 행에 빨간 상태·메시지를 남기고 업로드 오류 플래그를 세운다. | +| UPLOAD_EXCEL_DATA | FORM | ZCOC2040F01 L329-347 | 1 | 업로드 파일 존재를 확인한 뒤 UPLOAD_DATA로 엑셀 2행부터 전체 범위를 GT_UPLOAD에 적재하는 FORM이다. | +| READ_DATA | FORM | ZCOC2040F01 L356-379 | 1 | 동적 업로드 테이블 생성, 엑셀 읽기, GT_DATA 이전, 검증, 편집·통화 변환까지 업로드 처리 흐름을 순서대로 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC2040F01 L387-395 | 0 | 검증 오류가 난 필드명을 LVC_S_SCOL 색상 6(빨강)으로 GT_DATA-F_COL에 추가해 ALV 셀을 빨간색으로 강조하는 보조 루틴이다. | +| EXECUTE_SAVE | FORM | ZCOC2040F01 L401-425 | 1 | 중복 저장을 막고 '매출원가계획을 입력하시겠습니까?' 확인 팝업 후 PERFORM_SAVE로 ZCOT0200 저장을 실행한다. | +| SHOW_ERROR_LOG | FORM | ZCOC2040F01 L433-488 | 1 | ALV에서 선택한 행의 검증 메시지 목록(MSG_LIST)을 상태·메시지 컬럼의 팝업 ALV Grid(W_POPUP_GRID)로 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC2040F01 L497-523 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC2040F01 L532-610 | 2 | 업로드된 GT_DATA에 구분 텍스트 첫 글자로 원가구분(COST_GUBUN 10/20/30)을 부여하고 구분별 월 합계를 COLLECT하며 품목(중) 명칭을 붙인 뒤, 행별 12개월 합계와 구분별 총합계를 계산한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC2040F01 L618-664 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| SET_CHARACTER_MASTER | FORM | ZCOC2040F01 L673-729 | 3 | 판매조직·품목 계층 마스터(T2500~T2508), 하이마트 CO 특성 마스터(ZCOT0080/ZCOT0090/ZCOT0110)와 관리회계영역의 회사코드(TKA02)를 내부테이블로 적재해 검증·명칭 보강에 사용한다. | +| PERFORM_SAVE | FORM | ZCOC2040F01 L738-799 | 2 | 검증을 통과한 업로드 데이터(GT_DATA)의 월별 금액을 천원에서 원 단위로 환산해 ZCOT0210 구조로 만든 뒤 해당 관리회계영역·연도의 기존 계획을 삭제하고 새로 저장하며 결과 상태를 표시한다. | +| CONVERT_KRW_DATA | FORM | ZCOC2040F01 L808-828 | 1 | 필드카탈로그에서 통화(CURR) 타입 필드를 찾아 GT_DATA 각 행의 금액을 CONV_DB_WAERS로 내부 통화형식으로 변환한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC2040I01 L6-30 | 1 | 화면 0100의 사용자 명령(BACK/EXIT 종료, &SAVE 매출 계획 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC2040O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC2040O01 L30-74 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC2040O01 L84-128 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC2040O01 L136-148 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC2040O01 L156-163 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC2040O01 L171-184 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC2040O01 L193-216 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC2040O01 L225-243 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC2040O01 L253-338 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC2040O01 L346-373 | 0 | | +| SET_HTML_TOP_OF_PAGE | FORM | ZCOC2040O01 L382-629 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC9010.md b/wiki/programs/ZCOC9010.md new file mode 100644 index 0000000..4a57eb2 --- /dev/null +++ b/wiki/programs/ZCOC9010.md @@ -0,0 +1,4894 @@ +--- +type: abap-program +title: "ZCOC9010 — 코스트센터 생성" +description: "코스트센터(Cost Center) 마스터를 엑셀 양식(ZCOS0040)으로 일괄 생성하는 CO-CCA 프로그램이다. 업로드 행마다 CSKS/CSKT/ONRKS로 기존 코스트센터 중복 여부, TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터 존재 여부를 검증한 뒤 BAPI_COSTCENTER_CREATEMULTIPLE을 행 단위로 호출하고 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 결과는 ALV에 상태 아이콘과 메시지(KS005)로 표시된다." +resource: "abap://ZCOC9010" +tags: ["코스트센터", "마스터생성", "엑셀업로드", "CO-CCA", "조직관리", "기능코드 분기", "코스트센터 생성 실행", "화면 종료", "BAPI 입력 매핑", "코스트센터 생성", "유효종료일", "회사코드", "동적 필드 복사", "BAPI 호출", "커밋", "롤백", "행 단위 처리", "결과 메시지", "중복 생성 방지", "확인 팝업"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:15+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CEPC", "CEPCT", "CSKS", "CSKT", "DD01L", "DD07T", "ONRKS", "T001", "TFKB", "TKA01", "TKA05", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTCENTER_CREATEMULTIPLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "b781003a5461978fe91fda083617d5154115afde53f7007fcc3040edabc354ad" +x-unit-count: 143 +x-chunk-count: 66 +x-declaration-count: 212 +--- + +## 업무 목적 + +코스트센터(Cost Center) 마스터를 엑셀 양식(ZCOS0040)으로 일괄 생성하는 CO-CCA 프로그램이다. 업로드 행마다 CSKS/CSKT/ONRKS로 기존 코스트센터 중복 여부, TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터 존재 여부를 검증한 뒤 BAPI_COSTCENTER_CREATEMULTIPLE을 행 단위로 호출하고 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 결과는 ALV에 상태 아이콘과 메시지(KS005)로 표시된다. + +## 주 흐름 + +1. 선택화면에서 회사코드(T001)·관리회계영역(TKA01) 텍스트를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 입력 여부를 확인하고 ALV 필드카탈로그·상태 변수를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 업로드 구조(ZCOS0040) 기반 동적 테이블을 만들고 엑셀 파일을 읽어 CONVERSION_EXIT·숫자/날짜 변환 후 GT_DATA로 이전한다 (PROCESS_DATA, READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA) +4. CSKS/CSKT/ONRKS, TKA05, TFKB, CEPC/CEPCT를 조회하여 코스트센터 기존재, 범주·기능영역·손익센터 존재 여부를 검증하고 오류 셀을 빨간색 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +5. 상태 아이콘을 초기화하여 ALV(화면 100)에 검증 결과를 표시한다 (EDIT_DATA) +6. 저장 버튼 시 확인 팝업 후 행별로 필드카탈로그 기반으로 BAPI0012_CCINPUTLIST에 값을 매핑한다 (EXECUTE_BAPI, TRANSFER_DATA_TO_BAPI) +7. BAPI_COSTCENTER_CREATEMULTIPLE 호출 후 RETURN이 없으면 COMMIT, 있으면 ROLLBACK하고 행 상태·메시지를 갱신한다 (RUN_BAPI, BUILD_MESSAGE_BAPI) +8. 행 더블클릭 시 해당 코스트센터의 메시지 로그를 팝업 ALV로 보여준다 (SHOW_ERROR_LOG) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 코스트센터 생성 데이터(구조 ZCOS0040 + 상태, 메시지, 메시지 리스트) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, RUN_BAPI / 소비: TRANSFER_DATA_TO_BAPI, RUN_BAPI, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0040 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_KOSTL_ST` — CSKS/CSKT/ONRKS 조인 - 기존 코스트센터 존재 검증 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_KOSAR / GT_FKBER / GT_CEPC_ST` — 코스트센터 범주(TKA05), 기능영역(TFKB), 손익센터(CEPC/CEPCT) 검증용 마스터 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `LT_COSTCENTERLIST` — BAPI0012_CCINPUTLIST - BAPI 입력 (VALID_TO 99991231, COMP_CODE=P_BUKRS) (채움: TRANSFER_DATA_TO_BAPI / 소비: RUN_BAPI) + +## 테이블 / 외부 호출 + +- read: AENR, CEPC, CEPCT, CSKS, CSKT, DD01L, DD07T, ONRKS, T001, TFKB, TKA01, TKA05, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTCENTER_CREATEMULTIPLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP + +## 로직 조각 (66건 / unit 58개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc9010top-117-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc9010top-126-p_kokrs) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC9010F01` L39-L53 (15줄) + +*선택화면 기능 버튼 FC01(엑셀 양식 다운로드)이 눌리면 Z_CO_OPEN_SMW0로 SMW0에 등록된 코스트센터 생성 업로드 양식(GC_SMW0)을 여는 처리다.* + +> 이 unit 의 조각 1개가 7/15줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSCRFIELDS-UCOMM이 FC01이면 Z_CO_OPEN_SMW0를 호출해 웹 리포지토리(SMW0) 문서 GC_SMW0(코스트센터 생성 Upload 양식)을 다운로드/오픈한다. + +```abap + 43| CASE L_UCOMM. + 44| WHEN 'FC01'. + 45| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 46| EXPORTING + 47| P_DOCNAM = GC_SMW0 + 48| P_TITLE = '코스트센터 생성 Upload 양식'(F02). + 49| ENDCASE. +``` + +- **EN**: When function code FC01 is pressed, call Z_CO_OPEN_SMW0 to open the cost center creation Excel template stored in the SMW0 web repository under GC_SMW0. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0, SSCRFIELDS +- 업무 키워드: 엑셀 양식 다운로드, SMW0 양식, 선택화면 버튼 +- English: Excel Template, SMW0, Selection Screen Function Key +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc9010f01-40-l_ucomm), [`GC_SMW0`](#decl-zcoc9010top-35-gc_smw0) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L43-L49` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC9010` L47-L54 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC9010/ZCOC9010#L48-L50` · confidence 0.8 · `ZCOC9010#ZCOC9010#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC9010F01` L62-L69 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 64| IF P_FNAME IS INITIAL. + 65| MESSAGE S000 DISPLAY LIKE 'E' WITH + 66| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 67| LEAVE LIST-PROCESSING. + 68| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9010top-132-p_fname) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L64-L68` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM READ_DATA — `ZCOC9010F01` L415-L437 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 418| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 419| * 2. 업로드 파일 취득 + 420| PERFORM UPLOAD_XLS_STRUCT TABLES + 421| USING P_FNAME " 파일명 + 422| 1 "S_COL-LOW + 423| 2 "S_ROW-LOW + 424| 256 "S_COL-HIGH + 425| 65536. "S_ROW-HIGH + 426| CHECK [] IS NOT INITIAL. + 427| *3. 인터널 테이블로 이전 + 428| PERFORM TRANSFER_GT_DATA. + 429| + 430| CHECK GT_DATA[] IS NOT INITIAL. + 431| + 432| "4. Validation + 433| PERFORM VALIDATION_CHECK. + 434| + 435| *5. 인터널 테이블 데이터 + 436| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc9010top-33-gc_upload_struct), [``](#decl-zcoc9010top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc9010top-132-p_fname), [`GT_DATA`](#decl-zcoc9010top-58-gt_data) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L418-L436` · confidence 0.8 · `ZCOC9010#ZCOC9010F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC9010F01` L709-L755 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 715| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 716| EXPORTING + 717| I_STRUCTURE_NAME = LV_STRNM + 718| I_BYPASSING_BUFFER = 'X' + 719| CHANGING + 720| CT_FIELDCAT = GT_UPLD_FCAT + 721| EXCEPTIONS + 722| INCONSISTENT_INTERFACE = 1 + 723| PROGRAM_ERROR = 2 + 724| OTHERS = 3. + 725| + 726| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 727| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 728| + 729| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 730| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 731| ENDIF. + 732| + 733| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 734| GS_UPLD_FCAT-INTLEN = '10'. + 735| ENDIF. + 736| + 737| " 올린 그대로 받기 위해 CHAR로 변환. + 738| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 739| GS_UPLD_FCAT-INTTYPE = 'C'. + 740| + 741| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 742| ENDLOOP. + 743| + 744| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 745| EXPORTING + 746| IT_FIELDCATALOG = LT_UPLD_FCAT + 747| IMPORTING + 748| EP_TABLE = GF_UPLOADT. + 749| + 750| ASSIGN GF_UPLOADT->* TO . + 751| + 752| CREATE DATA GF_UPLOADS LIKE LINE OF . + 753| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc9010f01-710-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc9010top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9010top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc9010f01-711-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc9010top-49-gf_uploadt), [``](#decl-zcoc9010top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc9010top-50-gf_uploads), [``](#decl-zcoc9010top-47--gf_uploads-) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L715-L753` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC9010F01` L129-L221 (93줄) + +*동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 75/93줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 구조 필드들의 도메인에 대해 DD01L에서 소문자 허용 여부(LOWERCASE)를 조회해 대문자 변환 대상 판단용 LT_LOWERCASE를 만든다. + +```abap + 145| SELECT DOMNAME LOWERCASE + 146| INTO TABLE LT_LOWERCASE + 147| FROM DD01L + 148| FOR ALL ENTRIES IN GT_UPLD_FCAT + 149| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 150| AND AS4LOCAL = 'A'. + 151| + 152| SORT LT_LOWERCASE. +``` + +- **EN**: Read the lowercase-allowed flag from DD01L for the domains of the upload structure fields to decide which values must be upper-cased. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L, GT_UPLD_FCAT +- 업무 키워드: 도메인 소문자 허용, 대문자 변환 기준 +- English: Domain, Lowercase Flag, DD01L +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc9010f01-130-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc9010top-52-gt_upld_fcat) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L145-L152` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 엑셀 수신 행의 각 컬럼을 필드카탈로그 순서로 ASSIGN COMPONENT하여 소문자 비허용 도메인은 대문자로 바꾸고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자형은 BDC_CURR, 날짜형은 BDC_DATE로 변환하고 길이 1 체크박스 필드도 대문자화한 뒤 GS_DATA로 옮겨(형 변환 예외는 메시지 후 종료) GT_DATA에 APPEND 한다. + +```abap + 154| LOOP AT INTO . + 155| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 156| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 157| TO . + 158| + 159| IF SY-SUBRC NE 0. + 160| MESSAGE S000 WITH 'Field assign Fail.'. + 161| LEAVE LIST-PROCESSING. + 162| ENDIF. + 163| + 164| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 165| BINARY SEARCH. + 166| + 167| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 168| TRANSLATE TO UPPER CASE. + 169| ENDIF. + 170| + 171| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 172| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 173| INTO LV_CONVFUNC. + 174| + 175| CALL FUNCTION LV_CONVFUNC + 176| EXPORTING + 177| INPUT = + 178| IMPORTING + 179| OUTPUT = + 180| EXCEPTIONS + 181| OTHERS = 1. + 182| ENDIF. + 183| + 184| CASE GS_UPLD_FCAT-DATATYPE. + 185| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 186| 'DEC' OR 'CURR'. + 187| PERFORM BDC_CURR USING . + 188| WHEN 'DATS'. + 189| PERFORM BDC_DATE USING . + 190| ENDCASE. + 191| "체크 박스 대문자 변경 + 192| IF GS_UPLD_FCAT-VALEXI = 'X' AND GS_UPLD_FCAT-INTLEN = '000001'. + 193| TRANSLATE TO UPPER CASE. + 194| ENDIF. + 195| + 196| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 197| TO . + 198| + 199| IF SY-SUBRC NE 0. + 200| MESSAGE S000 WITH 'Field assign Fail.'. + 201| LEAVE LIST-PROCESSING. + 202| ENDIF. + 203| + 204| TRY . + 205| = . + 206| + 207| CATCH CX_ROOT INTO LF_OREF. + 208| LV_TEXT = LF_OREF->GET_TEXT( ). + 209| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 210| 'Type conversion error :' LV_TEXT. + 211| LEAVE LIST-PROCESSING. + 212| ENDTRY. + 213| ENDLOOP. + 214| + 215| APPEND GS_DATA TO GT_DATA. + 216| CLEAR GS_DATA. + 217| + 218| CLEAR : LT_LOWERCASE. + 219| + 220| ENDLOOP. +``` + +- **EN**: For each uploaded Excel row assign every column by field catalog position, upper-case values whose domain disallows lowercase, call CONVERSION_EXIT_xxx_INPUT dynamically when present, normalize numeric types via BDC_CURR and dates via BDC_DATE, upper-case one-character checkbox fields, move into GS_DATA (abort on type conversion exception) and append to GT_DATA. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: CONVERSION_EXIT_*_INPUT, BDC_CURR, BDC_DATE, GT_DATA, ZCOS0040 +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 숫자 형식 변환, 날짜 형식 변환, 체크박스 대문자, 형 변환 오류 +- English: Excel Transfer, Conversion Exit, Numeric Conversion, Date Conversion, Type Conversion Error +- 정의부(복사 시 함께 필요): [``](#decl-zcoc9010top-46--gf_uploadt-), [``](#decl-zcoc9010top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc9010top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9010top-53-gs_upld_fcat), [``](#decl-zcoc9010f01-135--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc9010f01-130-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc9010f01-137-lv_convfunc), [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`GS_DATA`](#decl-zcoc9010top-71-gs_data), [``](#decl-zcoc9010f01-136--fs_data_field-), [`LF_OREF`](#decl-zcoc9010f01-138-lf_oref), [`LV_TEXT`](#decl-zcoc9010f01-139-lv_text) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L154-L220` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC9010F01` L231-L406 (176줄) + +*업로드된 코스트센터 생성 데이터에 대해 CSKS/CSKT/ONRKS로 기존 코스트센터 존재, TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터 존재 여부를 일괄 조회한 뒤 행별로 검증해 오류 행에 빨간 상태·메시지를 남긴다.* + +> 이 unit 의 조각 3개가 148/176줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 행의 코스트센터를 중복 제거한 뒤 CSKS·CSKT·ONRKS를 조인해 관리회계영역(P_KOKRS)에서 유효시작일(VALID_FROM) 시점에 이미 존재하는 코스트센터(KOSTL, OBJNR, 명칭)를 GT_KOSTL_ST에 조회한다(중복 생성 방지용). + +```abap + 241| CLEAR : LT_FORALL, LT_FORALL[]. + 242| LT_FORALL[] = GT_DATA[]. + 243| SORT LT_FORALL BY COSTCENTER. + 244| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 245| COMPARING COSTCENTER. + 246| + 247| SELECT A~KOSTL C~OBJNR B~KTEXT A~DATBI + 248| FROM CSKS AS A + 249| INNER JOIN CSKT AS B + 250| ON A~KOKRS = B~KOKRS + 251| AND A~KOSTL = B~KOSTL + 252| AND A~DATBI = B~DATBI + 253| INNER JOIN ONRKS AS C + 254| ON A~KOSTL = C~KOSTL + 255| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_ST + 256| FOR ALL ENTRIES IN LT_FORALL + 257| WHERE A~KOKRS = P_KOKRS + 258| AND A~KOSTL = LT_FORALL-COSTCENTER + 259| AND A~DATBI >= LT_FORALL-VALID_FROM + 260| AND A~DATAB <= LT_FORALL-VALID_FROM + 261| AND B~SPRAS = SY-LANGU. + 262| + 263| SORT GT_KOSTL_ST BY KOSTL OBJNR. +``` + +- **EN**: Deduplicate uploaded cost centers and select those already existing in CSKS joined with CSKT and ONRKS for the controlling area and valid on VALID_FROM into GT_KOSTL_ST, used to detect duplicate creation. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [ONRKS](/tables/ONRKS.md) / write - +- SAP 객체: CSKS, CSKT, ONRKS, GT_KOSTL_ST +- 업무 키워드: 코스트센터 기존재 확인, 유효기간, 오브젝트 번호, 중복 생성 방지 +- English: Cost Center Master, Existence Check, CSKS, Validity Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`LT_FORALL`](#decl-zcoc9010f01-232-lt_forall), [`GT_KOSTL_ST`](#decl-zcoc9010top-82-gt_kostl_st), [`P_KOKRS`](#decl-zcoc9010top-126-p_kokrs) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L241-L263` · confidence 0.95 · `ZCOC9010#ZCOC9010F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] 업로드 행의 코스트센터 범주(COSTCENTER_TYPE)는 TKA05, 기능영역(FUNC_AREA)은 TFKB, 손익센터(PROFIT_CTR)는 CEPC/CEPCT(현재 유효, 로그온 언어)에서 각각 FOR ALL ENTRIES로 존재하는 값만 GT_KOSAR/GT_FKBER/GT_CEPC_ST에 조회한다. + +```abap + 279| CLEAR : LT_FORALL, LT_FORALL[]. + 280| LT_FORALL[] = GT_DATA[]. + 281| SORT LT_FORALL BY COSTCENTER_TYPE. + 282| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 283| COMPARING COSTCENTER_TYPE. + 284| + 285| IF LT_FORALL[] IS NOT INITIAL. + 286| SELECT KOSAR FROM TKA05 + 287| INTO CORRESPONDING FIELDS OF TABLE GT_KOSAR + 288| FOR ALL ENTRIES IN LT_FORALL + 289| WHERE KOSAR = LT_FORALL-COSTCENTER_TYPE. + 290| SORT GT_KOSAR BY KOSAR. + 291| ENDIF. + 292| + 293| CLEAR : LT_FORALL, LT_FORALL[]. + 294| LT_FORALL[] = GT_DATA[]. + 295| SORT LT_FORALL BY FUNC_AREA. + 296| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 297| COMPARING FUNC_AREA. + 298| + 299| IF LT_FORALL[] IS NOT INITIAL. + 300| SELECT FKBER FROM TFKB + 301| INTO CORRESPONDING FIELDS OF TABLE GT_FKBER + 302| FOR ALL ENTRIES IN LT_FORALL + 303| WHERE FKBER = LT_FORALL-FUNC_AREA. + 304| SORT GT_FKBER BY FKBER. + 305| ENDIF. + 306| + 307| CLEAR : LT_FORALL, LT_FORALL[]. + 308| LT_FORALL[] = GT_DATA[]. + 309| SORT LT_FORALL BY PROFIT_CTR. + 310| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 311| COMPARING PROFIT_CTR. + 312| + 313| IF LT_FORALL[] IS NOT INITIAL. + 314| SELECT A~PRCTR B~KTEXT + 315| FROM CEPC AS A INNER JOIN CEPCT AS B + 316| ON A~KOKRS = B~KOKRS + 317| AND A~PRCTR = B~PRCTR + 318| AND A~DATBI = B~DATBI + 319| INTO CORRESPONDING FIELDS OF TABLE GT_CEPC_ST + 320| FOR ALL ENTRIES IN LT_FORALL + 321| WHERE A~KOKRS = P_KOKRS + 322| AND A~PRCTR = LT_FORALL-PROFIT_CTR + 323| AND A~DATBI >= SY-DATUM + 324| AND A~DATAB <= SY-DATUM + 325| AND B~SPRAS = SY-LANGU. + 326| SORT GT_CEPC_ST BY PRCTR. + 327| ENDIF. +``` + +- **EN**: Select existing cost center categories from TKA05, functional areas from TFKB and currently valid profit centers from CEPC/CEPCT for the distinct values in the upload into GT_KOSAR, GT_FKBER and GT_CEPC_ST. +- 테이블(파서): read [TKA05](/tables/TKA05.md), [TFKB](/tables/TFKB.md), [CEPC](/tables/CEPC.md), [CEPCT](/tables/CEPCT.md) / write - +- SAP 객체: TKA05, TFKB, CEPC, CEPCT +- 업무 키워드: 코스트센터 범주, 기능영역, 손익센터, 마스터 존재 확인 +- English: Cost Center Category, Functional Area, Profit Center, Master Data Check +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`LT_FORALL`](#decl-zcoc9010f01-232-lt_forall), [`GT_KOSAR`](#decl-zcoc9010top-94-gt_kosar), [`GT_FKBER`](#decl-zcoc9010top-98-gt_fkber), [`GT_CEPC_ST`](#decl-zcoc9010top-102-gt_cepc_st), [`P_KOKRS`](#decl-zcoc9010top-126-p_kokrs) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L279-L327` · confidence 0.95 · `ZCOC9010#ZCOC9010F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 각 업로드 행에 대해 코스트센터가 이미 존재하면(F05), 코스트센터 범주(F07)·기능영역(F08)·손익센터(F09)가 마스터에 없으면 빨간 상태와 메시지를 부여하고 해당 셀을 빨갛게 표시하며 GV_UPLOAD_ERROR를 세운다(사업영역 검증은 주석 처리됨). + +```abap + 329| LOOP AT GT_DATA. + 330| + 331| READ TABLE GT_KOSTL_ST TRANSPORTING NO FIELDS + 332| WITH KEY KOSTL = GT_DATA-COSTCENTER + 333| BINARY SEARCH. + 334| + 335| IF SY-SUBRC EQ 0. + 336| GT_DATA-MESSAGE = '이미 존재하는 코스트센터 입니다.'(F05). + 337| GT_DATA-STATUS = GC_STATUS_RED. + 338| GV_UPLOAD_ERROR = 'X'. + 339| PERFORM SET_ERROR_FIELD_RED USING 'COSTCENTER'. + 340| PERFORM ADD_DATA_MESSAGE USING 'E' + 341| GT_DATA-COSTCENTER + 342| GT_DATA-MESSAGE. + 343| ENDIF. + 344| + 345| * READ TABLE GT_GSBER_ST TRANSPORTING NO FIELDS + 346| * WITH KEY GSBER = GT_DATA-BUS_AREA + 347| * BINARY SEARCH. + 348| * + 349| * IF SY-SUBRC NE 0. + 350| * GT_DATA-MESSAGE = '존재하지 않는 사업영역입니다.'(F06). + 351| * GT_DATA-STATUS = GC_STATUS_RED. + 352| * GV_UPLOAD_ERROR = 'X'. + 353| * PERFORM SET_ERROR_FIELD_RED USING 'BUS_AREA'. + 354| * PERFORM ADD_DATA_MESSAGE USING 'E' + 355| * GT_DATA-BUS_AREA + 356| * GT_DATA-MESSAGE. + 357| * ENDIF. + 358| + 359| READ TABLE GT_KOSAR TRANSPORTING NO FIELDS + 360| WITH KEY KOSAR = GT_DATA-COSTCENTER_TYPE + 361| BINARY SEARCH. + 362| + 363| IF SY-SUBRC NE 0. + 364| GT_DATA-MESSAGE = '존재하지 않는 코스트센터 범주입니다.'(F07). + 365| GT_DATA-STATUS = GC_STATUS_RED. + 366| GV_UPLOAD_ERROR = 'X'. + 367| PERFORM SET_ERROR_FIELD_RED USING 'COSTCENTER_TYPE'. + 368| PERFORM ADD_DATA_MESSAGE USING 'E' + 369| GT_DATA-COSTCENTER_TYPE + 370| GT_DATA-MESSAGE. + 371| ENDIF. + 372| + 373| READ TABLE GT_FKBER TRANSPORTING NO FIELDS + 374| WITH KEY FKBER = GT_DATA-FUNC_AREA + 375| BINARY SEARCH. + 376| + 377| IF SY-SUBRC NE 0. + 378| GT_DATA-MESSAGE = '존재하지 않는 기능영역입니다.'(F08). + 379| GT_DATA-STATUS = GC_STATUS_RED. + 380| GV_UPLOAD_ERROR = 'X'. + 381| PERFORM SET_ERROR_FIELD_RED USING 'FUNC_AREA'. + 382| PERFORM ADD_DATA_MESSAGE USING 'E' + 383| GT_DATA-FUNC_AREA + 384| GT_DATA-MESSAGE. + 385| ENDIF. + 386| + 387| READ TABLE GT_CEPC_ST TRANSPORTING NO FIELDS + 388| WITH KEY PRCTR = GT_DATA-PROFIT_CTR + 389| BINARY SEARCH. + 390| + 391| IF SY-SUBRC NE 0. + 392| GT_DATA-MESSAGE = '존재하지 않는 손익센터입니다.'(F09). + 393| GT_DATA-STATUS = GC_STATUS_RED. + 394| GV_UPLOAD_ERROR = 'X'. + 395| PERFORM SET_ERROR_FIELD_RED USING 'PROFIT_CTR'. + 396| PERFORM ADD_DATA_MESSAGE USING 'E' + 397| GT_DATA-PROFIT_CTR + 398| GT_DATA-MESSAGE. + 399| ENDIF. + 400| + 401| MODIFY GT_DATA. CLEAR : GT_DATA. + 402| CLEAR : GT_KOSTL_ST, GT_GSBER_ST, GT_KOSAR, GT_FKBER. + 403| + 404| ENDLOOP. +``` + +- **EN**: For each upload row flag an error when the cost center already exists (F05) or when the cost center category (F07), functional area (F08) or profit center (F09) is missing from the master tables, setting red status, message, cell highlight and the upload error flag; business area check is commented out. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: GT_DATA, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- 업무 키워드: 코스트센터 중복, 코스트센터 범주 검증, 기능영역 검증, 손익센터 검증, 업로드 오류 +- English: Duplicate Cost Center, Cost Center Category, Functional Area, Profit Center, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`GT_KOSTL_ST`](#decl-zcoc9010top-82-gt_kostl_st), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc9010top-22-gv_upload_error), [`GT_KOSAR`](#decl-zcoc9010top-94-gt_kosar), [`GT_FKBER`](#decl-zcoc9010top-98-gt_fkber), [`GT_CEPC_ST`](#decl-zcoc9010top-102-gt_cepc_st), [`GT_GSBER_ST`](#decl-zcoc9010top-89-gt_gsber_st) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L329-L404` · confidence 0.95 · `ZCOC9010#ZCOC9010F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC9010F01` L656-L682 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 663| IF P_VALUE IS NOT INITIAL. + 664| CONCATENATE P_VALUE ` : ` P_MESSAGE + 665| INTO LV_MESSAGE. + 666| ELSE. + 667| LV_MESSAGE = P_MESSAGE. + 668| ENDIF. + 669| + 670| IF P_STATUS = 'S'. + 671| LV_STATUS = GC_STATUS_GREEN. + 672| ELSEIF P_STATUS = 'E'. + 673| LV_STATUS = GC_STATUS_RED. + 674| ELSEIF P_STATUS = 'W'. + 675| LV_STATUS = GC_STATUS_YELLOW. + 676| ENDIF. + 677| GS_MSG_T_S-STATUS = LV_STATUS. + 678| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 679| + 680| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc9010f01-658-lv_message), [`LV_STATUS`](#decl-zcoc9010f01-659-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc9010top-107-gs_msg_t_s), [`GT_DATA`](#decl-zcoc9010top-58-gt_data) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L663-L680` · confidence 0.85 · `ZCOC9010#ZCOC9010F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC9010` L55-L66 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 56| IF SY-BATCH NE 'X'. + 57| IF GT_DATA[] IS NOT INITIAL. + 58| CALL SCREEN 100. + 59| ELSE. + 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 61| ENDIF. + 62| ELSE. + 63| IF GT_DATA[] IS NOT INITIAL. + 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 65| ENDIF. + 66| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data) +- 위치: `abap://ZCOC9010/ZCOC9010#L56-L66` · confidence 0.85 · `ZCOC9010#ZCOC9010#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC9010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC9010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC9010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC9010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9010top-132-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC9010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC9010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC9010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc9010top-126-p_kokrs) +- 위치: `abap://ZCOC9010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC9010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC9010F01` L589-L647 (59줄) + +*ALV에서 선택한 행(P_ROW)의 BAPI/검증 메시지 목록(GT_DATA-MSG_LIST)을 코스트센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 MSG_LIST를 코스트센터(COSTCENTER)·상태 아이콘·메시지로 LT_POPUP에 옮기고 팝업 레이아웃을 설정한 뒤 W_POPUP_GRID를 생성해 SHOW_DATA로 오류 로그 팝업을 표시한다. + +```abap + 624| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 625| LT_POPUP-KOSTL = GT_DATA-COSTCENTER. + 626| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 627| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 628| APPEND LT_POPUP. + 629| CLEAR : LT_POPUP. + 630| ENDLOOP. + 631| + 632| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 633| + 634| CREATE OBJECT W_POPUP_GRID + 635| EXPORTING + 636| I_T_FIELDCATALOG = POPUP_FIELDCAT + 637| I_S_LAYOUT = LS_LAYO + 638| I_CAPTION = '' + 639| I_LEFT = 100 + 640| I_TOP = 150 + 641| I_HEIGHT = 400 + 642| I_WIDTH = 900. + 643| + 644| CALL METHOD W_POPUP_GRID->SHOW_DATA + 645| EXPORTING + 646| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Copy the selected row's message list with cost center, status icon and text into LT_POPUP, set the popup layout, instantiate W_POPUP_GRID and display the log via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, GT_LOG_POP, SET_ALV_LAYOUT_POP +- 업무 키워드: 오류 로그 팝업, BAPI 메시지, 상태 아이콘 +- English: Error Log, Popup Grid, BAPI Message +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`GS_MSG_T_S`](#decl-zcoc9010top-107-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc9010top-73-gt_log_pop), [`LT_POPUP`](#decl-zcoc9010f01-592-lt_popup), [`LS_LAYO`](#decl-zcoc9010f01-591-ls_layo), [`W_POPUP_GRID`](#decl-zcoc9010top-80-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc9010f01-590-popup_fieldcat) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L624-L646` · confidence 0.85 · `ZCOC9010#ZCOC9010F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BAPI — `ZCOC9010F01` L458-L476 (19줄) + +*생성 버튼 처리로 이미 생성했는지 확인하고 POPUP_TO_CONFIRM_02로 코스트센터 생성 여부를 확인받은 뒤 RUN_BAPI로 BAPI 생성을 실행한다.* + +> 이 unit 의 조각 1개가 13/19줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 이미 생성된 상태(GV_ALREADY_POST)면 E000 오류 메시지로 중복 생성을 막고, POPUP_TO_CONFIRM_02 확인창에서 예(J)를 선택한 경우에만 생성 플래그를 세우고 RUN_BAPI를 호출한다. + +```abap + 463| IF GV_ALREADY_POST = 'X'. + 464| MESSAGE E000 WITH '이미 생성했습니다.'(F10). + 465| ENDIF. + 466| + 467| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 468| '코스트센터를 생성하시겠습니까?'(F15) ' ' + 469| CHANGING L_ANSWER. + 470| IF L_ANSWER <> 'J'. + 471| EXIT. + 472| ENDIF. + 473| + 474| GV_ALREADY_POST = 'X'. + 475| PERFORM RUN_BAPI. +``` + +- **EN**: Block duplicate creation when GV_ALREADY_POST is set, ask for confirmation via POPUP_TO_CONFIRM_02, and on a yes answer flag the post and call RUN_BAPI. +- 호출(파서): POPUP_TO_CONFIRM_02, RUN_BAPI +- SAP 객체: POPUP_TO_CONFIRM_02, RUN_BAPI +- 업무 키워드: 중복 생성 방지, 확인 팝업, 코스트센터 생성 +- English: Duplicate Post Check, Confirmation Popup, Cost Center Create +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc9010top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc9010f01-459-l_answer) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L463-L475` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#EXECUTE_BAPI#C1` + +### FORM RUN_BAPI — `ZCOC9010F01` L485-L542 (58줄) + +*업로드된 GT_DATA 행마다 BAPI 입력 구조를 만들어 BAPI_COSTCENTER_CREATEMULTIPLE로 코스트센터를 생성하고 RETURN 결과에 따라 COMMIT/ROLLBACK 하며 행별 상태 아이콘과 메시지(KS005)를 기록한다.* + +> 이 unit 의 조각 1개가 45/58줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GT_DATA 각 행을 TRANSFER_DATA_TO_BAPI로 BAPI0012_CCINPUTLIST에 채워 관리회계영역(P_KOKRS)으로 BAPI_COSTCENTER_CREATEMULTIPLE을 행 단위 호출하고, RETURN 메시지를 BUILD_MESSAGE_BAPI/ADD_DATA_MESSAGE로 행 메시지 목록에 쌓은 뒤 오류가 없으면 BAPI_TRANSACTION_COMMIT(WAIT)과 KS005 성공 메시지·초록 상태, 있으면 BAPI_TRANSACTION_ROLLBACK·빨간 상태로 GT_DATA를 갱신한다. + +```abap + 494| LOOP AT GT_DATA. + 495| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 496| + 497| PERFORM TRANSFER_DATA_TO_BAPI CHANGING LT_COSTCENTERLIST. + 498| + 499| CHECK LT_COSTCENTERLIST IS NOT INITIAL. + 500| APPEND LT_COSTCENTERLIST. + 501| + 502| CALL FUNCTION 'BAPI_COSTCENTER_CREATEMULTIPLE' + 503| EXPORTING + 504| CONTROLLINGAREA = P_KOKRS + 505| TABLES + 506| COSTCENTERLIST = LT_COSTCENTERLIST + 507| RETURN = LT_RETURNS. + 508| + 509| LV_BDC_SUBRC = SY-SUBRC. + 510| + 511| LOOP AT LT_RETURNS. + 512| PERFORM BUILD_MESSAGE_BAPI USING LT_RETURNS + 513| CHANGING GT_DATA-MESSAGE. + 514| PERFORM ADD_DATA_MESSAGE USING + 515| GT_MESSTAB-MSGTYP '' + 516| GT_DATA-MESSAGE. + 517| ENDLOOP. + 518| + 519| IF LV_BDC_SUBRC EQ 0 AND LT_RETURNS[] IS INITIAL. + 520| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 521| EXPORTING + 522| WAIT = 'X'. + 523| MESSAGE ID 'KS' TYPE 'S' NUMBER '005' + 524| INTO GT_DATA-MESSAGE + 525| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 526| GT_DATA-STATUS = GC_STATUS_GREEN. + 527| ELSE. + 528| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 529| GT_DATA-STATUS = GC_STATUS_RED. + 530| ENDIF. + 531| + 532| MODIFY GT_DATA. + 533| + 534| CLEAR : LT_RETURNS, LT_RETURNS[]. + 535| CLEAR : LT_COSTCENTERLIST, LT_COSTCENTERLIST[]. + 536| CLEAR : GT_DATA. + 537| + 538| ENDLOOP. +``` + +- **EN**: For each GT_DATA row fill BAPI0012_CCINPUTLIST via TRANSFER_DATA_TO_BAPI, call BAPI_COSTCENTER_CREATEMULTIPLE for the controlling area, collect RETURN messages into the row message list, then COMMIT with WAIT and set message KS005 and green status when no errors, otherwise ROLLBACK and set red status. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): TRANSFER_DATA_TO_BAPI, BAPI_COSTCENTER_CREATEMULTIPLE, BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_COSTCENTER_CREATEMULTIPLE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPI0012_CCINPUTLIST, BAPIRET2, KS005 +- 업무 키워드: 코스트센터 생성, BAPI 호출, 커밋, 롤백, 행 단위 처리, 결과 메시지 +- English: Cost Center Create, BAPI, Commit, Rollback, Return Message +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9010top-58-gt_data), [`LT_COSTCENTERLIST`](#decl-zcoc9010f01-487-lt_costcenterlist), [`P_KOKRS`](#decl-zcoc9010top-126-p_kokrs), [`LT_RETURNS`](#decl-zcoc9010f01-486-lt_returns), [`LV_BDC_SUBRC`](#decl-zcoc9010f01-489-lv_bdc_subrc), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L494-L538` · confidence 0.95 · `ZCOC9010#ZCOC9010F01#FORM#RUN_BAPI#C1` + +### FORM TRANSFER_DATA_TO_BAPI — `ZCOC9010F01` L550-L581 (32줄) + +*GT_DATA 현재 행의 값을 ALV 필드카탈로그 필드명 기준으로 동일 이름의 BAPI0012_CCINPUTLIST 필드에 동적으로 복사하고 유효종료일 99991231과 회사코드(P_BUKRS)를 세팅해 BAPI 입력을 만든다.* + +> 이 unit 의 조각 1개가 20/32줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT의 각 필드명으로 P_CC(BAPI0012_CCINPUTLIST)와 GT_DATA의 동명 필드를 동적 ASSIGN해 비어 있지 않은 값만 복사하고 VALID_TO는 99991231, COMP_CODE는 P_BUKRS로 고정한다. + +```abap + 560| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT. + 561| + 562| CONCATENATE 'P_CC-' LS_FIELDCAT-FIELDNAME + 563| INTO LV_BAPI_FIELD. + 564| + 565| ASSIGN (LV_BAPI_FIELD) TO . + 566| CHECK SY-SUBRC EQ 0. + 567| + 568| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 569| INTO LV_DATA_FIELD. + 570| + 571| ASSIGN (LV_DATA_FIELD) TO . + 572| CHECK SY-SUBRC EQ 0. + 573| + 574| CHECK IS NOT INITIAL. + 575| = . + 576| ENDLOOP. + 577| + 578| P_CC-VALID_TO = '99991231'.. + 579| P_CC-COMP_CODE = P_BUKRS. +``` + +- **EN**: For each field in the ALV field catalog dynamically assign the same-named fields of GT_DATA and BAPI0012_CCINPUTLIST and copy non-initial values, then set VALID_TO to 99991231 and COMP_CODE to P_BUKRS. +- SAP 객체: BAPI0012_CCINPUTLIST, GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: BAPI 입력 매핑, 코스트센터 생성, 유효종료일, 회사코드, 동적 필드 복사 +- English: BAPI Input Mapping, Cost Center, Valid To, Company Code +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc9010top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc9010f01-552-ls_fieldcat), [`LV_BAPI_FIELD`](#decl-zcoc9010f01-556-lv_bapi_field), [``](#decl-zcoc9010f01-554--fs_bapi-), [`LV_DATA_FIELD`](#decl-zcoc9010f01-555-lv_data_field), [``](#decl-zcoc9010f01-553--fs_data-), [`P_BUKRS`](#decl-zcoc9010top-117-p_bukrs) +- 위치: `abap://ZCOC9010/ZCOC9010F01#L560-L579` · confidence 0.9 · `ZCOC9010#ZCOC9010F01#FORM#TRANSFER_DATA_TO_BAPI#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC9010I01` L6-L29 (24줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 기능코드가 BACK/CANC/EXIT면 CLEAR_CONTAINER_PROC로 ALV 객체를 해제하고 LEAVE PROGRAM 또는 LEAVE TO SCREEN 0 하며, &BDC면 EXECUTE_BAPI를 호출해 BAPI_COSTCENTER_CREATEMULTIPLE 기반 코스트센터 생성을 시작한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BAPI. + 24| + 25| WHEN OTHERS. + 26| * LEAVE PROGRAM. + 27| ENDCASE. +``` + +- **EN**: Dispatch OK codes: BACK/CANC/EXIT free the ALV containers and leave; &BDC calls EXECUTE_BAPI to start cost center creation through BAPI_COSTCENTER_CREATEMULTIPLE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: EXECUTE_BAPI, CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드 분기, 코스트센터 생성 실행, 화면 종료 +- English: OK Code, PAI Dispatch, Cost Center Create +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc9010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc9010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC9010/ZCOC9010I01#L9-L27` · confidence 0.85 · `ZCOC9010#ZCOC9010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (318건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC9010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc9010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC9010TOP` (38건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc9010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc9010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc9010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc9010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc9010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc9010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc9010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc9010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc9010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc9010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc9010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc9010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc9010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc9010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc9010top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc9010top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L33-L34 {#decl-zcoc9010top-33-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0040'. +``` + +#### GC_SMW0 — constants · L35-L35 {#decl-zcoc9010top-35-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC9010'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc9010top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L46-L46 {#decl-zcoc9010top-46--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L47-L47 {#decl-zcoc9010top-47--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L49-L49 {#decl-zcoc9010top-49-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L50-L50 {#decl-zcoc9010top-50-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc9010top-52-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc9010top-53-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L58-L69 {#decl-zcoc9010top-58-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0040. + +DATA : + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + CELLTAB TYPE LVC_T_STYL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L71-L71 {#decl-zcoc9010top-71-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L73-L77 {#decl-zcoc9010top-73-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L80-L80 {#decl-zcoc9010top-80-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL_ST — data · L82-L87 {#decl-zcoc9010top-82-gt_kostl_st} + +```abap +DATA : BEGIN OF GT_KOSTL_ST OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + OBJNR LIKE ONRKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, + DATBI LIKE CSKS-DATBI, + END OF GT_KOSTL_ST. +``` + +#### GT_GSBER_ST — data · L89-L92 {#decl-zcoc9010top-89-gt_gsber_st} + +```abap +DATA : BEGIN OF GT_GSBER_ST OCCURS 0, + GSBER LIKE AUFK-GSBER, + GTEXT LIKE TGSBT-GTEXT, +END OF GT_GSBER_ST. +``` + +#### GT_KOSAR — data · L94-L96 {#decl-zcoc9010top-94-gt_kosar} + +```abap +DATA : BEGIN OF GT_KOSAR OCCURS 0, + KOSAR LIKE TKA05-KOSAR, +END OF GT_KOSAR. +``` + +#### GT_FKBER — data · L98-L100 {#decl-zcoc9010top-98-gt_fkber} + +```abap +DATA : BEGIN OF GT_FKBER OCCURS 0, + FKBER LIKE TFKB-FKBER, +END OF GT_FKBER. +``` + +#### GT_CEPC_ST — data · L102-L105 {#decl-zcoc9010top-102-gt_cepc_st} + +```abap +DATA : BEGIN OF GT_CEPC_ST OCCURS 0, + PRCTR LIKE CEPC-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPC_ST. +``` + +#### GS_MSG_T_S — data · L107-L107 {#decl-zcoc9010top-107-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### P_BUKRS — parameter · L117-L118 {#decl-zcoc9010top-117-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L126-L127 {#decl-zcoc9010top-126-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_FNAME — parameter · L132-L133 {#decl-zcoc9010top-132-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC9020_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC9010F01` (24건) + +#### L_UCOMM — data · unit 로컬 · L40-L40 {#decl-zcoc9010f01-40-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L130-L133 {#decl-zcoc9010f01-130-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L135-L135 {#decl-zcoc9010f01-135--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L136-L136 {#decl-zcoc9010f01-136--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L137-L137 {#decl-zcoc9010f01-137-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L138-L138 {#decl-zcoc9010f01-138-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L139-L139 {#decl-zcoc9010f01-139-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_FORALL — data · unit 로컬 · L232-L232 {#decl-zcoc9010f01-232-lt_forall} + +```abap + DATA : LT_FORALL LIKE TABLE OF GT_DATA. +``` + +#### L_ANSWER — data · unit 로컬 · L459-L459 {#decl-zcoc9010f01-459-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LT_RETURNS — data · unit 로컬 · L486-L486 {#decl-zcoc9010f01-486-lt_returns} + +```abap + DATA : LT_RETURNS LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_COSTCENTERLIST — data · unit 로컬 · L487-L487 {#decl-zcoc9010f01-487-lt_costcenterlist} + +```abap + DATA : LT_COSTCENTERLIST LIKE BAPI0012_CCINPUTLIST OCCURS 0 WITH HEADER LINE. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L489-L489 {#decl-zcoc9010f01-489-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L552-L552 {#decl-zcoc9010f01-552-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L553-L553 {#decl-zcoc9010f01-553--fs_data-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L554-L554 {#decl-zcoc9010f01-554--fs_bapi-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_DATA_FIELD — data · unit 로컬 · L555-L555 {#decl-zcoc9010f01-555-lv_data_field} + +```abap + DATA : LV_DATA_FIELD(30) TYPE C. +``` + +#### LV_BAPI_FIELD — data · unit 로컬 · L556-L556 {#decl-zcoc9010f01-556-lv_bapi_field} + +```abap + DATA : LV_BAPI_FIELD(30) TYPE C. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L590-L590 {#decl-zcoc9010f01-590-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L591-L591 {#decl-zcoc9010f01-591-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L592-L592 {#decl-zcoc9010f01-592-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L658-L658 {#decl-zcoc9010f01-658-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L659-L659 {#decl-zcoc9010f01-659-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_STRNM — data · unit 로컬 · L710-L710 {#decl-zcoc9010f01-710-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L711-L711 {#decl-zcoc9010f01-711-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC9010 L25-31 | 0 | INITIALIZATION 이벤트에서 선택화면 초기 설정(SET_DYNP)과 엑셀 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC9010 L32-34 | 0 | AT SELECTION-SCREEN에서 선택화면 기능 버튼 처리(CONTROL_FCXX)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC9010 L35-40 | 0 | AT SELECTION-SCREEN OUTPUT에서 화면 필드 속성 제어(LOOP_AT_SCREEN)를 호출하는 PBO 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC9010 L41-46 | 0 | 업로드 파일명(P_FNAME)의 F4 검색도움으로 F4_FNAME(파일 선택 다이얼로그)을 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOC9010 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC9010 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC9010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC9010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC9010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC9010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC9010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC9010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC9010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC9010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC9010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC9010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC9010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC9010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC9010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC9010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC9010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC9010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC9010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC9010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC9010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC9010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC9010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC9010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC9010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC9010C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC9010C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC9010F01 L6-17 | 0 | 선택화면에서 회사코드 입력 권한 변수(GV_BUKRS_O)가 비어 있으면 MG1 그룹 필드를 입력 불가로 만드는 LOOP AT SCREEN 화면 제어 루틴이다. | +| SET_DYNP | FORM | ZCOC9010F01 L24-30 | 0 | INITIALIZATION 시 SET_COMPANY_BASE/SET_KOKRS_BASE로 회사코드·관리회계영역 기본정보를 읽어 선택화면에 회사명(P_BUTXT)과 관리회계영역 명칭(P_BEZEI)을 표시하는 초기 설정 루틴이다. | +| CONTROL_FCXX | FORM | ZCOC9010F01 L39-53 | 1 | 선택화면 기능 버튼 FC01(엑셀 양식 다운로드)이 눌리면 Z_CO_OPEN_SMW0로 SMW0에 등록된 코스트센터 생성 업로드 양식(GC_SMW0)을 여는 처리다. | +| CHECK_INPUT | FORM | ZCOC9010F01 L62-69 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC9010F01 L75-99 | 0 | 회사코드(SET_COMPANY_BASE)·관리회계영역(SET_KOKRS_BASE) 기본정보와 명칭을 세팅하고 메인 ALV 필드카탈로그를 준비하며 로그·잠금·오류/생성 상태 전역 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC9010F01 L105-108 | 0 | 진행 표시줄 메시지(BAR_MSG)를 띄우고 엑셀 읽기·검증(READ_DATA)을 호출하는 메인 처리 서브루틴이다. | +| FC01_ACTIVE | FORM | ZCOC9010F01 L117-120 | 0 | 선택화면 기능키 01에 엑셀 양식 다운로드 버튼(ICON_XXL)을 SET_BTN_1000으로 활성화하는 화면 설정 루틴이다. | +| TRANSFER_GT_DATA | FORM | ZCOC9010F01 L129-221 | 2 | 동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC9010F01 L231-406 | 3 | 업로드된 코스트센터 생성 데이터에 대해 CSKS/CSKT/ONRKS로 기존 코스트센터 존재, TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터 존재 여부를 일괄 조회한 뒤 행별로 검증해 오류 행에 빨간 상태·메시지를 남긴다. | +| READ_DATA | FORM | ZCOC9010F01 L415-437 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC9010F01 L445-452 | 0 | 검증 오류가 난 필드명을 LVC_S_SCOL 색상 6(빨강)으로 GT_DATA-F_COL에 추가해 ALV 셀을 빨간색으로 강조하는 보조 루틴이다. | +| EXECUTE_BAPI | FORM | ZCOC9010F01 L458-476 | 1 | 생성 버튼 처리로 이미 생성했는지 확인하고 POPUP_TO_CONFIRM_02로 코스트센터 생성 여부를 확인받은 뒤 RUN_BAPI로 BAPI 생성을 실행한다. | +| RUN_BAPI | FORM | ZCOC9010F01 L485-542 | 1 | 업로드된 GT_DATA 행마다 BAPI 입력 구조를 만들어 BAPI_COSTCENTER_CREATEMULTIPLE로 코스트센터를 생성하고 RETURN 결과에 따라 COMMIT/ROLLBACK 하며 행별 상태 아이콘과 메시지(KS005)를 기록한다. | +| TRANSFER_DATA_TO_BAPI | FORM | ZCOC9010F01 L550-581 | 1 | GT_DATA 현재 행의 값을 ALV 필드카탈로그 필드명 기준으로 동일 이름의 BAPI0012_CCINPUTLIST 필드에 동적으로 복사하고 유효종료일 99991231과 회사코드(P_BUKRS)를 세팅해 BAPI 입력을 만든다. | +| SHOW_ERROR_LOG | FORM | ZCOC9010F01 L589-647 | 1 | ALV에서 선택한 행(P_ROW)의 BAPI/검증 메시지 목록(GT_DATA-MSG_LIST)을 코스트센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다. | +| ADD_DATA_MESSAGE | FORM | ZCOC9010F01 L656-682 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC9010F01 L691-701 | 0 | 검증 후 상태가 비어 있는 GT_DATA 행에 초기 상태 아이콘(GC_STATUS_INIT)을 채워 ALV 표시를 준비하는 가공 루틴이다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC9010F01 L709-755 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC9010I01 L6-29 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC9010O01 L6-18 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC9010O01 L24-67 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC9010O01 L77-121 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC9010O01 L129-135 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC9010O01 L143-148 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC9010O01 L156-169 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC9010O01 L178-206 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC9010O01 L215-230 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC9010O01 L240-323 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC9010O01 L331-358 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC9020.md b/wiki/programs/ZCOC9020.md new file mode 100644 index 0000000..ab3f1b3 --- /dev/null +++ b/wiki/programs/ZCOC9020.md @@ -0,0 +1,4960 @@ +--- +type: abap-program +title: "ZCOC9020 — 코스트센터 수정 Upload" +description: "기존 코스트센터(Cost Center) 마스터를 엑셀 양식(ZCOS0040)으로 일괄 변경하는 CO-CCA 프로그램이다. 업로드 행마다 CSKS/CSKT/ONRKS로 코스트센터 존재 여부(당일 기준 유효)를 확인하고, 입력된 항목에 한해 TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터를 검증한 뒤 BAPI_COSTCENTER_CHANGEMULTIPLE을 행 단위로 호출하여 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 효력시작일이 기존 유효기간 시작일보다 늦으면 분석 타임프레임 분할 경고를 표시한다." +resource: "abap://ZCOC9020" +tags: ["코스트센터", "마스터변경", "엑셀업로드", "CO-CCA", "조직관리", "BAPI 입력 구성", "입력 항목만 변경", "유효 종료일", "회사코드", "효력시작일", "유효기간 시작일", "코스트센터 유효기간", "타임프레임", "코스트센터 변경", "마스터 일괄 변경", "관리회계영역", "BAPI 호출", "커밋", "롤백", "결과 메시지"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:16+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CEPC", "CEPCT", "CSKS", "CSKT", "DD01L", "DD07T", "ONRKS", "T001", "TFKB", "TKA01", "TKA05", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTCENTER_CHANGEMULTIPLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "927a03ddc293ca6d31c2921b0317bfba5bbaf60f7ddcced8934702ea45789646" +x-unit-count: 143 +x-chunk-count: 69 +x-declaration-count: 212 +--- + +## 업무 목적 + +기존 코스트센터(Cost Center) 마스터를 엑셀 양식(ZCOS0040)으로 일괄 변경하는 CO-CCA 프로그램이다. 업로드 행마다 CSKS/CSKT/ONRKS로 코스트센터 존재 여부(당일 기준 유효)를 확인하고, 입력된 항목에 한해 TKA05 코스트센터 범주, TFKB 기능영역, CEPC/CEPCT 손익센터를 검증한 뒤 BAPI_COSTCENTER_CHANGEMULTIPLE을 행 단위로 호출하여 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 효력시작일이 기존 유효기간 시작일보다 늦으면 분석 타임프레임 분할 경고를 표시한다. + +## 주 흐름 + +1. 선택화면에서 회사코드(T001)·관리회계영역(TKA01) 텍스트를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 입력 여부를 확인하고 ALV 필드카탈로그·상태 변수를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 업로드 구조(ZCOS0040) 기반 동적 테이블을 만들고 엑셀 파일을 읽어 CONVERSION_EXIT·숫자/날짜 변환 후 GT_DATA로 이전한다 (PROCESS_DATA, READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA) +4. CSKS/CSKT/ONRKS(당일 유효), TKA05, TFKB, CEPC/CEPCT를 조회하여 코스트센터 존재 여부와 입력된 범주·기능영역·손익센터를 검증하고, 효력시작일이 기존 DATAB보다 늦으면 '분석 타임 프레임 분할' 경고(노란색)를 남긴다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +5. 상태 아이콘을 초기화하여 ALV(화면 100)에 검증 결과를 표시한다 (EDIT_DATA) +6. 저장 버튼 시 확인 팝업 후 행별로 BAPI0012_CCINPUTLIST에 값을 매핑하고, 효력시작일이 비어 있으면 CSKS의 기존 DATAB을 채운다 (EXECUTE_BAPI, TRANSFER_DATA_TO_BAPI) +7. BAPI_COSTCENTER_CHANGEMULTIPLE 호출 후 RETURN이 없으면 COMMIT, 있으면 ROLLBACK하고 행 상태·메시지(KS006)를 갱신한다 (RUN_BAPI, BUILD_MESSAGE_BAPI) +8. 행 더블클릭 시 해당 코스트센터의 메시지 로그를 팝업 ALV로 보여준다 (SHOW_ERROR_LOG) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 코스트센터 변경 데이터(구조 ZCOS0040 + 상태, 메시지, 메시지 리스트) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, RUN_BAPI / 소비: TRANSFER_DATA_TO_BAPI, RUN_BAPI, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0040 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_KOSTL_ST` — CSKS/CSKT/ONRKS 조인(DATAB 포함) - 기존 코스트센터 존재·유효기간 검증 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_KOSAR / GT_FKBER / GT_CEPC_ST` — 코스트센터 범주(TKA05), 기능영역(TFKB), 손익센터(CEPC/CEPCT) 검증용 마스터 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `LT_COSTCENTERLIST` — BAPI0012_CCINPUTLIST - BAPI 입력 (VALID_TO 99991231, COMP_CODE=P_BUKRS) (채움: TRANSFER_DATA_TO_BAPI / 소비: RUN_BAPI) + +## 테이블 / 외부 호출 + +- read: AENR, CEPC, CEPCT, CSKS, CSKT, DD01L, DD07T, ONRKS, T001, TFKB, TKA01, TKA05, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTCENTER_CHANGEMULTIPLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP + +## 로직 조각 (69건 / unit 58개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc9020top-119-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC9020F01` L39-L53 (15줄) + +*선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 코스트센터 수정 Upload 엑셀 양식을 연다.* + +> 이 unit 의 조각 1개가 8/15줄(53%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택화면 사용자 명령이 FC01 이면 Z_CO_OPEN_SMW0 를 호출해 SMW0 웹 리포지토리 문서(GC_SMW0)의 코스트센터 수정 엑셀 양식을 다운로드/오픈한다. + +```abap + 42| L_UCOMM = SSCRFIELDS-UCOMM. + 43| CASE L_UCOMM. + 44| WHEN 'FC01'. + 45| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 46| EXPORTING + 47| P_DOCNAM = GC_SMW0 + 48| P_TITLE = '코스트센터 수정 Upload 양식'(F02). + 49| ENDCASE. +``` + +- **EN**: On function key FC01 calls Z_CO_OPEN_SMW0 to open the cost center change Excel template stored in SMW0 web repository. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 기능키, SMW0 문서 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc9020f01-40-l_ucomm), [`SSCRFIELDS`](#decl-zcoc9020top-2-sscrfields), [`GC_SMW0`](#decl-zcoc9020top-35-gc_smw0) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L42-L49` · confidence 0.85 · `ZCOC9020#ZCOC9020F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC9020` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC9020/ZCOC9020#L49-L51` · confidence 0.8 · `ZCOC9020#ZCOC9020#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC9020F01` L62-L69 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 64| IF P_FNAME IS INITIAL. + 65| MESSAGE S000 DISPLAY LIKE 'E' WITH + 66| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 67| LEAVE LIST-PROCESSING. + 68| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9020top-134-p_fname) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L64-L68` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM READ_DATA — `ZCOC9020F01` L444-L466 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 447| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 448| * 2. 업로드 파일 취득 + 449| PERFORM UPLOAD_XLS_STRUCT TABLES + 450| USING P_FNAME " 파일명 + 451| 1 "S_COL-LOW + 452| 2 "S_ROW-LOW + 453| 256 "S_COL-HIGH + 454| 65536. "S_ROW-HIGH + 455| CHECK [] IS NOT INITIAL. + 456| *3. 인터널 테이블로 이전 + 457| PERFORM TRANSFER_GT_DATA. + 458| + 459| CHECK GT_DATA[] IS NOT INITIAL. + 460| + 461| "4. Validation + 462| PERFORM VALIDATION_CHECK. + 463| + 464| *5. 인터널 테이블 데이터 + 465| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc9020top-33-gc_upload_struct), [``](#decl-zcoc9020top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc9020top-134-p_fname), [`GT_DATA`](#decl-zcoc9020top-58-gt_data) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L447-L465` · confidence 0.8 · `ZCOC9020#ZCOC9020F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC9020F01` L755-L801 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 761| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 762| EXPORTING + 763| I_STRUCTURE_NAME = LV_STRNM + 764| I_BYPASSING_BUFFER = 'X' + 765| CHANGING + 766| CT_FIELDCAT = GT_UPLD_FCAT + 767| EXCEPTIONS + 768| INCONSISTENT_INTERFACE = 1 + 769| PROGRAM_ERROR = 2 + 770| OTHERS = 3. + 771| + 772| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 773| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 774| + 775| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 776| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 777| ENDIF. + 778| + 779| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 780| GS_UPLD_FCAT-INTLEN = '10'. + 781| ENDIF. + 782| + 783| " 올린 그대로 받기 위해 CHAR로 변환. + 784| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 785| GS_UPLD_FCAT-INTTYPE = 'C'. + 786| + 787| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 788| ENDLOOP. + 789| + 790| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 791| EXPORTING + 792| IT_FIELDCATALOG = LT_UPLD_FCAT + 793| IMPORTING + 794| EP_TABLE = GF_UPLOADT. + 795| + 796| ASSIGN GF_UPLOADT->* TO . + 797| + 798| CREATE DATA GF_UPLOADS LIKE LINE OF . + 799| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc9020f01-756-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc9020top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9020top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc9020f01-757-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc9020top-49-gf_uploadt), [``](#decl-zcoc9020top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc9020top-50-gf_uploads), [``](#decl-zcoc9020top-47--gf_uploads-) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L761-L799` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC9020F01` L129-L221 (93줄) + +*동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 75/93줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 구조 필드들의 도메인에 대해 DD01L에서 소문자 허용 여부(LOWERCASE)를 조회해 대문자 변환 대상 판단용 LT_LOWERCASE를 만든다. + +```abap + 145| SELECT DOMNAME LOWERCASE + 146| INTO TABLE LT_LOWERCASE + 147| FROM DD01L + 148| FOR ALL ENTRIES IN GT_UPLD_FCAT + 149| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 150| AND AS4LOCAL = 'A'. + 151| + 152| SORT LT_LOWERCASE. +``` + +- **EN**: Read the lowercase-allowed flag from DD01L for the domains of the upload structure fields to decide which values must be upper-cased. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L, GT_UPLD_FCAT +- 업무 키워드: 도메인 소문자 허용, 대문자 변환 기준 +- English: Domain, Lowercase Flag, DD01L +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc9020f01-130-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc9020top-52-gt_upld_fcat) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L145-L152` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 엑셀 수신 행의 각 컬럼을 필드카탈로그 순서로 ASSIGN COMPONENT하여 소문자 비허용 도메인은 대문자로 바꾸고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자형은 BDC_CURR, 날짜형은 BDC_DATE로 변환하고 길이 1 체크박스 필드도 대문자화한 뒤 GS_DATA로 옮겨(형 변환 예외는 메시지 후 종료) GT_DATA에 APPEND 한다. + +```abap + 154| LOOP AT INTO . + 155| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 156| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 157| TO . + 158| + 159| IF SY-SUBRC NE 0. + 160| MESSAGE S000 WITH 'Field assign Fail.'. + 161| LEAVE LIST-PROCESSING. + 162| ENDIF. + 163| + 164| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 165| BINARY SEARCH. + 166| + 167| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 168| TRANSLATE TO UPPER CASE. + 169| ENDIF. + 170| + 171| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 172| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 173| INTO LV_CONVFUNC. + 174| + 175| CALL FUNCTION LV_CONVFUNC + 176| EXPORTING + 177| INPUT = + 178| IMPORTING + 179| OUTPUT = + 180| EXCEPTIONS + 181| OTHERS = 1. + 182| ENDIF. + 183| + 184| CASE GS_UPLD_FCAT-DATATYPE. + 185| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 186| 'DEC' OR 'CURR'. + 187| PERFORM BDC_CURR USING . + 188| WHEN 'DATS'. + 189| PERFORM BDC_DATE USING . + 190| ENDCASE. + 191| "체크 박스 대문자 변경 + 192| IF GS_UPLD_FCAT-VALEXI = 'X' AND GS_UPLD_FCAT-INTLEN = '000001'. + 193| TRANSLATE TO UPPER CASE. + 194| ENDIF. + 195| + 196| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 197| TO . + 198| + 199| IF SY-SUBRC NE 0. + 200| MESSAGE S000 WITH 'Field assign Fail.'. + 201| LEAVE LIST-PROCESSING. + 202| ENDIF. + 203| + 204| TRY . + 205| = . + 206| + 207| CATCH CX_ROOT INTO LF_OREF. + 208| LV_TEXT = LF_OREF->GET_TEXT( ). + 209| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 210| 'Type conversion error :' LV_TEXT. + 211| LEAVE LIST-PROCESSING. + 212| ENDTRY. + 213| ENDLOOP. + 214| + 215| APPEND GS_DATA TO GT_DATA. + 216| CLEAR GS_DATA. + 217| + 218| CLEAR : LT_LOWERCASE. + 219| + 220| ENDLOOP. +``` + +- **EN**: For each uploaded Excel row assign every column by field catalog position, upper-case values whose domain disallows lowercase, call CONVERSION_EXIT_xxx_INPUT dynamically when present, normalize numeric types via BDC_CURR and dates via BDC_DATE, upper-case one-character checkbox fields, move into GS_DATA (abort on type conversion exception) and append to GT_DATA. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: CONVERSION_EXIT_*_INPUT, BDC_CURR, BDC_DATE, GT_DATA, ZCOS0040 +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 숫자 형식 변환, 날짜 형식 변환, 체크박스 대문자, 형 변환 오류 +- English: Excel Transfer, Conversion Exit, Numeric Conversion, Date Conversion, Type Conversion Error +- 정의부(복사 시 함께 필요): [``](#decl-zcoc9020top-46--gf_uploadt-), [``](#decl-zcoc9020top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc9020top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9020top-53-gs_upld_fcat), [``](#decl-zcoc9020f01-135--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc9020f01-130-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc9020f01-137-lv_convfunc), [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`GS_DATA`](#decl-zcoc9020top-72-gs_data), [``](#decl-zcoc9020f01-136--fs_data_field-), [`LF_OREF`](#decl-zcoc9020f01-138-lf_oref), [`LV_TEXT`](#decl-zcoc9020f01-139-lv_text) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L154-L220` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC9020F01` L231-L435 (205줄) + +*업로드된 코스트센터 변경 데이터를 CSKS/CSKT/ONRKS 존재(당일 유효), TKA05 범주, TFKB 기능영역, CEPC/CEPCT 손익센터로 검증하고 효력시작일이 기존 DATAB 보다 늦으면 타임프레임 분할 경고를 남긴다.* + +> 이 unit 의 조각 4개가 157/205줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 코스트센터를 중복 제거한 뒤 CSKS·CSKT·ONRKS 조인으로 관리회계영역 P_KOKRS 에서 당일 유효한 코스트센터의 텍스트·오브젝트번호·유효기간(DATBI/DATAB)을 GT_KOSTL_ST 로 조회한다. + +```abap + 241| CLEAR : LT_FORALL, LT_FORALL[]. + 242| LT_FORALL[] = GT_DATA[]. + 243| SORT LT_FORALL BY COSTCENTER. + 244| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 245| COMPARING COSTCENTER. + 246| + 247| SELECT A~KOSTL C~OBJNR B~KTEXT A~DATBI A~DATAB + 248| FROM CSKS AS A + 249| INNER JOIN CSKT AS B + 250| ON A~KOKRS = B~KOKRS + 251| AND A~KOSTL = B~KOSTL + 252| AND A~DATBI = B~DATBI + 253| INNER JOIN ONRKS AS C + 254| ON A~KOSTL = C~KOSTL + 255| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_ST + 256| FOR ALL ENTRIES IN LT_FORALL + 257| WHERE A~KOKRS = P_KOKRS + 258| AND A~KOSTL = LT_FORALL-COSTCENTER + 259| AND A~DATBI >= SY-DATUM + 260| AND A~DATAB <= SY-DATUM + 261| AND B~SPRAS = SY-LANGU. + 262| + 263| SORT GT_KOSTL_ST BY KOSTL OBJNR. +``` + +- **EN**: Selects currently valid cost centers with text, object number and validity dates from CSKS joined with CSKT and ONRKS for existence checks. +- 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [ONRKS](/tables/ONRKS.md) / write - +- SAP 객체: CSKS, CSKT, ONRKS +- 업무 키워드: 코스트센터 존재 확인, 유효기간, 코스트센터 텍스트, 관리회계영역 +- English: Cost Center, Validity Period, Controlling Area, Object Number +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`LT_FORALL`](#decl-zcoc9020f01-232-lt_forall), [`GT_KOSTL_ST`](#decl-zcoc9020top-83-gt_kostl_st), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L241-L263` · confidence 0.93 · `ZCOC9020#ZCOC9020F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] 입력된 코스트센터 범주(TKA05 KOSAR), 기능영역(TFKB FKBER), 손익센터(CEPC/CEPCT 당일 유효)를 각각 중복 제거 후 조회하여 검증용 마스터 GT_KOSAR/GT_FKBER/GT_CEPC_ST 를 준비한다. + +```abap + 279| CLEAR : LT_FORALL, LT_FORALL[]. + 280| LT_FORALL[] = GT_DATA[]. + 281| SORT LT_FORALL BY COSTCENTER_TYPE. + 282| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 283| COMPARING COSTCENTER_TYPE. + 284| + 285| IF LT_FORALL[] IS NOT INITIAL. + 286| SELECT KOSAR FROM TKA05 + 287| INTO CORRESPONDING FIELDS OF TABLE GT_KOSAR + 288| FOR ALL ENTRIES IN LT_FORALL + 289| WHERE KOSAR = LT_FORALL-COSTCENTER_TYPE. + 290| SORT GT_KOSAR BY KOSAR. + 291| ENDIF. + 292| + 293| CLEAR : LT_FORALL, LT_FORALL[]. + 294| LT_FORALL[] = GT_DATA[]. + 295| SORT LT_FORALL BY FUNC_AREA. + 296| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 297| COMPARING FUNC_AREA. + 298| + 299| IF LT_FORALL[] IS NOT INITIAL. + 300| SELECT FKBER FROM TFKB + 301| INTO CORRESPONDING FIELDS OF TABLE GT_FKBER + 302| FOR ALL ENTRIES IN LT_FORALL + 303| WHERE FKBER = LT_FORALL-FUNC_AREA. + 304| SORT GT_FKBER BY FKBER. + 305| ENDIF. + 306| + 307| CLEAR : LT_FORALL, LT_FORALL[]. + 308| LT_FORALL[] = GT_DATA[]. + 309| SORT LT_FORALL BY PROFIT_CTR. + 310| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 311| COMPARING PROFIT_CTR. + 312| + 313| IF LT_FORALL[] IS NOT INITIAL. + 314| SELECT A~PRCTR B~KTEXT + 315| FROM CEPC AS A INNER JOIN CEPCT AS B + 316| ON A~KOKRS = B~KOKRS + 317| AND A~PRCTR = B~PRCTR + 318| AND A~DATBI = B~DATBI + 319| INTO CORRESPONDING FIELDS OF TABLE GT_CEPC_ST + 320| FOR ALL ENTRIES IN LT_FORALL + 321| WHERE A~KOKRS = P_KOKRS + 322| AND A~PRCTR = LT_FORALL-PROFIT_CTR + 323| AND A~DATBI >= SY-DATUM + 324| AND A~DATAB <= SY-DATUM + 325| AND B~SPRAS = SY-LANGU. + 326| SORT GT_CEPC_ST BY PRCTR. + 327| ENDIF. +``` + +- **EN**: Selects valid cost center categories from TKA05, functional areas from TFKB and currently valid profit centers from CEPC/CEPCT for validation. +- 테이블(파서): read [TKA05](/tables/TKA05.md), [TFKB](/tables/TFKB.md), [CEPC](/tables/CEPC.md), [CEPCT](/tables/CEPCT.md) / write - +- SAP 객체: TKA05, TFKB, CEPC, CEPCT +- 업무 키워드: 코스트센터 범주, 기능영역, 손익센터, 마스터 검증 +- English: Cost Center Category, Functional Area, Profit Center, Master Data +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`LT_FORALL`](#decl-zcoc9020f01-232-lt_forall), [`GT_KOSAR`](#decl-zcoc9020top-96-gt_kosar), [`GT_FKBER`](#decl-zcoc9020top-100-gt_fkber), [`GT_CEPC_ST`](#decl-zcoc9020top-104-gt_cepc_st), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L279-L327` · confidence 0.92 · `ZCOC9020#ZCOC9020F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행마다 코스트센터가 GT_KOSTL_ST 에 없으면 '존재하지 않는 코스트센터' 오류, 효력시작일(VALID_FROM)이 기존 DATAB 보다 늦으면 '분석 타임 프레임이 분할됩니다' 경고(노란색)를 남기고, 그렇지 않으면 CSKS 에서 해당 시점의 DATAB 으로 효력시작일을 보정한다. + +```abap + 329| LOOP AT GT_DATA. + 330| + 331| READ TABLE GT_KOSTL_ST + 332| WITH KEY KOSTL = GT_DATA-COSTCENTER + 333| BINARY SEARCH. + 334| + 335| IF SY-SUBRC NE 0. + 336| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다.'(F05). + 337| GT_DATA-STATUS = GC_STATUS_RED. + 338| GV_UPLOAD_ERROR = 'X'. + 339| PERFORM SET_ERROR_FIELD_RED USING 'COSTCENTER'. + 340| PERFORM ADD_DATA_MESSAGE USING 'E' + 341| GT_DATA-COSTCENTER + 342| GT_DATA-MESSAGE. + 343| ELSE. + 344| IF GT_DATA-VALID_FROM IS NOT INITIAL. + 345| IF GT_DATA-VALID_FROM > GT_KOSTL_ST-DATAB. + 346| GT_DATA-MESSAGE = '분석 타임 프레임이 분할됩니다.'(F16). + 347| GT_DATA-STATUS = GC_STATUS_YELLOW. + 348| PERFORM SET_ERROR_FIELD_RED USING 'VALID_FROM'. + 349| PERFORM ADD_DATA_MESSAGE USING 'W' + 350| GT_DATA-COSTCENTER + 351| GT_DATA-MESSAGE. + 352| ELSE. + 353| SELECT SINGLE DATAB + 354| INTO GT_DATA-VALID_FROM + 355| FROM CSKS + 356| WHERE KOKRS = P_KOKRS + 357| AND KOSTL = GT_DATA-COSTCENTER + 358| AND DATBI >= GT_DATA-VALID_FROM + 359| AND DATAB <= GT_DATA-VALID_FROM. + 360| ENDIF. + 361| ELSE. + 362| GT_DATA-VALID_FROM = GT_KOSTL_ST-DATAB. + 363| ENDIF. + 364| ENDIF. +``` + +- **EN**: Validates cost center existence, warns when the entered valid-from date splits the analysis time frame, otherwise aligns VALID_FROM to the existing CSKS validity start. +- 테이블(파서): read [CSKS](/tables/CSKS.md) / write - +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKS +- 업무 키워드: 코스트센터 존재 검증, 효력시작일, 분석 타임프레임 분할, 경고, 유효기간 보정 +- English: Cost Center, Valid From, Analysis Period, Validation, Warning +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`GT_KOSTL_ST`](#decl-zcoc9020top-83-gt_kostl_st), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc9020top-22-gv_upload_error), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L329-L364` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#VALIDATION_CHECK#C3` + +#### [validation] 입력된 경우에 한해 코스트센터 범주(TKA05)·기능영역(TFKB)·손익센터(CEPC) 존재를 검증하여 없으면 오류 메시지·적색 상태·필드 강조를 설정하고 GT_DATA 를 갱신한다. + +```abap + 382| IF GT_DATA-COSTCENTER_TYPE IS NOT INITIAL. + 383| READ TABLE GT_KOSAR TRANSPORTING NO FIELDS + 384| WITH KEY KOSAR = GT_DATA-COSTCENTER_TYPE + 385| BINARY SEARCH. + 386| + 387| IF SY-SUBRC NE 0. + 388| GT_DATA-MESSAGE = '존재하지 않는 코스트센터 범주입니다.'(F07). + 389| GT_DATA-STATUS = GC_STATUS_RED. + 390| GV_UPLOAD_ERROR = 'X'. + 391| PERFORM SET_ERROR_FIELD_RED USING 'COSTCENTER_TYPE'. + 392| PERFORM ADD_DATA_MESSAGE USING 'E' + 393| GT_DATA-COSTCENTER_TYPE + 394| GT_DATA-MESSAGE. + 395| ENDIF. + 396| ENDIF. + 397| + 398| IF GT_DATA-FUNC_AREA IS NOT INITIAL. + 399| READ TABLE GT_FKBER TRANSPORTING NO FIELDS + 400| WITH KEY FKBER = GT_DATA-FUNC_AREA + 401| BINARY SEARCH. + 402| + 403| IF SY-SUBRC NE 0. + 404| GT_DATA-MESSAGE = '존재하지 않는 기능영역입니다.'(F08). + 405| GT_DATA-STATUS = GC_STATUS_RED. + 406| GV_UPLOAD_ERROR = 'X'. + 407| PERFORM SET_ERROR_FIELD_RED USING 'FUNC_AREA'. + 408| PERFORM ADD_DATA_MESSAGE USING 'E' + 409| GT_DATA-FUNC_AREA + 410| GT_DATA-MESSAGE. + 411| ENDIF. + 412| ENDIF. + 413| + 414| IF GT_DATA-PROFIT_CTR IS NOT INITIAL. + 415| READ TABLE GT_CEPC_ST TRANSPORTING NO FIELDS + 416| WITH KEY PRCTR = GT_DATA-PROFIT_CTR + 417| BINARY SEARCH. + 418| + 419| IF SY-SUBRC NE 0. + 420| GT_DATA-MESSAGE = '존재하지 않는 손익센터입니다.'(F09). + 421| GT_DATA-STATUS = GC_STATUS_RED. + 422| GV_UPLOAD_ERROR = 'X'. + 423| PERFORM SET_ERROR_FIELD_RED USING 'PROFIT_CTR'. + 424| PERFORM ADD_DATA_MESSAGE USING 'E' + 425| GT_DATA-PROFIT_CTR + 426| GT_DATA-MESSAGE. + 427| ENDIF. + 428| ENDIF. + 429| + 430| MODIFY GT_DATA. CLEAR : GT_DATA. +``` + +- **EN**: Validates entered cost center category, functional area and profit center against master data and flags errors on the row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: TKA05, TFKB, CEPC +- 업무 키워드: 코스트센터 범주 검증, 기능영역 검증, 손익센터 검증, 오류 표시 +- English: Cost Center Category, Functional Area, Profit Center, Validation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`GT_KOSAR`](#decl-zcoc9020top-96-gt_kosar), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc9020top-22-gv_upload_error), [`GT_FKBER`](#decl-zcoc9020top-100-gt_fkber), [`GT_CEPC_ST`](#decl-zcoc9020top-104-gt_cepc_st) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L382-L430` · confidence 0.9 · `ZCOC9020#ZCOC9020F01#FORM#VALIDATION_CHECK#C4` + +### FORM ADD_DATA_MESSAGE — `ZCOC9020F01` L702-L728 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 709| IF P_VALUE IS NOT INITIAL. + 710| CONCATENATE P_VALUE ` : ` P_MESSAGE + 711| INTO LV_MESSAGE. + 712| ELSE. + 713| LV_MESSAGE = P_MESSAGE. + 714| ENDIF. + 715| + 716| IF P_STATUS = 'S'. + 717| LV_STATUS = GC_STATUS_GREEN. + 718| ELSEIF P_STATUS = 'E'. + 719| LV_STATUS = GC_STATUS_RED. + 720| ELSEIF P_STATUS = 'W'. + 721| LV_STATUS = GC_STATUS_YELLOW. + 722| ENDIF. + 723| GS_MSG_T_S-STATUS = LV_STATUS. + 724| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 725| + 726| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc9020f01-704-lv_message), [`LV_STATUS`](#decl-zcoc9020f01-705-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc9020top-109-gs_msg_t_s), [`GT_DATA`](#decl-zcoc9020top-58-gt_data) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L709-L726` · confidence 0.85 · `ZCOC9020#ZCOC9020F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC9020` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data) +- 위치: `abap://ZCOC9020/ZCOC9020#L57-L67` · confidence 0.85 · `ZCOC9020#ZCOC9020#EVENT#END-OF-SELECTION#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC9020/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC9020/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC9020/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC9020/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9020top-134-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC9020/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC9020#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC9020#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs) +- 위치: `abap://ZCOC9020/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC9020#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC9020F01` L635-L693 (59줄) + +*ALV에서 선택한 행(P_ROW)의 BAPI/검증 메시지 목록(GT_DATA-MSG_LIST)을 코스트센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 MSG_LIST를 코스트센터(COSTCENTER)·상태 아이콘·메시지로 LT_POPUP에 옮기고 팝업 레이아웃을 설정한 뒤 W_POPUP_GRID를 생성해 SHOW_DATA로 오류 로그 팝업을 표시한다. + +```abap + 670| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 671| LT_POPUP-KOSTL = GT_DATA-COSTCENTER. + 672| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 673| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 674| APPEND LT_POPUP. + 675| CLEAR : LT_POPUP. + 676| ENDLOOP. + 677| + 678| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 679| + 680| CREATE OBJECT W_POPUP_GRID + 681| EXPORTING + 682| I_T_FIELDCATALOG = POPUP_FIELDCAT + 683| I_S_LAYOUT = LS_LAYO + 684| I_CAPTION = '' + 685| I_LEFT = 100 + 686| I_TOP = 150 + 687| I_HEIGHT = 400 + 688| I_WIDTH = 900. + 689| + 690| CALL METHOD W_POPUP_GRID->SHOW_DATA + 691| EXPORTING + 692| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Copy the selected row's message list with cost center, status icon and text into LT_POPUP, set the popup layout, instantiate W_POPUP_GRID and display the log via SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: W_POPUP_GRID, GT_LOG_POP, SET_ALV_LAYOUT_POP +- 업무 키워드: 오류 로그 팝업, BAPI 메시지, 상태 아이콘 +- English: Error Log, Popup Grid, BAPI Message +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`GS_MSG_T_S`](#decl-zcoc9020top-109-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc9020top-74-gt_log_pop), [`LT_POPUP`](#decl-zcoc9020f01-638-lt_popup), [`LS_LAYO`](#decl-zcoc9020f01-637-ls_layo), [`W_POPUP_GRID`](#decl-zcoc9020top-81-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc9020f01-636-popup_fieldcat) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L670-L692` · confidence 0.85 · `ZCOC9020#ZCOC9020F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BAPI — `ZCOC9020F01` L487-L505 (19줄) + +*코스트센터 수정 버튼(&BDC) 처리: 중복 실행 시 오류 메시지를 내고 확인 팝업 승인 후 RUN_BAPI(BAPI_COSTCENTER_CHANGEMULTIPLE)를 수행한다.* + +> 이 unit 의 조각 1개가 13/19줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 변경(GV_ALREADY_POST)한 경우 E 메시지로 중단하고, POPUP_TO_CONFIRM_02 에서 '코스트센터를 수정하시겠습니까?' 승인('J') 시 처리 플래그를 세우고 RUN_BAPI 로 코스트센터 변경을 실행한다. + +```abap + 492| IF GV_ALREADY_POST = 'X'. + 493| MESSAGE E000 WITH '이미 변경했습니다.'(F10). + 494| ENDIF. + 495| + 496| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 497| '코스트센터를 수정하시겠습니까?'(F15) ' ' + 498| CHANGING L_ANSWER. + 499| IF L_ANSWER <> 'J'. + 500| EXIT. + 501| ENDIF. + 502| + 503| GV_ALREADY_POST = 'X'. + 504| PERFORM RUN_BAPI. +``` + +- **EN**: Prevents duplicate execution, asks for confirmation and then runs the cost center change BAPI via RUN_BAPI. +- 호출(파서): POPUP_TO_CONFIRM_02, RUN_BAPI +- SAP 객체: BAPI_COSTCENTER_CHANGEMULTIPLE +- 업무 키워드: 중복 실행 방지, 확인 팝업, 코스트센터 수정 실행 +- English: Confirmation Popup, Cost Center Change +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc9020top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc9020f01-488-l_answer) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L492-L504` · confidence 0.88 · `ZCOC9020#ZCOC9020F01#FORM#EXECUTE_BAPI#C1` + +### FORM RUN_BAPI — `ZCOC9020F01` L514-L571 (58줄) + +*GT_DATA 행 단위로 BAPI_COSTCENTER_CHANGEMULTIPLE 을 호출하여 코스트센터 마스터를 변경하고 성공 시 COMMIT, 실패 시 ROLLBACK 하며 결과 상태·메시지를 반영한다.* + +> 이 unit 의 조각 2개가 38/58줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 행마다 TRANSFER_DATA_TO_BAPI 로 BAPI0012_CCINPUTLIST 입력을 구성하고 관리회계영역 P_KOKRS 로 BAPI_COSTCENTER_CHANGEMULTIPLE 을 호출하여 코스트센터 마스터를 변경한다. + +```abap + 523| LOOP AT GT_DATA. + 524| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 525| + 526| PERFORM TRANSFER_DATA_TO_BAPI CHANGING LT_COSTCENTERLIST. + 527| + 528| CHECK LT_COSTCENTERLIST IS NOT INITIAL. + 529| APPEND LT_COSTCENTERLIST. + 530| + 531| CALL FUNCTION 'BAPI_COSTCENTER_CHANGEMULTIPLE' + 532| EXPORTING + 533| CONTROLLINGAREA = P_KOKRS + 534| TABLES + 535| COSTCENTERLIST = LT_COSTCENTERLIST + 536| RETURN = LT_RETURNS. + 537| + 538| LV_BDC_SUBRC = SY-SUBRC. +``` + +- **EN**: Builds the cost center input list per row and calls BAPI_COSTCENTER_CHANGEMULTIPLE for the controlling area to change the cost center master. +- 호출(파서): TRANSFER_DATA_TO_BAPI, BAPI_COSTCENTER_CHANGEMULTIPLE +- SAP 객체: BAPI_COSTCENTER_CHANGEMULTIPLE, BAPI0012_CCINPUTLIST +- 업무 키워드: 코스트센터 변경, 마스터 일괄 변경, 관리회계영역, BAPI 호출 +- English: Cost Center Change, Master Data, Controlling Area, BAPI +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`LT_COSTCENTERLIST`](#decl-zcoc9020f01-516-lt_costcenterlist), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs), [`LT_RETURNS`](#decl-zcoc9020f01-515-lt_returns), [`LV_BDC_SUBRC`](#decl-zcoc9020f01-518-lv_bdc_subrc) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L523-L538` · confidence 0.95 · `ZCOC9020#ZCOC9020F01#FORM#RUN_BAPI#C1` + +#### [fm_call] BAPI RETURN 메시지를 행 메시지 목록에 기록하고 오류가 없으면 BAPI_TRANSACTION_COMMIT(WAIT) 후 KS006 성공 메시지와 녹색 상태를, 오류가 있으면 BAPI_TRANSACTION_ROLLBACK 과 적색 상태를 설정한다. + +```abap + 540| LOOP AT LT_RETURNS. + 541| PERFORM BUILD_MESSAGE_BAPI USING LT_RETURNS + 542| CHANGING GT_DATA-MESSAGE. + 543| PERFORM ADD_DATA_MESSAGE USING + 544| GT_MESSTAB-MSGTYP '' + 545| GT_DATA-MESSAGE. + 546| ENDLOOP. + 547| + 548| IF LV_BDC_SUBRC EQ 0 AND LT_RETURNS[] IS INITIAL. + 549| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 550| EXPORTING + 551| WAIT = 'X'. + 552| MESSAGE ID 'KS' TYPE 'S' NUMBER '006' + 553| INTO GT_DATA-MESSAGE + 554| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 555| GT_DATA-STATUS = GC_STATUS_GREEN. + 556| ELSE. + 557| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 558| GT_DATA-STATUS = GC_STATUS_RED. + 559| ENDIF. + 560| + 561| MODIFY GT_DATA. +``` + +- **EN**: Logs BAPI return messages, commits with BAPI_TRANSACTION_COMMIT on success (message KS006) or rolls back on error, updating the row status. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 +- 업무 키워드: 커밋, 롤백, 결과 메시지, 성공/실패 상태 +- English: BAPI Return, Commit, Rollback, Status +- 정의부(복사 시 함께 필요): [`LT_RETURNS`](#decl-zcoc9020f01-515-lt_returns), [`GT_DATA`](#decl-zcoc9020top-58-gt_data), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LV_BDC_SUBRC`](#decl-zcoc9020f01-518-lv_bdc_subrc), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L540-L561` · confidence 0.93 · `ZCOC9020#ZCOC9020F01#FORM#RUN_BAPI#C2` + +### FORM TRANSFER_DATA_TO_BAPI — `ZCOC9020F01` L579-L627 (49줄) + +*현재 GT_DATA 행의 입력된 필드만 BAPI0012_CCINPUTLIST 구조로 동적 복사하고 유효기간(VALID_TO 99991231, VALID_FROM 은 기존 CSKS-DATAB 기준 보정)과 회사코드를 설정한다.* + +> 이 unit 의 조각 2개가 35/49줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 필드카탈로그의 필드명으로 GT_DATA 와 BAPI 입력 구조 P_CC 를 동적 할당하여 값이 있는 필드만 복사하고 VALID_TO=99991231, COMP_CODE=P_BUKRS 를 설정한다. + +```abap + 590| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT. + 591| + 592| CONCATENATE 'P_CC-' LS_FIELDCAT-FIELDNAME + 593| INTO LV_BAPI_FIELD. + 594| + 595| ASSIGN (LV_BAPI_FIELD) TO . + 596| CHECK SY-SUBRC EQ 0. + 597| + 598| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 599| INTO LV_DATA_FIELD. + 600| + 601| ASSIGN (LV_DATA_FIELD) TO . + 602| CHECK SY-SUBRC EQ 0. + 603| + 604| CHECK IS NOT INITIAL. + 605| = . + 606| ENDLOOP. + 607| + 608| P_CC-VALID_TO = '99991231'.. + 609| P_CC-COMP_CODE = P_BUKRS. +``` + +- **EN**: Copies only filled GT_DATA fields into the BAPI0012_CCINPUTLIST structure by dynamic field assignment and sets valid-to date and company code. +- SAP 객체: BAPI0012_CCINPUTLIST +- 업무 키워드: BAPI 입력 구성, 입력 항목만 변경, 유효 종료일, 회사코드 +- English: BAPI Input, Cost Center, Valid To, Company Code +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc9020top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc9020f01-581-ls_fieldcat), [`LV_BAPI_FIELD`](#decl-zcoc9020f01-585-lv_bapi_field), [``](#decl-zcoc9020f01-583--fs_bapi-), [`LV_DATA_FIELD`](#decl-zcoc9020f01-584-lv_data_field), [``](#decl-zcoc9020f01-582--fs_data-), [`P_BUKRS`](#decl-zcoc9020top-119-p_bukrs) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L590-L609` · confidence 0.88 · `ZCOC9020#ZCOC9020F01#FORM#TRANSFER_DATA_TO_BAPI#C1` + +#### [sql_select] CSKS 에서 코스트센터의 현재 유효기간 시작일(DATAB)을 읽어 효력시작일이 비어 있으면 기존 DATAB 을 사용하고, 기존 DATAB 이 입력 효력시작일보다 늦지 않은 경우에만 VALID_FROM 을 BAPI 에 넘긴다. + +```abap + 611| SELECT SINGLE DATAB + 612| INTO LV_DATAB + 613| FROM CSKS + 614| WHERE KOKRS = P_KOKRS + 615| AND KOSTL = GT_DATA-COSTCENTER + 616| AND DATBI >= SY-DATUM + 617| AND DATAB <= SY-DATUM. + 618| + 619| IF GT_DATA-VALID_FROM EQ SPACE OR + 620| LV_DATAB > GT_DATA-VALID_FROM. + 621| IF GT_DATA-VALID_FROM EQ SPACE. + 622| GT_DATA-VALID_FROM = LV_DATAB. + 623| ENDIF. + 624| P_CC-VALID_FROM = GT_DATA-VALID_FROM. + 625| ENDIF. +``` + +- **EN**: Reads the current valid-from date of the cost center from CSKS and derives the BAPI VALID_FROM, defaulting to the existing DATAB when not entered. +- 테이블(파서): read [CSKS](/tables/CSKS.md) / write - +- SAP 객체: CSKS +- 업무 키워드: 효력시작일, 유효기간 시작일, 코스트센터 유효기간, 타임프레임 +- English: Valid From, Cost Center, Analysis Period, Validity Date +- 정의부(복사 시 함께 필요): [`LV_DATAB`](#decl-zcoc9020f01-586-lv_datab), [`P_KOKRS`](#decl-zcoc9020top-128-p_kokrs), [`GT_DATA`](#decl-zcoc9020top-58-gt_data) +- 위치: `abap://ZCOC9020/ZCOC9020F01#L611-L625` · confidence 0.82 · `ZCOC9020#ZCOC9020F01#FORM#TRANSFER_DATA_TO_BAPI#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC9020I01` L6-L29 (24줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 기능코드가 BACK/CANC/EXIT면 CLEAR_CONTAINER_PROC로 ALV 객체를 해제하고 LEAVE PROGRAM 또는 LEAVE TO SCREEN 0 하며, &BDC면 EXECUTE_BAPI를 호출해 BAPI_COSTCENTER_CREATEMULTIPLE 기반 코스트센터 생성을 시작한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BAPI. + 24| + 25| WHEN OTHERS. + 26| * LEAVE PROGRAM. + 27| ENDCASE. +``` + +- **EN**: Dispatch OK codes: BACK/CANC/EXIT free the ALV containers and leave; &BDC calls EXECUTE_BAPI to start cost center creation through BAPI_COSTCENTER_CREATEMULTIPLE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: EXECUTE_BAPI, CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드 분기, 코스트센터 생성 실행, 화면 종료 +- English: OK Code, PAI Dispatch, Cost Center Create +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc9020top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc9020c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC9020/ZCOC9020I01#L9-L27` · confidence 0.85 · `ZCOC9020#ZCOC9020I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (319건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC9020C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc9020c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC9020TOP` (38건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc9020top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc9020top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc9020top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc9020top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc9020top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc9020top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc9020top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc9020top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc9020top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc9020top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc9020top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc9020top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc9020top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc9020top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc9020top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc9020top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L33-L34 {#decl-zcoc9020top-33-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0040'. +``` + +#### GC_SMW0 — constants · L35-L35 {#decl-zcoc9020top-35-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC9010'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc9020top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L46-L46 {#decl-zcoc9020top-46--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L47-L47 {#decl-zcoc9020top-47--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L49-L49 {#decl-zcoc9020top-49-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L50-L50 {#decl-zcoc9020top-50-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc9020top-52-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc9020top-53-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L58-L70 {#decl-zcoc9020top-58-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0040. + +DATA : +* DATAB LIKE CSKS-DATAB, + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + CELLTAB TYPE LVC_T_STYL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L72-L72 {#decl-zcoc9020top-72-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L74-L78 {#decl-zcoc9020top-74-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L81-L81 {#decl-zcoc9020top-81-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL_ST — data · L83-L89 {#decl-zcoc9020top-83-gt_kostl_st} + +```abap +DATA : BEGIN OF GT_KOSTL_ST OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + OBJNR LIKE ONRKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, + DATBI LIKE CSKS-DATBI, + DATAB LIKE CSKS-DATAB, + END OF GT_KOSTL_ST. +``` + +#### GT_GSBER_ST — data · L91-L94 {#decl-zcoc9020top-91-gt_gsber_st} + +```abap +DATA : BEGIN OF GT_GSBER_ST OCCURS 0, + GSBER LIKE AUFK-GSBER, + GTEXT LIKE TGSBT-GTEXT, +END OF GT_GSBER_ST. +``` + +#### GT_KOSAR — data · L96-L98 {#decl-zcoc9020top-96-gt_kosar} + +```abap +DATA : BEGIN OF GT_KOSAR OCCURS 0, + KOSAR LIKE TKA05-KOSAR, +END OF GT_KOSAR. +``` + +#### GT_FKBER — data · L100-L102 {#decl-zcoc9020top-100-gt_fkber} + +```abap +DATA : BEGIN OF GT_FKBER OCCURS 0, + FKBER LIKE TFKB-FKBER, +END OF GT_FKBER. +``` + +#### GT_CEPC_ST — data · L104-L107 {#decl-zcoc9020top-104-gt_cepc_st} + +```abap +DATA : BEGIN OF GT_CEPC_ST OCCURS 0, + PRCTR LIKE CEPC-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPC_ST. +``` + +#### GS_MSG_T_S — data · L109-L109 {#decl-zcoc9020top-109-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### P_BUKRS — parameter · L119-L120 {#decl-zcoc9020top-119-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_KOKRS — parameter · L128-L129 {#decl-zcoc9020top-128-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_FNAME — parameter · L134-L135 {#decl-zcoc9020top-134-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC9020_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC9020F01` (25건) + +#### L_UCOMM — data · unit 로컬 · L40-L40 {#decl-zcoc9020f01-40-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L130-L133 {#decl-zcoc9020f01-130-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L135-L135 {#decl-zcoc9020f01-135--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L136-L136 {#decl-zcoc9020f01-136--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L137-L137 {#decl-zcoc9020f01-137-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L138-L138 {#decl-zcoc9020f01-138-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L139-L139 {#decl-zcoc9020f01-139-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_FORALL — data · unit 로컬 · L232-L232 {#decl-zcoc9020f01-232-lt_forall} + +```abap + DATA : LT_FORALL LIKE TABLE OF GT_DATA. +``` + +#### L_ANSWER — data · unit 로컬 · L488-L488 {#decl-zcoc9020f01-488-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LT_RETURNS — data · unit 로컬 · L515-L515 {#decl-zcoc9020f01-515-lt_returns} + +```abap + DATA : LT_RETURNS LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_COSTCENTERLIST — data · unit 로컬 · L516-L516 {#decl-zcoc9020f01-516-lt_costcenterlist} + +```abap + DATA : LT_COSTCENTERLIST LIKE BAPI0012_CCINPUTLIST OCCURS 0 WITH HEADER LINE. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L518-L518 {#decl-zcoc9020f01-518-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L581-L581 {#decl-zcoc9020f01-581-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L582-L582 {#decl-zcoc9020f01-582--fs_data-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L583-L583 {#decl-zcoc9020f01-583--fs_bapi-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_DATA_FIELD — data · unit 로컬 · L584-L584 {#decl-zcoc9020f01-584-lv_data_field} + +```abap + DATA : LV_DATA_FIELD(30) TYPE C. +``` + +#### LV_BAPI_FIELD — data · unit 로컬 · L585-L585 {#decl-zcoc9020f01-585-lv_bapi_field} + +```abap + DATA : LV_BAPI_FIELD(30) TYPE C. +``` + +#### LV_DATAB — data · unit 로컬 · L586-L586 {#decl-zcoc9020f01-586-lv_datab} + +```abap + DATA : LV_DATAB LIKE CSKS-DATAB. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L636-L636 {#decl-zcoc9020f01-636-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L637-L637 {#decl-zcoc9020f01-637-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L638-L638 {#decl-zcoc9020f01-638-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L704-L704 {#decl-zcoc9020f01-704-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L705-L705 {#decl-zcoc9020f01-705-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_STRNM — data · unit 로컬 · L756-L756 {#decl-zcoc9020f01-756-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L757-L757 {#decl-zcoc9020f01-757-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC9020 L26-32 | 0 | INITIALIZATION 에서 화면 기본값(SET_DYNP)과 엑셀 양식 다운로드 버튼(FC01_ACTIVE)을 설정한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC9020 L33-35 | 0 | AT SELECTION-SCREEN 에서 CONTROL_FCXX 를 호출하여 선택화면 기능키(FC01 엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC9020 L36-41 | 0 | 선택화면 PBO 에서 LOOP_AT_SCREEN 을 호출하여 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC9020 L42-47 | 0 | 업로드 파일 경로 P_FNAME 의 F4 도움말로 파일 선택 다이얼로그(F4_FNAME)를 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC9020 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC9020 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC9020C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC9020C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC9020C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC9020C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC9020C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC9020C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC9020C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC9020C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC9020C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC9020C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC9020C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC9020C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC9020C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC9020C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC9020C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC9020C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC9020C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC9020C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC9020C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC9020C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC9020C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC9020C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC9020C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC9020C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC9020C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC9020F01 L6-17 | 0 | 선택화면에서 회사코드 오픈 여부(GV_BUKRS_O)가 없으면 MG1 그룹 필드를 입력 불가로 설정한다. | +| SET_DYNP | FORM | ZCOC9020F01 L24-30 | 0 | 선택화면 초기화 시 회사코드(P_BUKRS)·관리회계영역(P_KOKRS) 기본 정보를 읽어 텍스트(P_BUTXT, P_BEZEI)를 화면에 설정한다. | +| CONTROL_FCXX | FORM | ZCOC9020F01 L39-53 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 코스트센터 수정 Upload 엑셀 양식을 연다. | +| CHECK_INPUT | FORM | ZCOC9020F01 L62-69 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC9020F01 L75-99 | 0 | 회사코드·관리회계영역 텍스트 설정, 메인 ALV 필드카탈로그 취득 및 처리 상태 플래그(업로드 오류·기처리) 초기화를 수행한다. | +| PROCESS_DATA | FORM | ZCOC9020F01 L105-108 | 0 | 진행 메시지를 표시하고 READ_DATA 로 엑셀 읽기·검증 흐름을 호출한다. | +| FC01_ACTIVE | FORM | ZCOC9020F01 L117-120 | 0 | 선택화면 버튼 FC01 을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC9020F01 L129-221 | 2 | 동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC9020F01 L231-435 | 4 | 업로드된 코스트센터 변경 데이터를 CSKS/CSKT/ONRKS 존재(당일 유효), TKA05 범주, TFKB 기능영역, CEPC/CEPCT 손익센터로 검증하고 효력시작일이 기존 DATAB 보다 늦으면 타임프레임 분할 경고를 남긴다. | +| READ_DATA | FORM | ZCOC9020F01 L444-466 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC9020F01 L474-481 | 0 | 오류 필드명을 ALV 셀 색상 테이블(F_COL)에 적색(COL=6)으로 등록하여 해당 셀을 강조 표시하는 헬퍼이다. | +| EXECUTE_BAPI | FORM | ZCOC9020F01 L487-505 | 1 | 코스트센터 수정 버튼(&BDC) 처리: 중복 실행 시 오류 메시지를 내고 확인 팝업 승인 후 RUN_BAPI(BAPI_COSTCENTER_CHANGEMULTIPLE)를 수행한다. | +| RUN_BAPI | FORM | ZCOC9020F01 L514-571 | 2 | GT_DATA 행 단위로 BAPI_COSTCENTER_CHANGEMULTIPLE 을 호출하여 코스트센터 마스터를 변경하고 성공 시 COMMIT, 실패 시 ROLLBACK 하며 결과 상태·메시지를 반영한다. | +| TRANSFER_DATA_TO_BAPI | FORM | ZCOC9020F01 L579-627 | 2 | 현재 GT_DATA 행의 입력된 필드만 BAPI0012_CCINPUTLIST 구조로 동적 복사하고 유효기간(VALID_TO 99991231, VALID_FROM 은 기존 CSKS-DATAB 기준 보정)과 회사코드를 설정한다. | +| SHOW_ERROR_LOG | FORM | ZCOC9020F01 L635-693 | 1 | ALV에서 선택한 행(P_ROW)의 BAPI/검증 메시지 목록(GT_DATA-MSG_LIST)을 코스트센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 보여준다. | +| ADD_DATA_MESSAGE | FORM | ZCOC9020F01 L702-728 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC9020F01 L737-747 | 0 | 상태가 비어 있는 GT_DATA 행에 초기 상태 아이콘(GC_STATUS_INIT)을 설정하여 ALV 표시를 준비한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC9020F01 L755-801 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC9020I01 L6-29 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC9020O01 L6-18 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC9020O01 L24-67 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC9020O01 L77-121 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC9020O01 L129-135 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC9020O01 L143-148 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC9020O01 L156-169 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC9020O01 L178-206 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC9020O01 L215-230 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC9020O01 L240-323 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC9020O01 L331-358 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC9030.md b/wiki/programs/ZCOC9030.md new file mode 100644 index 0000000..04c2442 --- /dev/null +++ b/wiki/programs/ZCOC9030.md @@ -0,0 +1,4763 @@ +--- +type: abap-program +title: "ZCOC9030 — 손익센터 생성 Upload" +description: "손익센터(Profit Center) 마스터를 엑셀 양식(ZCOS0050)으로 일괄 생성하는 CO-PCA 프로그램이다. 업로드 행마다 CEPC로 손익센터 기존재 여부, FAGL_SEGM으로 세그먼트 존재 여부를 검증한 뒤 BAPI_PROFITCENTER_CREATE(BAPI0015ID2/BAPI0015_4)를 행 단위로 호출하고 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 결과는 ALV에 상태 아이콘과 BAPI 메시지로 표시된다." +resource: "abap://ZCOC9030" +tags: ["손익센터", "마스터생성", "엑셀업로드", "CO-PCA", "세그먼트", "BAPI 입력 매핑", "손익센터 기본 데이터", "동적 필드 매핑", "손익센터 생성", "유효기간", "BAPI 호출", "커밋", "롤백", "처리 결과", "중복 생성 방지", "확인 팝업", "오류 로그 팝업", "메시지 목록", "손익센터 마스터", "기존재 검증"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:16+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CEPC", "DD07T", "FAGL_SEGM", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_PROFITCENTER_CREATE", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "75e359511373b014cc6d15d318728b50d1b78b117bfb81b2ced5e7dc0af259b4" +x-unit-count: 143 +x-chunk-count: 65 +x-declaration-count: 208 +--- + +## 업무 목적 + +손익센터(Profit Center) 마스터를 엑셀 양식(ZCOS0050)으로 일괄 생성하는 CO-PCA 프로그램이다. 업로드 행마다 CEPC로 손익센터 기존재 여부, FAGL_SEGM으로 세그먼트 존재 여부를 검증한 뒤 BAPI_PROFITCENTER_CREATE(BAPI0015ID2/BAPI0015_4)를 행 단위로 호출하고 BAPI_TRANSACTION_COMMIT/ROLLBACK으로 확정한다. 결과는 ALV에 상태 아이콘과 BAPI 메시지로 표시된다. + +## 주 흐름 + +1. 선택화면에서 관리회계영역(TKA01) 텍스트를 세팅하고 '엑셀 양식 다운로드' 버튼(FC01, Z_CO_OPEN_SMW0)을 활성화한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX) +2. 업로드 파일 입력 여부를 확인하고 ALV 필드카탈로그·상태 변수를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +3. 업로드 구조(ZCOS0050) 기반 동적 테이블을 만들고 엑셀 파일을 읽어 CONVERSION_EXIT·숫자/날짜 변환 후 GT_DATA로 이전한다 (PROCESS_DATA, READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA) +4. CEPC(당일 유효)로 손익센터 중복 여부, FAGL_SEGM으로 세그먼트 존재 여부를 검증하고 오류 셀을 빨간색 표시한다 (VALIDATION_CHECK, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE) +5. 상태 아이콘을 초기화하여 ALV(화면 100)에 검증 결과를 표시한다 (EDIT_DATA) +6. 저장 버튼 시 확인 팝업 후 행별로 필드카탈로그 기반으로 BAPI0015_4 기본 데이터에 값을 매핑한다 (EXECUTE_BAPI, TRANSFER_DATA_TO_BAPI) +7. BAPI_PROFITCENTER_CREATE를 호출하고 손익센터가 반환되면 COMMIT, 아니면 ROLLBACK하여 행 상태·메시지를 갱신한다 (RUN_BAPI, BUILD_MESSAGE_BAPI) +8. 행 더블클릭 시 해당 손익센터의 메시지 로그를 팝업 ALV로 보여준다 (SHOW_ERROR_LOG) + +## 핵심 내부테이블 + +- `GT_DATA` — 엑셀 업로드 손익센터 생성 데이터(구조 ZCOS0050 + 상태, 메시지, 메시지 리스트) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, RUN_BAPI / 소비: TRANSFER_DATA_TO_BAPI, RUN_BAPI, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — ZCOS0050 구조 기반 동적 엑셀 수신 테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_PRCTR` — CEPC 기존 손익센터 목록 - 중복 검증 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_SEGMENT` — FAGL_SEGM 세그먼트 목록 - 존재 검증 (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `LS_PROFITCENTERID / LS_BASIC_DATA` — BAPI0015ID2(관리회계영역+손익센터), BAPI0015_4(기본 데이터) BAPI 입력 (채움: RUN_BAPI, TRANSFER_DATA_TO_BAPI / 소비: RUN_BAPI) + +## 테이블 / 외부 호출 + +- read: AENR, CEPC, DD07T, FAGL_SEGM, T001, TKA01, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_PROFITCENTER_CREATE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP + +## 로직 조각 (65건 / unit 58개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc9030top-100-p_kokrs) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC9030F01` L39-L53 (15줄) + +*선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 손익센터 생성 업로드 엑셀 양식(GC_SMW0)을 연다.* + +> 이 unit 의 조각 1개가 7/15줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 사용자 명령이 FC01(엑셀 양식 다운로드)이면 Z_CO_OPEN_SMW0를 호출해 SMW0 웹 리포지토리 문서 GC_SMW0를 손익센터 생성 Upload 양식 제목으로 열어 업로드 양식을 제공한다. + +```abap + 43| CASE L_UCOMM. + 44| WHEN 'FC01'. + 45| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 46| EXPORTING + 47| P_DOCNAM = GC_SMW0 + 48| P_TITLE = '손익센터 생성 Upload 양식'(F02). + 49| ENDCASE. +``` + +- **EN**: On function code FC01, calls Z_CO_OPEN_SMW0 to open the SMW0 web repository document holding the profit center creation upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 양식, SMW0 문서, 손익센터 +- English: Excel Template, SMW0, Web Repository +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc9030f01-40-l_ucomm), [`GC_SMW0`](#decl-zcoc9030top-35-gc_smw0) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L43-L49` · confidence 0.88 · `ZCOC9030#ZCOC9030F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC9030` L47-L54 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 48| PERFORM CHECK_INPUT. + 49| PERFORM INITIALIZE_DATA. + 50| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC9030/ZCOC9030#L48-L50` · confidence 0.8 · `ZCOC9030#ZCOC9030#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC9030F01` L62-L69 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 64| IF P_FNAME IS INITIAL. + 65| MESSAGE S000 DISPLAY LIKE 'E' WITH + 66| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 67| LEAVE LIST-PROCESSING. + 68| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9030top-106-p_fname) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L64-L68` · confidence 0.9 · `ZCOC9030#ZCOC9030F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM READ_DATA — `ZCOC9030F01` L297-L319 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 300| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 301| * 2. 업로드 파일 취득 + 302| PERFORM UPLOAD_XLS_STRUCT TABLES + 303| USING P_FNAME " 파일명 + 304| 1 "S_COL-LOW + 305| 2 "S_ROW-LOW + 306| 256 "S_COL-HIGH + 307| 65536. "S_ROW-HIGH + 308| CHECK [] IS NOT INITIAL. + 309| *3. 인터널 테이블로 이전 + 310| PERFORM TRANSFER_GT_DATA. + 311| + 312| CHECK GT_DATA[] IS NOT INITIAL. + 313| + 314| "4. Validation + 315| PERFORM VALIDATION_CHECK. + 316| + 317| *5. 인터널 테이블 데이터 + 318| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc9030top-33-gc_upload_struct), [``](#decl-zcoc9030top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc9030top-106-p_fname), [`GT_DATA`](#decl-zcoc9030top-58-gt_data) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L300-L318` · confidence 0.8 · `ZCOC9030#ZCOC9030F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC9030F01` L593-L639 (47줄) + +*업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. + +```abap + 599| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 600| EXPORTING + 601| I_STRUCTURE_NAME = LV_STRNM + 602| I_BYPASSING_BUFFER = 'X' + 603| CHANGING + 604| CT_FIELDCAT = GT_UPLD_FCAT + 605| EXCEPTIONS + 606| INCONSISTENT_INTERFACE = 1 + 607| PROGRAM_ERROR = 2 + 608| OTHERS = 3. + 609| + 610| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 611| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 612| + 613| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 614| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 615| ENDIF. + 616| + 617| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 618| GS_UPLD_FCAT-INTLEN = '10'. + 619| ENDIF. + 620| + 621| " 올린 그대로 받기 위해 CHAR로 변환. + 622| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 623| GS_UPLD_FCAT-INTTYPE = 'C'. + 624| + 625| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 626| ENDLOOP. + 627| + 628| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 629| EXPORTING + 630| IT_FIELDCATALOG = LT_UPLD_FCAT + 631| IMPORTING + 632| EP_TABLE = GF_UPLOADT. + 633| + 634| ASSIGN GF_UPLOADT->* TO . + 635| + 636| CREATE DATA GF_UPLOADS LIKE LINE OF . + 637| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 +- English: Dynamic Table, Field Catalog, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc9030f01-594-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc9030top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9030top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc9030f01-595-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc9030top-49-gf_uploadt), [``](#decl-zcoc9030top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc9030top-50-gf_uploads), [``](#decl-zcoc9030top-47--gf_uploads-) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L599-L637` · confidence 0.9 · `ZCOC9030#ZCOC9030F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC9030F01` L129-L200 (72줄) + +*동적 엑셀 수신 테이블 의 각 행을 업로드 필드카탈로그 기준으로 CONVERSION_EXIT·숫자/날짜/체크박스 변환한 뒤 GT_DATA(ZCOS0050 구조)로 이전한다.* + +> 이 unit 의 조각 1개가 62/72줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 행의 각 컬럼을 COL_POS로 접근해 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하고, 숫자형은 BDC_CURR·날짜는 BDC_DATE로 정리하며 1자리 체크박스는 대문자화한 뒤 GS_DATA 동일 컴포넌트에 대입(타입 변환 오류 시 메시지 후 중단)해 GT_DATA에 APPEND한다. + +```abap + 138| LOOP AT INTO . + 139| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 140| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 141| TO . + 142| + 143| IF SY-SUBRC NE 0. + 144| MESSAGE S000 WITH 'Field assign Fail.'. + 145| LEAVE LIST-PROCESSING. + 146| ENDIF. + 147| + 148| * IF GS_UPLD_FCAT-FIELDNAME NE 'SGTXT'. + 149| * TRANSLATE TO UPPER CASE. + 150| * ENDIF. + 151| + 152| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 153| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 154| INTO LV_CONVFUNC. + 155| + 156| CALL FUNCTION LV_CONVFUNC + 157| EXPORTING + 158| INPUT = + 159| IMPORTING + 160| OUTPUT = + 161| EXCEPTIONS + 162| OTHERS = 1. + 163| ENDIF. + 164| + 165| CASE GS_UPLD_FCAT-DATATYPE. + 166| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 167| 'DEC' OR 'CURR'. + 168| PERFORM BDC_CURR USING . + 169| WHEN 'DATS'. + 170| PERFORM BDC_DATE USING . + 171| ENDCASE. + 172| "체크 박스 대문자 변경 + 173| IF GS_UPLD_FCAT-VALEXI = 'X' AND GS_UPLD_FCAT-INTLEN = '000001'. + 174| TRANSLATE TO UPPER CASE. + 175| ENDIF. + 176| + 177| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 178| TO . + 179| + 180| IF SY-SUBRC NE 0. + 181| MESSAGE S000 WITH 'Field assign Fail.'. + 182| LEAVE LIST-PROCESSING. + 183| ENDIF. + 184| + 185| TRY . + 186| = . + 187| + 188| CATCH CX_ROOT INTO LF_OREF. + 189| LV_TEXT = LF_OREF->GET_TEXT( ). + 190| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 191| 'Type conversion error :' LV_TEXT. + 192| LEAVE LIST-PROCESSING. + 193| ENDTRY. + 194| ENDLOOP. + 195| + 196| APPEND GS_DATA TO GT_DATA. + 197| CLEAR GS_DATA. + 198| + 199| ENDLOOP. +``` + +- **EN**: Converts each uploaded cell (dynamic CONVERSION_EXIT_*_INPUT, numeric/date cleanup, checkbox upper-case) and moves it into the typed GT_DATA structure, aborting on type conversion errors. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: ZCOS0050, CX_ROOT +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 숫자 형식, 날짜 형식, 타입 변환 오류 +- English: Excel Upload, Conversion Exit, Dynamic Table, Type Conversion +- 정의부(복사 시 함께 필요): [``](#decl-zcoc9030top-46--gf_uploadt-), [``](#decl-zcoc9030top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc9030top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9030top-53-gs_upld_fcat), [``](#decl-zcoc9030f01-130--fs_upld_field-), [`LV_CONVFUNC`](#decl-zcoc9030f01-132-lv_convfunc), [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`GS_DATA`](#decl-zcoc9030top-71-gs_data), [``](#decl-zcoc9030f01-131--fs_data_field-), [`LF_OREF`](#decl-zcoc9030f01-133-lf_oref), [`LV_TEXT`](#decl-zcoc9030f01-134-lv_text) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L138-L199` · confidence 0.88 · `ZCOC9030#ZCOC9030F01#FORM#TRANSFER_GT_DATA#C1` + +### FORM VALIDATION_CHECK — `ZCOC9030F01` L210-L288 (79줄) + +*업로드 손익센터가 CEPC에 이미 존재하는지, 세그먼트가 FAGL_SEGM에 존재하는지 검증해 오류 행을 표시한다.* + +> 이 unit 의 조각 3개가 66/79줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 손익센터를 중복 제거한 뒤 CEPC에서 관리회계영역·당일 유효(DATAB~DATBI) 조건으로 기존 손익센터 목록 GT_PRCTR을 조회해 중복 생성 검증에 사용한다. + +```abap + 218| CLEAR : LT_FORALL, LT_FORALL[]. + 219| LT_FORALL[] = GT_DATA[]. + 220| SORT LT_FORALL BY PROFIT_CTR. + 221| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 222| COMPARING PROFIT_CTR. + 223| + 224| IF LT_FORALL[] IS NOT INITIAL. + 225| SELECT PRCTR FROM CEPC + 226| INTO CORRESPONDING FIELDS OF TABLE GT_PRCTR + 227| FOR ALL ENTRIES IN LT_FORALL + 228| WHERE KOKRS = P_KOKRS + 229| AND PRCTR = LT_FORALL-PROFIT_CTR + 230| AND DATBI >= SY-DATUM + 231| AND DATAB <= SY-DATUM. + 232| + 233| SORT GT_PRCTR BY PRCTR. + 234| ENDIF. +``` + +- **EN**: Selects existing profit centers valid today from CEPC (FOR ALL ENTRIES on deduplicated uploaded profit centers) into GT_PRCTR for duplicate checking. +- 테이블(파서): read [CEPC](/tables/CEPC.md) / write - +- SAP 객체: CEPC +- 업무 키워드: 손익센터 마스터, 기존재 검증, 유효기간, 중복 생성 방지 +- English: Profit Center Master, CEPC, Duplicate Check, Validity Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`LT_FORALL`](#decl-zcoc9030f01-211-lt_forall), [`GT_PRCTR`](#decl-zcoc9030top-84-gt_prctr), [`P_KOKRS`](#decl-zcoc9030top-100-p_kokrs) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L218-L234` · confidence 0.92 · `ZCOC9030#ZCOC9030F01#FORM#VALIDATION_CHECK#C1` + +#### [sql_select] 업로드 세그먼트를 중복 제거한 뒤 FAGL_SEGM에서 존재하는 세그먼트 목록 GT_SEGMENT를 조회한다. + +```abap + 236| CLEAR : LT_FORALL, LT_FORALL[]. + 237| LT_FORALL[] = GT_DATA[]. + 238| SORT LT_FORALL BY SEGMENT. + 239| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 240| COMPARING SEGMENT. + 241| + 242| IF LT_FORALL[] IS NOT INITIAL. + 243| SELECT SEGMENT + 244| FROM FAGL_SEGM + 245| INTO CORRESPONDING FIELDS OF TABLE GT_SEGMENT + 246| FOR ALL ENTRIES IN LT_FORALL + 247| WHERE SEGMENT = LT_FORALL-SEGMENT. + 248| + 249| SORT GT_SEGMENT BY SEGMENT. + 250| ENDIF. +``` + +- **EN**: Selects existing segments from FAGL_SEGM for the deduplicated uploaded segments into GT_SEGMENT. +- 테이블(파서): read [FAGL_SEGM](/tables/FAGL_SEGM.md) / write - +- SAP 객체: FAGL_SEGM +- 업무 키워드: 세그먼트 마스터, 존재 검증, 신규 총계정원장 +- English: Segment, FAGL_SEGM, New G/L +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`LT_FORALL`](#decl-zcoc9030f01-211-lt_forall), [`GT_SEGMENT`](#decl-zcoc9030top-88-gt_segment) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L236-L250` · confidence 0.92 · `ZCOC9030#ZCOC9030F01#FORM#VALIDATION_CHECK#C2` + +#### [validation] 행별로 손익센터가 GT_PRCTR(CEPC)에 이미 있으면 기존재 오류, 세그먼트가 GT_SEGMENT(FAGL_SEGM)에 없으면 미존재 오류로 RED 상태·필드 강조·메시지를 설정하고 GV_UPLOAD_ERROR를 세운다. + +```abap + 253| LOOP AT GT_DATA. + 254| + 255| READ TABLE GT_PRCTR TRANSPORTING NO FIELDS + 256| WITH KEY PRCTR = GT_DATA-PROFIT_CTR + 257| BINARY SEARCH. + 258| + 259| IF SY-SUBRC EQ 0. + 260| GT_DATA-MESSAGE = '이미 존재하는 손익센터입니다.'(F05). + 261| GT_DATA-STATUS = GC_STATUS_RED. + 262| GV_UPLOAD_ERROR = 'X'. + 263| PERFORM SET_ERROR_FIELD_RED USING 'PROFIT_CTR'. + 264| PERFORM ADD_DATA_MESSAGE USING 'E' + 265| GT_DATA-PROFIT_CTR + 266| GT_DATA-MESSAGE. + 267| ENDIF. + 268| + 269| READ TABLE GT_SEGMENT TRANSPORTING NO FIELDS + 270| WITH KEY SEGMENT = GT_DATA-SEGMENT + 271| BINARY SEARCH. + 272| + 273| IF SY-SUBRC NE 0. + 274| GT_DATA-MESSAGE = '존재하지 않는 세그먼트입니다.'(F16). + 275| GT_DATA-STATUS = GC_STATUS_RED. + 276| GV_UPLOAD_ERROR = 'X'. + 277| PERFORM SET_ERROR_FIELD_RED USING 'SEGMENT'. + 278| PERFORM ADD_DATA_MESSAGE USING 'E' + 279| GT_DATA-SEGMENT + 280| GT_DATA-MESSAGE. + 281| ENDIF. + 282| + 283| MODIFY GT_DATA. CLEAR : GT_DATA. + 284| CLEAR : GT_PRCTR, GT_SEGMENT. + 285| + 286| ENDLOOP. +``` + +- **EN**: Validates each row: flags profit centers that already exist in CEPC and segments missing from FAGL_SEGM as errors with red highlight and messages. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CEPC, FAGL_SEGM +- 업무 키워드: 업로드 검증, 손익센터 중복, 세그먼트 미존재, 오류 표시 +- English: Validation, Profit Center, Segment, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`GT_PRCTR`](#decl-zcoc9030top-84-gt_prctr), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc9030top-22-gv_upload_error), [`GT_SEGMENT`](#decl-zcoc9030top-88-gt_segment) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L253-L286` · confidence 0.92 · `ZCOC9030#ZCOC9030F01#FORM#VALIDATION_CHECK#C3` + +### FORM ADD_DATA_MESSAGE — `ZCOC9030F01` L540-L566 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 547| IF P_VALUE IS NOT INITIAL. + 548| CONCATENATE P_VALUE ` : ` P_MESSAGE + 549| INTO LV_MESSAGE. + 550| ELSE. + 551| LV_MESSAGE = P_MESSAGE. + 552| ENDIF. + 553| + 554| IF P_STATUS = 'S'. + 555| LV_STATUS = GC_STATUS_GREEN. + 556| ELSEIF P_STATUS = 'E'. + 557| LV_STATUS = GC_STATUS_RED. + 558| ELSEIF P_STATUS = 'W'. + 559| LV_STATUS = GC_STATUS_YELLOW. + 560| ENDIF. + 561| GS_MSG_T_S-STATUS = LV_STATUS. + 562| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 563| + 564| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc9030f01-542-lv_message), [`LV_STATUS`](#decl-zcoc9030f01-543-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc9030top-82-gs_msg_t_s), [`GT_DATA`](#decl-zcoc9030top-58-gt_data) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L547-L564` · confidence 0.85 · `ZCOC9030#ZCOC9030F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC9030` L55-L66 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 56| IF SY-BATCH NE 'X'. + 57| IF GT_DATA[] IS NOT INITIAL. + 58| CALL SCREEN 100. + 59| ELSE. + 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 61| ENDIF. + 62| ELSE. + 63| IF GT_DATA[] IS NOT INITIAL. + 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 65| ENDIF. + 66| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data) +- 위치: `abap://ZCOC9030/ZCOC9030#L56-L66` · confidence 0.85 · `ZCOC9030#ZCOC9030#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC9030/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC9030/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC9030/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC9030/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9030top-106-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC9030/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC9030#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC9030#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc9030top-100-p_kokrs) +- 위치: `abap://ZCOC9030/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC9030#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC9030F01` L473-L531 (59줄) + +*선택한 ALV 행(P_ROW)의 메시지 목록(MSG_LIST)을 손익센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 표시한다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 해당 행의 MSG_LIST를 손익센터·상태·메시지 구조 LT_POPUP으로 변환하고 팝업 ALV 그리드 W_POPUP_GRID를 생성해 SHOW_DATA로 검증/생성 로그를 표시한다. + +```abap + 508| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 509| LT_POPUP-PRCTR = GT_DATA-PROFIT_CTR. + 510| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 511| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 512| APPEND LT_POPUP. + 513| CLEAR : LT_POPUP. + 514| ENDLOOP. + 515| + 516| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 517| + 518| CREATE OBJECT W_POPUP_GRID + 519| EXPORTING + 520| I_T_FIELDCATALOG = POPUP_FIELDCAT + 521| I_S_LAYOUT = LS_LAYO + 522| I_CAPTION = '' + 523| I_LEFT = 100 + 524| I_TOP = 150 + 525| I_HEIGHT = 400 + 526| I_WIDTH = 900. + 527| + 528| CALL METHOD W_POPUP_GRID->SHOW_DATA + 529| EXPORTING + 530| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Builds a popup log table from the row's message list and displays it in a popup ALV grid (W_POPUP_GRID->SHOW_DATA). +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- SAP 객체: LVC_T_FCAT, LVC_S_LAYO +- 업무 키워드: 오류 로그 팝업, 메시지 목록, 손익센터, 처리 결과 +- English: Error Log Popup, ALV Grid, Message List +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`GS_MSG_T_S`](#decl-zcoc9030top-82-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc9030top-73-gt_log_pop), [`LT_POPUP`](#decl-zcoc9030f01-476-lt_popup), [`LS_LAYO`](#decl-zcoc9030f01-475-ls_layo), [`W_POPUP_GRID`](#decl-zcoc9030top-80-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc9030f01-474-popup_fieldcat) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L508-L530` · confidence 0.8 · `ZCOC9030#ZCOC9030F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BAPI — `ZCOC9030F01` L340-L358 (19줄) + +*중복 생성 여부를 확인하고 사용자 확인 팝업 후 RUN_BAPI(손익센터 생성)를 실행한다.* + +> 이 unit 의 조각 1개가 13/19줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 생성한 경우 E 메시지로 중단하고, POPUP_TO_CONFIRM_02로 손익센터 생성 여부를 확인(J)한 뒤 GV_ALREADY_POST를 세우고 RUN_BAPI를 실행한다. + +```abap + 345| IF GV_ALREADY_POST = 'X'. + 346| MESSAGE E000 WITH '이미 생성했습니다.'(F10). + 347| ENDIF. + 348| + 349| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 350| '손익센터를 생성하시겠습니까?'(F15) ' ' + 351| CHANGING L_ANSWER. + 352| IF L_ANSWER <> 'J'. + 353| EXIT. + 354| ENDIF. + 355| + 356| GV_ALREADY_POST = 'X'. + 357| PERFORM RUN_BAPI. +``` + +- **EN**: Guards against duplicate creation, confirms with the user via POPUP_TO_CONFIRM_02, then runs RUN_BAPI to create the profit centers. +- 호출(파서): POPUP_TO_CONFIRM_02, RUN_BAPI +- SAP 객체: POPUP_TO_CONFIRM_02, BAPI_PROFITCENTER_CREATE +- 업무 키워드: 중복 생성 방지, 확인 팝업, 손익센터 생성 +- English: Confirmation Popup, Duplicate Check, Profit Center +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc9030top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc9030f01-341-l_answer) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L345-L357` · confidence 0.85 · `ZCOC9030#ZCOC9030F01#FORM#EXECUTE_BAPI#C1` + +### FORM RUN_BAPI — `ZCOC9030F01` L367-L429 (63줄) + +*GT_DATA 행마다 BAPI_PROFITCENTER_CREATE로 손익센터를 생성하고 결과 메시지를 기록하며 성공 시 COMMIT, 실패 시 ROLLBACK으로 확정한다.* + +> 이 unit 의 조각 1개가 46/63줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 행별로 손익센터 ID(BAPI0015ID2: 관리회계영역+손익센터)와 유효기간(VALIDFROM~99991231), TRANSFER_DATA_TO_BAPI로 채운 기본 데이터(BAPI0015_4)를 넘겨 BAPI_PROFITCENTER_CREATE를 호출하고, RETURN 메시지를 행에 추가한 뒤 손익센터가 반환되면 BAPI_TRANSACTION_COMMIT과 GREEN, 아니면 BAPI_TRANSACTION_ROLLBACK과 RED 상태를 기록한다. + +```abap + 380| LOOP AT GT_DATA. + 381| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 382| + 383| LS_PROFITCENTERID-CO_AREA = P_KOKRS. + 384| LS_PROFITCENTERID-PROFIT_CTR = GT_DATA-PROFIT_CTR. + 385| LV_VALFROM = GT_DATA-VALIDFROM. + 386| LV_VALTO = '99991231'. + 387| + 388| PERFORM TRANSFER_DATA_TO_BAPI CHANGING LS_BASIC_DATA. + 389| + 390| CALL FUNCTION 'BAPI_PROFITCENTER_CREATE' + 391| EXPORTING + 392| PROFITCENTERID = LS_PROFITCENTERID + 393| VALIDFROM = LV_VALFROM + 394| VALIDTO = LV_VALTO + 395| BASICDATA = LS_BASIC_DATA + 396| IMPORTING + 397| RETURN = LS_RETURNS + 398| PROFITCENTER = LV_PRCTR. + 399| + 400| LV_BDC_SUBRC = SY-SUBRC. + 401| + 402| PERFORM BUILD_MESSAGE_BAPI USING LS_RETURNS + 403| CHANGING GT_DATA-MESSAGE. + 404| PERFORM ADD_DATA_MESSAGE USING + 405| GT_MESSTAB-MSGTYP '' + 406| GT_DATA-MESSAGE. + 407| + 408| IF LV_BDC_SUBRC EQ 0 AND LV_PRCTR IS NOT INITIAL. + 409| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' + 410| EXPORTING + 411| WAIT = 'X'. + 412| GT_DATA-STATUS = GC_STATUS_GREEN. + 413| ELSE. + 414| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. + 415| GT_DATA-STATUS = GC_STATUS_RED. + 416| ENDIF. + 417| + 418| MODIFY GT_DATA. + 419| + 420| CLEAR : LS_RETURNS. + 421| CLEAR : GT_DATA. + 422| + 423| CLEAR : LV_PRCTR, LS_PROFITCENTERID, LS_BASIC_DATA. + 424| + 425| ENDLOOP. +``` + +- **EN**: For each row calls BAPI_PROFITCENTER_CREATE with profit center ID, validity period and basic data, logs the return message, then commits (BAPI_TRANSACTION_COMMIT) on success or rolls back on failure and sets the row status. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): TRANSFER_DATA_TO_BAPI, BAPI_PROFITCENTER_CREATE, BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK +- SAP 객체: BAPI_PROFITCENTER_CREATE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPI0015ID2, BAPI0015_4, CEPC +- 업무 키워드: 손익센터 생성, 유효기간, BAPI 호출, 커밋, 롤백, 처리 결과 +- English: Profit Center Create, Validity Period, BAPI Commit, Rollback, CO-PCA +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9030top-58-gt_data), [`LS_PROFITCENTERID`](#decl-zcoc9030f01-369-ls_profitcenterid), [`P_KOKRS`](#decl-zcoc9030top-100-p_kokrs), [`LV_VALFROM`](#decl-zcoc9030f01-370-lv_valfrom), [`LV_VALTO`](#decl-zcoc9030f01-371-lv_valto), [`LS_BASIC_DATA`](#decl-zcoc9030f01-372-ls_basic_data), [`LS_RETURNS`](#decl-zcoc9030f01-368-ls_returns), [`LV_PRCTR`](#decl-zcoc9030f01-373-lv_prctr), [`LV_BDC_SUBRC`](#decl-zcoc9030f01-375-lv_bdc_subrc), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green) 외 1건 +- 위치: `abap://ZCOC9030/ZCOC9030F01#L380-L425` · confidence 0.93 · `ZCOC9030#ZCOC9030F01#FORM#RUN_BAPI#C1` + +### FORM TRANSFER_DATA_TO_BAPI — `ZCOC9030F01` L437-L465 (29줄) + +*메인 필드카탈로그의 필드명을 기준으로 GT_DATA 행의 값을 동일 이름의 BAPI0015_4(손익센터 기본 데이터) 필드에 동적으로 매핑한다.* + +> 이 unit 의 조각 1개가 17/29줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] GT_MAIN_FIELDCAT의 각 필드명으로 P_CC(BAPI0015_4)와 GT_DATA의 동일 필드를 동적 ASSIGN해, 업로드 값이 비어 있지 않으면 BAPI 기본 데이터 구조에 복사한다. + +```abap + 447| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT. + 448| + 449| CONCATENATE 'P_CC-' LS_FIELDCAT-FIELDNAME + 450| INTO LV_BAPI_FIELD. + 451| + 452| ASSIGN (LV_BAPI_FIELD) TO . + 453| CHECK SY-SUBRC EQ 0. + 454| + 455| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 456| INTO LV_DATA_FIELD. + 457| + 458| ASSIGN (LV_DATA_FIELD) TO . + 459| CHECK SY-SUBRC EQ 0. + 460| + 461| CHECK IS NOT INITIAL. + 462| = . + 463| ENDLOOP. +``` + +- **EN**: Dynamically maps each non-empty GT_DATA field to the same-named field of the BAPI0015_4 basic data structure using the field catalog. +- SAP 객체: BAPI0015_4, BAPI_PROFITCENTER_CREATE +- 업무 키워드: BAPI 입력 매핑, 손익센터 기본 데이터, 동적 필드 매핑 +- English: BAPI Mapping, Profit Center Basic Data, Dynamic Assignment +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc9030top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc9030f01-439-ls_fieldcat), [`LV_BAPI_FIELD`](#decl-zcoc9030f01-443-lv_bapi_field), [``](#decl-zcoc9030f01-441--fs_bapi-), [`LV_DATA_FIELD`](#decl-zcoc9030f01-442-lv_data_field), [``](#decl-zcoc9030f01-440--fs_data-) +- 위치: `abap://ZCOC9030/ZCOC9030F01#L447-L463` · confidence 0.88 · `ZCOC9030#ZCOC9030F01#FORM#TRANSFER_DATA_TO_BAPI#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC9030I01` L6-L29 (24줄) + +*화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 기능코드가 BACK/CANC/EXIT면 CLEAR_CONTAINER_PROC로 ALV 객체를 해제하고 LEAVE PROGRAM 또는 LEAVE TO SCREEN 0 하며, &BDC면 EXECUTE_BAPI를 호출해 BAPI_COSTCENTER_CREATEMULTIPLE 기반 코스트센터 생성을 시작한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BAPI. + 24| + 25| WHEN OTHERS. + 26| * LEAVE PROGRAM. + 27| ENDCASE. +``` + +- **EN**: Dispatch OK codes: BACK/CANC/EXIT free the ALV containers and leave; &BDC calls EXECUTE_BAPI to start cost center creation through BAPI_COSTCENTER_CREATEMULTIPLE. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI +- SAP 객체: EXECUTE_BAPI, CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드 분기, 코스트센터 생성 실행, 화면 종료 +- English: OK Code, PAI Dispatch, Cost Center Create +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc9030top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc9030c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC9030/ZCOC9030I01#L9-L27` · confidence 0.85 · `ZCOC9030#ZCOC9030I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (317건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC9030C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc9030c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC9030TOP` (34건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc9030top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc9030top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc9030top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc9030top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc9030top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc9030top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc9030top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc9030top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc9030top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc9030top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc9030top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc9030top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc9030top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc9030top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc9030top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc9030top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L33-L34 {#decl-zcoc9030top-33-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0050'. +``` + +#### GC_SMW0 — constants · L35-L35 {#decl-zcoc9030top-35-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC9030'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc9030top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L46-L46 {#decl-zcoc9030top-46--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L47-L47 {#decl-zcoc9030top-47--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L49-L49 {#decl-zcoc9030top-49-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L50-L50 {#decl-zcoc9030top-50-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc9030top-52-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc9030top-53-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L58-L69 {#decl-zcoc9030top-58-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0050. + +DATA : + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + CELLTAB TYPE LVC_T_STYL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L71-L71 {#decl-zcoc9030top-71-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L73-L77 {#decl-zcoc9030top-73-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + PRCTR LIKE CEPC-PRCTR, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L80-L80 {#decl-zcoc9030top-80-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L82-L82 {#decl-zcoc9030top-82-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_PRCTR — data · L84-L86 {#decl-zcoc9030top-84-gt_prctr} + +```abap +DATA : BEGIN OF GT_PRCTR OCCURS 0, + PRCTR LIKE CEPC-PRCTR, +END OF GT_PRCTR. +``` + +#### GT_SEGMENT — data · L88-L90 {#decl-zcoc9030top-88-gt_segment} + +```abap +DATA : BEGIN OF GT_SEGMENT OCCURS 0, + SEGMENT LIKE FAGL_SEGM-SEGMENT, +END OF GT_SEGMENT. +``` + +#### P_KOKRS — parameter · L100-L101 {#decl-zcoc9030top-100-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_FNAME — parameter · L106-L107 {#decl-zcoc9030top-106-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC9030_P_FNAME. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC9030F01` (27건) + +#### L_UCOMM — data · unit 로컬 · L40-L40 {#decl-zcoc9030f01-40-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### — field-symbol · unit 로컬 · L130-L130 {#decl-zcoc9030f01-130--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L131-L131 {#decl-zcoc9030f01-131--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L132-L132 {#decl-zcoc9030f01-132-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L133-L133 {#decl-zcoc9030f01-133-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L134-L134 {#decl-zcoc9030f01-134-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_FORALL — data · unit 로컬 · L211-L211 {#decl-zcoc9030f01-211-lt_forall} + +```abap + DATA : LT_FORALL LIKE TABLE OF GT_DATA. +``` + +#### L_ANSWER — data · unit 로컬 · L341-L341 {#decl-zcoc9030f01-341-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LS_RETURNS — data · unit 로컬 · L368-L368 {#decl-zcoc9030f01-368-ls_returns} + +```abap + DATA : LS_RETURNS LIKE BAPIRET2. +``` + +#### LS_PROFITCENTERID — data · unit 로컬 · L369-L369 {#decl-zcoc9030f01-369-ls_profitcenterid} + +```abap + DATA : LS_PROFITCENTERID LIKE BAPI0015ID2. +``` + +#### LV_VALFROM — data · unit 로컬 · L370-L370 {#decl-zcoc9030f01-370-lv_valfrom} + +```abap + DATA : LV_VALFROM LIKE BAPI0015_3-DATE. +``` + +#### LV_VALTO — data · unit 로컬 · L371-L371 {#decl-zcoc9030f01-371-lv_valto} + +```abap + DATA : LV_VALTO LIKE BAPI0015_3-DATE. +``` + +#### LS_BASIC_DATA — data · unit 로컬 · L372-L372 {#decl-zcoc9030f01-372-ls_basic_data} + +```abap + DATA : LS_BASIC_DATA LIKE BAPI0015_4. +``` + +#### LV_PRCTR — data · unit 로컬 · L373-L373 {#decl-zcoc9030f01-373-lv_prctr} + +```abap + DATA : LV_PRCTR LIKE CEPC-PRCTR. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L375-L375 {#decl-zcoc9030f01-375-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L439-L439 {#decl-zcoc9030f01-439-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L440-L440 {#decl-zcoc9030f01-440--fs_data-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L441-L441 {#decl-zcoc9030f01-441--fs_bapi-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_DATA_FIELD — data · unit 로컬 · L442-L442 {#decl-zcoc9030f01-442-lv_data_field} + +```abap + DATA : LV_DATA_FIELD(30) TYPE C. +``` + +#### LV_BAPI_FIELD — data · unit 로컬 · L443-L443 {#decl-zcoc9030f01-443-lv_bapi_field} + +```abap + DATA : LV_BAPI_FIELD(30) TYPE C. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L474-L474 {#decl-zcoc9030f01-474-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L475-L475 {#decl-zcoc9030f01-475-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L476-L476 {#decl-zcoc9030f01-476-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L542-L542 {#decl-zcoc9030f01-542-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L543-L543 {#decl-zcoc9030f01-543-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_STRNM — data · unit 로컬 · L594-L594 {#decl-zcoc9030f01-594-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L595-L595 {#decl-zcoc9030f01-595-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC9030 L25-31 | 0 | 프로그램 초기화 시 관리회계영역 텍스트 설정(SET_DYNP)과 엑셀 양식 다운로드 버튼 활성화(FC01_ACTIVE)를 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC9030 L32-34 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능 버튼(엑셀 양식 다운로드) 명령을 처리한다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC9030 L35-40 | 0 | 선택화면 PBO에서 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC9030 L41-46 | 0 | 업로드 파일 경로 P_FNAME에 대한 F4 파일 선택 도움말(F4_FNAME)을 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC9030 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC9030 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC9030C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC9030C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC9030C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC9030C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC9030C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC9030C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC9030C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC9030C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC9030C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC9030C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC9030C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC9030C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC9030C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC9030C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC9030C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC9030C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC9030C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC9030C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC9030C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC9030C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC9030C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC9030C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC9030C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC9030C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC9030C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC9030F01 L6-17 | 0 | 선택화면에서 회사코드 변경 권한(GV_BUKRS_O)이 없으면 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOC9030F01 L24-30 | 0 | 선택화면 초기 표시 시 SET_KOKRS_BASE로 관리회계영역 기본 정보를 세팅하고 그 명칭을 P_BEZEI에 표시한다. | +| CONTROL_FCXX | FORM | ZCOC9030F01 L39-53 | 1 | 선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0로 SMW0에 등록된 손익센터 생성 업로드 엑셀 양식(GC_SMW0)을 연다. | +| CHECK_INPUT | FORM | ZCOC9030F01 L62-69 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC9030F01 L75-99 | 0 | 관리회계영역 기본 정보(SET_KOKRS_BASE)를 세팅하고 메인 ALV 필드카탈로그를 취득하며 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC9030F01 L105-108 | 0 | 진행 표시(BAR_MSG) 후 READ_DATA를 호출하는 데이터 처리 진입 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC9030F01 L117-120 | 0 | 선택화면에 엑셀 양식 다운로드 버튼(FC01)을 SET_BTN_1000으로 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC9030F01 L129-200 | 1 | 동적 엑셀 수신 테이블 의 각 행을 업로드 필드카탈로그 기준으로 CONVERSION_EXIT·숫자/날짜/체크박스 변환한 뒤 GT_DATA(ZCOS0050 구조)로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC9030F01 L210-288 | 3 | 업로드 손익센터가 CEPC에 이미 존재하는지, 세그먼트가 FAGL_SEGM에 존재하는지 검증해 오류 행을 표시한다. | +| READ_DATA | FORM | ZCOC9030F01 L297-319 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC9030F01 L327-334 | 0 | 오류 필드를 ALV 셀 색상(COL 6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 유틸리티 FORM이다. | +| EXECUTE_BAPI | FORM | ZCOC9030F01 L340-358 | 1 | 중복 생성 여부를 확인하고 사용자 확인 팝업 후 RUN_BAPI(손익센터 생성)를 실행한다. | +| RUN_BAPI | FORM | ZCOC9030F01 L367-429 | 1 | GT_DATA 행마다 BAPI_PROFITCENTER_CREATE로 손익센터를 생성하고 결과 메시지를 기록하며 성공 시 COMMIT, 실패 시 ROLLBACK으로 확정한다. | +| TRANSFER_DATA_TO_BAPI | FORM | ZCOC9030F01 L437-465 | 1 | 메인 필드카탈로그의 필드명을 기준으로 GT_DATA 행의 값을 동일 이름의 BAPI0015_4(손익센터 기본 데이터) 필드에 동적으로 매핑한다. | +| SHOW_ERROR_LOG | FORM | ZCOC9030F01 L473-531 | 1 | 선택한 ALV 행(P_ROW)의 메시지 목록(MSG_LIST)을 손익센터·상태·메시지 컬럼의 팝업 그리드(W_POPUP_GRID)로 표시한다. | +| ADD_DATA_MESSAGE | FORM | ZCOC9030F01 L540-566 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC9030F01 L575-585 | 0 | 상태가 비어 있는 GT_DATA 행에 초기 상태 아이콘(GC_STATUS_INIT)을 설정한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC9030F01 L593-639 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC9030I01 L6-29 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT는 ALV 컨테이너를 해제하고 화면을 빠져나가며, &BDC 기능코드는 EXECUTE_BAPI로 코스트센터 생성을 실행하는 기능코드 분기 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC9030O01 L6-18 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC9030O01 L24-67 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC9030O01 L77-121 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC9030O01 L129-135 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC9030O01 L143-148 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC9030O01 L156-169 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC9030O01 L178-206 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC9030O01 L215-230 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC9030O01 L240-307 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC9030O01 L315-342 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOC9040.md b/wiki/programs/ZCOC9040.md new file mode 100644 index 0000000..c33b9e2 --- /dev/null +++ b/wiki/programs/ZCOC9040.md @@ -0,0 +1,4703 @@ +--- +type: abap-program +title: "ZCOC9040 — 2차 원가요소 생성 Upload" +description: "엑셀 양식(구조 ZCOS0060)에 입력한 2차 원가요소(Secondary Cost Element) 목록을 업로드하여 관리회계영역(KOKRS)별로 일괄 생성하는 프로그램이다. 업로드 데이터를 CSKB 테이블과 대조해 이미 존재하는 원가요소를 검증한 뒤, ALV 화면에서 확인하고 BDC로 T-Code KA06(2차 원가요소 생성, SAPLKMA4)을 호출하여 원가요소·효력시작일·이름·내역·원가요소범주(KATYP)를 등록한다. 처리 결과(성공/오류 메시지)는 행별 상태 아이콘과 로그 팝업으로 확인한다." +resource: "abap://ZCOC9040" +tags: ["원가요소", "2차원가요소", "마스터데이터 업로드", "엑셀 업로드", "BDC", "관리회계", "CO-OM", "기능코드 분기", "화면 종료", "2차 원가요소 생성", "BDC 실행", "효력 시작일", "원가요소 범주", "처리 결과 메시지", "상태 아이콘", "BDC 옵션", "동기 업데이트", "표시 모드", "중복 생성 방지", "확인 팝업"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:16+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "DD01L", "DD07T", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KA06", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF", "Z_CO_OPEN_SMW0"] +x-code-hash: "d80b278f4ef1214c26da04fb82e6d8130d97cc709709abd879d9911ae0b089fe" +x-unit-count: 143 +x-chunk-count: 65 +x-declaration-count: 209 +--- + +## 업무 목적 + +엑셀 양식(구조 ZCOS0060)에 입력한 2차 원가요소(Secondary Cost Element) 목록을 업로드하여 관리회계영역(KOKRS)별로 일괄 생성하는 프로그램이다. 업로드 데이터를 CSKB 테이블과 대조해 이미 존재하는 원가요소를 검증한 뒤, ALV 화면에서 확인하고 BDC로 T-Code KA06(2차 원가요소 생성, SAPLKMA4)을 호출하여 원가요소·효력시작일·이름·내역·원가요소범주(KATYP)를 등록한다. 처리 결과(성공/오류 메시지)는 행별 상태 아이콘과 로그 팝업으로 확인한다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트 설정 및 '엑셀 양식 다운로드' 기능키(FC01) 활성화 (SET_DYNP, FC01_ACTIVE) +2. 기능키 FC01 선택 시 SMW0 오브젝트 ZCOC9040의 엑셀 업로드 양식을 Z_CO_OPEN_SMW0로 내려받는다 (CONTROL_FCXX) +3. 업로드 파일명 입력 여부를 검증하고 전역 변수·필드카탈로그·BDC 모드를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) +4. 업로드 구조 ZCOS0060 기반의 동적 내부테이블을 생성하고 엑셀 파일을 읽어 적재한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT) +5. 엑셀 데이터를 대문자 변환·CONVERSION_EXIT·금액/일자 변환 후 GT_DATA로 이관한다 (TRANSFER_GT_DATA) +6. CSKB에서 관리회계영역·유효기간 기준으로 이미 존재하는 원가요소를 조회하여 오류 표시(빨간색 셀, 메시지)한다 (VALIDATION_CHECK) +7. 상태 아이콘을 초기값으로 세팅한 후 화면 100의 ALV Grid에 업로드 결과를 표시한다 (EDIT_DATA, END-OF-SELECTION CALL SCREEN 100) +8. ALV 툴바의 생성 버튼(&BDC) 선택 시 확인 팝업 후 행별로 KA06 BDC(SAPLKMA4 0200/0299)를 실행하여 2차 원가요소를 생성하고 결과 메시지를 GT_DATA에 기록한다 (EXECUTE_BDC, BDC_OPTION, RUN_BDC) +9. 행 더블클릭 시 해당 원가요소의 처리 메시지 목록을 팝업 ALV로 조회한다 (SHOW_ERROR_LOG) + +## 핵심 내부테이블 + +- `GT_DATA` — 업로드된 2차 원가요소 데이터 (ZCOS0060 구조 + 상태 아이콘, 셀 색상, 메시지, 메시지 목록) (채움: TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA, RUN_BDC / 소비: VALIDATION_CHECK, RUN_BDC, SHOW_ERROR_LOG, DISPLAY_ALV_LIST) +- `` — 엑셀 원본을 CHAR 타입으로 받는 동적 생성 내부테이블 (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) +- `GT_UPLD_FCAT` — 업로드 구조 ZCOS0060의 필드카탈로그 (LVC_FIELDCATALOG_MERGE) (채움: CREATE_UPLOAD_TABLE / 소비: TRANSFER_GT_DATA) +- `GT_KSTAR` — CSKB에서 조회한 기존 원가요소 목록 (중복 검증용) (채움: VALIDATION_CHECK / 소비: VALIDATION_CHECK) +- `GT_BDCDATA` — KA06 BDC 화면 필드 값 (CSKBZ-KOKRS/KSTAR/DATAB_ANFO/DATBI_ANFO/KTEXT/LTEXT/KATYP) (채움: RUN_BDC / 소비: RUN_BDC) +- `GT_MESSTAB` — CALL TRANSACTION 결과 메시지 (채움: RUN_BDC / 소비: RUN_BDC) +- `GT_LOG_POP` — 행별 처리 메시지 팝업 표시용 (원가요소, 상태, 메시지) (채움: SHOW_ERROR_LOG / 소비: SHOW_ERROR_LOG) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, DD01L, DD07T, T001, TKA01, TKT09 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KA06, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END + +## 로직 조각 (65건 / unit 58개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc9040top-99-p_kokrs) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM CONTROL_FCXX — `ZCOC9040F01` L37-L51 (15줄) + +*선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0으로 SMW0 문서(원가요소 생성 업로드 엑셀 양식)를 연다.* + +> 이 unit 의 조각 1개가 7/15줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택화면 기능코드 FC01(엑셀 양식 다운로드)이면 Z_CO_OPEN_SMW0으로 SMW0 문서 GC_SMW0을 '원가요소 생성 Upload 양식' 제목으로 열어 업로드 양식을 제공한다. + +```abap + 41| CASE L_UCOMM. + 42| WHEN 'FC01'. + 43| CALL FUNCTION 'Z_CO_OPEN_SMW0' + 44| EXPORTING + 45| P_DOCNAM = GC_SMW0 + 46| P_TITLE = '원가요소 생성 Upload 양식'(F02). + 47| ENDCASE. +``` + +- **EN**: On function code FC01 call Z_CO_OPEN_SMW0 to open the SMW0 web repository document with the cost element creation upload template. +- 호출(파서): Z_CO_OPEN_SMW0 +- SAP 객체: Z_CO_OPEN_SMW0, SMW0 +- 업무 키워드: 엑셀 양식 다운로드, 업로드 양식, SMW0 문서 +- English: Excel Template, Web Repository, SMW0 +- 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc9040f01-38-l_ucomm), [`GC_SMW0`](#decl-zcoc9040top-35-gc_smw0) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L41-L47` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#CONTROL_FCXX#C1` + +### EVENT START-OF-SELECTION — `ZCOC9040` L48-L55 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 49| PERFORM CHECK_INPUT. + 50| PERFORM INITIALIZE_DATA. + 51| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOC9040/ZCOC9040#L49-L51` · confidence 0.8 · `ZCOC9040#ZCOC9040#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOC9040F01` L60-L67 (8줄) + +*선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 업로드 파일 경로(P_FNAME)가 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 메시지를 오류로 표시하고 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 62| IF P_FNAME IS INITIAL. + 63| MESSAGE S000 DISPLAY LIKE 'E' WITH + 64| '업로드 파일을 선택하여 주시기 바랍니다'(F01). + 65| LEAVE LIST-PROCESSING. + 66| ENDIF. +``` + +- **EN**: Validate that an upload file path was entered on the selection screen and stop with an error message otherwise. +- 업무 키워드: 입력값 검증, 업로드 파일 필수 +- English: Input Validation, Selection Screen +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9040top-105-p_fname) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L62-L66` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#CHECK_INPUT#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM READ_DATA — `ZCOC9040F01` L285-L307 (23줄) + +*동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CREATE_UPLOAD_TABLE로 ZCOS0260 기반 동적 테이블을 만들고 UPLOAD_XLS_STRUCT로 엑셀(2행부터)을 읽은 뒤 TRANSFER_GT_DATA·VALIDATION_CHECK·EDIT_DATA를 순서대로 수행한다. + +```abap + 288| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. + 289| * 2. 업로드 파일 취득 + 290| PERFORM UPLOAD_XLS_STRUCT TABLES + 291| USING P_FNAME " 파일명 + 292| 1 "S_COL-LOW + 293| 2 "S_ROW-LOW + 294| 256 "S_COL-HIGH + 295| 65536. "S_ROW-HIGH + 296| CHECK [] IS NOT INITIAL. + 297| *3. 인터널 테이블로 이전 + 298| PERFORM TRANSFER_GT_DATA. + 299| + 300| CHECK GT_DATA[] IS NOT INITIAL. + 301| + 302| "4. Validation + 303| PERFORM VALIDATION_CHECK. + 304| + 305| *5. 인터널 테이블 데이터 + 306| PERFORM EDIT_DATA. +``` + +- **EN**: Orchestrate dynamic upload table creation, Excel read via UPLOAD_XLS_STRUCT, transfer to GT_DATA, validation and data editing. +- 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, VALIDATION_CHECK, EDIT_DATA +- SAP 객체: ZCOS0260 +- 업무 키워드: 업로드 처리 흐름, 엑셀 읽기, 데이터 검증 +- English: Upload Flow, Excel, Validation +- 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc9040top-33-gc_upload_struct), [``](#decl-zcoc9040top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc9040top-105-p_fname), [`GT_DATA`](#decl-zcoc9040top-58-gt_data) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L288-L306` · confidence 0.8 · `ZCOC9040#ZCOC9040F01#FORM#READ_DATA#C1` + +### FORM CREATE_UPLOAD_TABLE — `ZCOC9040F01` L548-L593 (46줄) + +*업로드 구조(ZCOS0060)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE로 얻고 모든 필드를 CHAR로 바꾼 뒤 CL_ALV_TABLE_CREATE로 엑셀 수신용 동적 내부테이블을 생성한다.* + +> 이 unit 의 조각 1개가 39/46줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] LVC_FIELDCATALOG_MERGE로 구조 ZCOS0060의 필드카탈로그 GT_UPLD_FCAT을 얻고 소수점 필드 길이 +1·DATS 길이 10·DATATYPE CHAR로 조정한 카탈로그로 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE을 호출해 동적 테이블 와 행 구조 를 만든다. + +```abap + 554| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' + 555| EXPORTING + 556| I_STRUCTURE_NAME = LV_STRNM + 557| I_BYPASSING_BUFFER = 'X' + 558| CHANGING + 559| CT_FIELDCAT = GT_UPLD_FCAT + 560| EXCEPTIONS + 561| INCONSISTENT_INTERFACE = 1 + 562| PROGRAM_ERROR = 2 + 563| OTHERS = 3. + 564| + 565| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 566| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. + 567| + 568| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. + 569| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. + 570| ENDIF. + 571| + 572| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. + 573| GS_UPLD_FCAT-INTLEN = '10'. + 574| ENDIF. + 575| + 576| " 올린 그대로 받기 위해 CHAR로 변환. + 577| GS_UPLD_FCAT-DATATYPE = 'CHAR'. + 578| GS_UPLD_FCAT-INTTYPE = 'C'. + 579| + 580| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. + 581| ENDLOOP. + 582| + 583| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 584| EXPORTING + 585| IT_FIELDCATALOG = LT_UPLD_FCAT + 586| IMPORTING + 587| EP_TABLE = GF_UPLOADT. + 588| + 589| ASSIGN GF_UPLOADT->* TO . + 590| + 591| CREATE DATA GF_UPLOADS LIKE LINE OF . + 592| ASSIGN GF_UPLOADS->* TO . +``` + +- **EN**: Get the field catalog of upload structure ZCOS0060 via LVC_FIELDCATALOG_MERGE, convert every field to CHAR (adjusting lengths for decimals and dates) and create the dynamic upload table and work area with CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE. +- 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0060 +- 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 엑셀 수신 +- English: Dynamic Internal Table, Field Catalog, Upload Structure, RTTS +- 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc9040f01-549-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc9040top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9040top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc9040f01-550-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc9040top-49-gf_uploadt), [``](#decl-zcoc9040top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc9040top-50-gf_uploads), [``](#decl-zcoc9040top-47--gf_uploads-) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L554-L592` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#CREATE_UPLOAD_TABLE#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM TRANSFER_GT_DATA — `ZCOC9040F01` L127-L219 (93줄) + +*동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다.* + +> 이 unit 의 조각 2개가 75/93줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 업로드 구조 필드들의 도메인에 대해 DD01L에서 소문자 허용 여부(LOWERCASE)를 조회해 대문자 변환 대상 판단용 LT_LOWERCASE를 만든다. + +```abap + 143| SELECT DOMNAME LOWERCASE + 144| INTO TABLE LT_LOWERCASE + 145| FROM DD01L + 146| FOR ALL ENTRIES IN GT_UPLD_FCAT + 147| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME + 148| AND AS4LOCAL = 'A'. + 149| + 150| SORT LT_LOWERCASE. +``` + +- **EN**: Read the lowercase-allowed flag from DD01L for the domains of the upload structure fields to decide which values must be upper-cased. +- 테이블(파서): read [DD01L](/tables/DD01L.md) / write - +- SAP 객체: DD01L, GT_UPLD_FCAT +- 업무 키워드: 도메인 소문자 허용, 대문자 변환 기준 +- English: Domain, Lowercase Flag, DD01L +- 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc9040f01-128-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc9040top-52-gt_upld_fcat) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L143-L150` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#TRANSFER_GT_DATA#C1` + +#### [calculation] 엑셀 수신 행의 각 컬럼을 필드카탈로그 순서로 ASSIGN COMPONENT하여 소문자 비허용 도메인은 대문자로 바꾸고 CONVEXIT가 있으면 CONVERSION_EXIT_xxx_INPUT을 동적 호출하며 숫자형은 BDC_CURR, 날짜형은 BDC_DATE로 변환하고 길이 1 체크박스 필드도 대문자화한 뒤 GS_DATA로 옮겨(형 변환 예외는 메시지 후 종료) GT_DATA에 APPEND 한다. + +```abap + 152| LOOP AT INTO . + 153| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. + 154| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE + 155| TO . + 156| + 157| IF SY-SUBRC NE 0. + 158| MESSAGE S000 WITH 'Field assign Fail.'. + 159| LEAVE LIST-PROCESSING. + 160| ENDIF. + 161| + 162| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME + 163| BINARY SEARCH. + 164| + 165| IF LT_LOWERCASE-LOWERCASE NE 'X'. + 166| TRANSLATE TO UPPER CASE. + 167| ENDIF. + 168| + 169| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. + 170| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' + 171| INTO LV_CONVFUNC. + 172| + 173| CALL FUNCTION LV_CONVFUNC + 174| EXPORTING + 175| INPUT = + 176| IMPORTING + 177| OUTPUT = + 178| EXCEPTIONS + 179| OTHERS = 1. + 180| ENDIF. + 181| + 182| CASE GS_UPLD_FCAT-DATATYPE. + 183| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR + 184| 'DEC' OR 'CURR'. + 185| PERFORM BDC_CURR USING . + 186| WHEN 'DATS'. + 187| PERFORM BDC_DATE USING . + 188| ENDCASE. + 189| "체크 박스 대문자 변경 + 190| IF GS_UPLD_FCAT-VALEXI = 'X' AND GS_UPLD_FCAT-INTLEN = '000001'. + 191| TRANSLATE TO UPPER CASE. + 192| ENDIF. + 193| + 194| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA + 195| TO . + 196| + 197| IF SY-SUBRC NE 0. + 198| MESSAGE S000 WITH 'Field assign Fail.'. + 199| LEAVE LIST-PROCESSING. + 200| ENDIF. + 201| + 202| TRY . + 203| = . + 204| + 205| CATCH CX_ROOT INTO LF_OREF. + 206| LV_TEXT = LF_OREF->GET_TEXT( ). + 207| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME + 208| 'Type conversion error :' LV_TEXT. + 209| LEAVE LIST-PROCESSING. + 210| ENDTRY. + 211| ENDLOOP. + 212| + 213| APPEND GS_DATA TO GT_DATA. + 214| CLEAR GS_DATA. + 215| + 216| CLEAR : LT_LOWERCASE. + 217| + 218| ENDLOOP. +``` + +- **EN**: For each uploaded Excel row assign every column by field catalog position, upper-case values whose domain disallows lowercase, call CONVERSION_EXIT_xxx_INPUT dynamically when present, normalize numeric types via BDC_CURR and dates via BDC_DATE, upper-case one-character checkbox fields, move into GS_DATA (abort on type conversion exception) and append to GT_DATA. +- 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT +- SAP 객체: CONVERSION_EXIT_*_INPUT, BDC_CURR, BDC_DATE, GT_DATA, ZCOS0040 +- 업무 키워드: 엑셀 데이터 이전, 변환 루틴, 숫자 형식 변환, 날짜 형식 변환, 체크박스 대문자, 형 변환 오류 +- English: Excel Transfer, Conversion Exit, Numeric Conversion, Date Conversion, Type Conversion Error +- 정의부(복사 시 함께 필요): [``](#decl-zcoc9040top-46--gf_uploadt-), [``](#decl-zcoc9040top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc9040top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc9040top-53-gs_upld_fcat), [``](#decl-zcoc9040f01-133--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc9040f01-128-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc9040f01-135-lv_convfunc), [`GT_DATA`](#decl-zcoc9040top-58-gt_data), [`GS_DATA`](#decl-zcoc9040top-71-gs_data), [``](#decl-zcoc9040f01-134--fs_data_field-), [`LF_OREF`](#decl-zcoc9040f01-136-lf_oref), [`LV_TEXT`](#decl-zcoc9040f01-137-lv_text) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L152-L218` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#TRANSFER_GT_DATA#C2` + +### FORM VALIDATION_CHECK — `ZCOC9040F01` L229-L276 (48줄) + +*업로드된 원가요소가 CSKB에 이미 존재하는지(관리회계영역·유효기간 기준) 검증하여 중복 원가요소 행을 오류로 표시한다.* + +> 이 unit 의 조각 2개가 37/48줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_DATA의 원가요소를 중복 제거한 LT_FORALL로 CSKB에서 관리회계영역 P_KOKRS·현재 유효기간에 이미 존재하는 원가요소를 GT_KSTAR에 조회한다. + +```abap + 237| CLEAR : LT_FORALL, LT_FORALL[]. + 238| LT_FORALL[] = GT_DATA[]. + 239| SORT LT_FORALL BY KSTAR. + 240| DELETE ADJACENT DUPLICATES FROM LT_FORALL + 241| COMPARING KSTAR. + 242| + 243| IF LT_FORALL[] IS NOT INITIAL. + 244| + 245| SELECT KSTAR FROM CSKB + 246| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 247| FOR ALL ENTRIES IN LT_FORALL + 248| WHERE KOKRS = P_KOKRS + 249| AND KSTAR = LT_FORALL-KSTAR + 250| AND DATBI >= SY-DATUM + 251| AND DATAB <= SY-DATUM. + 252| + 253| SORT GT_KSTAR BY KSTAR. + 254| ENDIF. +``` + +- **EN**: Deduplicate uploaded cost elements and select those already existing in CSKB for the controlling area and current validity into GT_KSTAR (FOR ALL ENTRIES). +- 테이블(파서): read [CSKB](/tables/CSKB.md) / write - +- SAP 객체: CSKB +- 업무 키워드: 기존 원가요소 조회, 중복 검증, 유효기간 +- English: Cost Element, Duplicate Check, Controlling Area, Validity +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9040top-58-gt_data), [`LT_FORALL`](#decl-zcoc9040f01-230-lt_forall), [`GT_KSTAR`](#decl-zcoc9040top-84-gt_kstar), [`P_KOKRS`](#decl-zcoc9040top-99-p_kokrs) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L237-L254` · confidence 0.95 · `ZCOC9040#ZCOC9040F01#FORM#VALIDATION_CHECK#C1` + +#### [validation] GT_DATA 각 행의 원가요소가 GT_KSTAR(CSKB 기존 원가요소)에 있으면 '이미 존재하는 원가요소입니다' 메시지·상태 RED·KSTAR 셀 빨간색·메시지 목록 추가 후 GV_UPLOAD_ERROR를 세운다. + +```abap + 256| LOOP AT GT_DATA. + 257| + 258| READ TABLE GT_KSTAR TRANSPORTING NO FIELDS + 259| WITH KEY KSTAR = GT_DATA-KSTAR + 260| BINARY SEARCH. + 261| + 262| IF SY-SUBRC EQ 0. + 263| GT_DATA-MESSAGE = '이미 존재하는 원가요소입니다.'(F05). + 264| GT_DATA-STATUS = GC_STATUS_RED. + 265| GV_UPLOAD_ERROR = 'X'. + 266| PERFORM SET_ERROR_FIELD_RED USING 'KSTAR'. + 267| PERFORM ADD_DATA_MESSAGE USING 'E' + 268| GT_DATA-KSTAR + 269| GT_DATA-MESSAGE. + 270| ENDIF. + 271| + 272| MODIFY GT_DATA. CLEAR : GT_DATA. + 273| + 274| ENDLOOP. +``` + +- **EN**: Flag each row whose cost element already exists in CSKB with an error message, RED status, red KSTAR cell and set GV_UPLOAD_ERROR. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE +- SAP 객체: CSKB +- 업무 키워드: 중복 원가요소 오류, 업로드 검증, 오류 표시 +- English: Validation, Duplicate Cost Element, Upload Error +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9040top-58-gt_data), [`GT_KSTAR`](#decl-zcoc9040top-84-gt_kstar), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc9040top-22-gv_upload_error) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L256-L274` · confidence 0.95 · `ZCOC9040#ZCOC9040F01#FORM#VALIDATION_CHECK#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOC9040F01` L495-L521 (27줄) + +*검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다.* + +> 이 unit 의 조각 1개가 18/27줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 값(P_VALUE)이 있으면 값 : 메시지 형태로 조합하고 상태 S/E/W를 초록/빨강/노랑 아이콘으로 변환해 GS_MSG_T_S를 GT_DATA-MSG_LIST에 INSERT 한다. + +```abap + 502| IF P_VALUE IS NOT INITIAL. + 503| CONCATENATE P_VALUE ` : ` P_MESSAGE + 504| INTO LV_MESSAGE. + 505| ELSE. + 506| LV_MESSAGE = P_MESSAGE. + 507| ENDIF. + 508| + 509| IF P_STATUS = 'S'. + 510| LV_STATUS = GC_STATUS_GREEN. + 511| ELSEIF P_STATUS = 'E'. + 512| LV_STATUS = GC_STATUS_RED. + 513| ELSEIF P_STATUS = 'W'. + 514| LV_STATUS = GC_STATUS_YELLOW. + 515| ENDIF. + 516| GS_MSG_T_S-STATUS = LV_STATUS. + 517| GS_MSG_T_S-MESSAGE = LV_MESSAGE. + 518| + 519| INSERT GS_MSG_T_S INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Build the message text as value : message when a value is given, map status S/E/W to green/red/yellow icons and insert the entry into GT_DATA-MSG_LIST. +- SAP 객체: GT_DATA, GS_MSG_T_S +- 업무 키워드: 메시지 누적, 상태 아이콘, 오류 로그 +- English: Message List, Status Icon, Validation Log +- 정의부(복사 시 함께 필요): [`LV_MESSAGE`](#decl-zcoc9040f01-497-lv_message), [`LV_STATUS`](#decl-zcoc9040f01-498-lv_status), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GS_MSG_T_S`](#decl-zcoc9040top-82-gs_msg_t_s), [`GT_DATA`](#decl-zcoc9040top-58-gt_data) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L502-L519` · confidence 0.85 · `ZCOC9040#ZCOC9040F01#FORM#ADD_DATA_MESSAGE#C1` + +### EVENT END-OF-SELECTION — `ZCOC9040` L56-L67 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 57| IF SY-BATCH NE 'X'. + 58| IF GT_DATA[] IS NOT INITIAL. + 59| CALL SCREEN 100. + 60| ELSE. + 61| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 62| ENDIF. + 63| ELSE. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 66| ENDIF. + 67| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9040top-58-gt_data) +- 위치: `abap://ZCOC9040/ZCOC9040#L57-L67` · confidence 0.85 · `ZCOC9040#ZCOC9040#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOC9040/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOC9040/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOC9040/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOC9040/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc9040top-105-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOC9040/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC9040#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC9040#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc9040top-99-p_kokrs) +- 위치: `abap://ZCOC9040/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC9040#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM SHOW_ERROR_LOG — `ZCOC9040F01` L428-L486 (59줄) + +*ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 원가요소·상태·메시지 컬럼의 팝업 ALV 그리드(W_POPUP_GRID)로 보여준다.* + +> 이 unit 의 조각 1개가 23/59줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 선택 행의 GT_DATA-MSG_LIST를 원가요소 KSTAR·상태·메시지 형태의 LT_POPUP으로 변환하고 팝업 ALV 그리드 객체 W_POPUP_GRID를 생성해 SHOW_DATA로 로그 팝업을 표시한다. + +```abap + 463| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. + 464| LT_POPUP-KSTAR = GT_DATA-KSTAR. + 465| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. + 466| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. + 467| APPEND LT_POPUP. + 468| CLEAR : LT_POPUP. + 469| ENDLOOP. + 470| + 471| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. + 472| + 473| CREATE OBJECT W_POPUP_GRID + 474| EXPORTING + 475| I_T_FIELDCATALOG = POPUP_FIELDCAT + 476| I_S_LAYOUT = LS_LAYO + 477| I_CAPTION = '' + 478| I_LEFT = 100 + 479| I_TOP = 150 + 480| I_HEIGHT = 400 + 481| I_WIDTH = 900. + 482| + 483| CALL METHOD W_POPUP_GRID->SHOW_DATA + 484| EXPORTING + 485| I_T_DATA = LT_POPUP[]. +``` + +- **EN**: Convert the selected row's message list into LT_POPUP (cost element, status, message) and display it in a popup ALV grid via W_POPUP_GRID->SHOW_DATA. +- 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA +- 업무 키워드: 오류 로그 팝업, 행별 메시지, 처리 결과 조회 +- English: Message Log, Popup ALV, Error Log +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9040top-58-gt_data), [`GS_MSG_T_S`](#decl-zcoc9040top-82-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc9040top-73-gt_log_pop), [`LT_POPUP`](#decl-zcoc9040f01-431-lt_popup), [`LS_LAYO`](#decl-zcoc9040f01-430-ls_layo), [`W_POPUP_GRID`](#decl-zcoc9040top-80-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc9040f01-429-popup_fieldcat) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L463-L485` · confidence 0.8 · `ZCOC9040#ZCOC9040F01#FORM#SHOW_ERROR_LOG#C1` + +### FORM EXECUTE_BDC — `ZCOC9040F01` L328-L347 (20줄) + +*중복 생성을 막고 '2차 원가요소를 생성하시겠습니까?' 확인 후 BDC 옵션을 설정하고 RUN_BDC로 KA06 BDC를 실행한다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 이미 생성한 경우 E 메시지로 중단하고 POPUP_TO_CONFIRM_02 확인에서 'J'이면 GV_ALREADY_POST를 세운 뒤 BDC_OPTION(표시모드 P_DSMOD)과 RUN_BDC(KA06 실행)를 수행한다. + +```abap + 333| IF GV_ALREADY_POST = 'X'. + 334| MESSAGE E000 WITH '이미 생성했습니다.'(F10). + 335| ENDIF. + 336| + 337| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' + 338| '2차 원가요소를 생성하시겠습니까?'(F15) ' ' + 339| CHANGING L_ANSWER. + 340| IF L_ANSWER <> 'J'. + 341| EXIT. + 342| ENDIF. + 343| + 344| GV_ALREADY_POST = 'X'. + 345| PERFORM BDC_OPTION USING P_DSMOD. + 346| PERFORM RUN_BDC. +``` + +- **EN**: Block re-execution if already created, confirm via POPUP_TO_CONFIRM_02, then set BDC options and run the KA06 BDC via RUN_BDC. +- 호출(파서): POPUP_TO_CONFIRM_02, BDC_OPTION, RUN_BDC +- SAP 객체: POPUP_TO_CONFIRM_02, KA06 +- 업무 키워드: 중복 생성 방지, 확인 팝업, BDC 실행, 2차 원가요소 생성 +- English: Duplicate Check, Confirmation Popup, Batch Input, Secondary Cost Element +- 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc9040top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc9040f01-329-l_answer), [`P_DSMOD`](#decl-zcoc9040top-111-p_dsmod) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L333-L346` · confidence 0.9 · `ZCOC9040#ZCOC9040F01#FORM#EXECUTE_BDC#C1` + +### FORM BDC_OPTION — `ZCOC9040F01` L602-L610 (9줄) + +*CALL TRANSACTION용 BDC 옵션(GS_BDC_OPTION)을 기본 크기, 동기 업데이트 'S', 화면 표시 모드 PV_DSMOD로 설정한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_BDC_OPTION으로 DEFSIZE='X', UPDMODE='S'(동기 업데이트), DISMODE=PV_DSMOD(선택화면 표시모드)인 BDC 실행 옵션 구조 GS_BDC_OPTION을 만든다. + +```abap + 603| PERFORM SET_BDC_OPTION USING 'X' "DEFSIZE + 604| 'S' "UPDMODE + 605| '' "CATTMODE + 606| PV_DSMOD "DISMODE + 607| '' "RACCOMMIT + 608| '' "NOBINPI + 609| CHANGING GS_BDC_OPTION. +``` + +- **EN**: Build the CTU_PARAMS option structure GS_BDC_OPTION with default size, synchronous update mode 'S' and the display mode from the selection screen. +- 호출(파서): SET_BDC_OPTION +- SAP 객체: CTU_PARAMS +- 업무 키워드: BDC 옵션, 동기 업데이트, 표시 모드 +- English: CTU_PARAMS, Update Mode, Display Mode, Batch Input +- 정의부(복사 시 함께 필요): [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L603-L609` · confidence 0.8 · `ZCOC9040#ZCOC9040F01#FORM#BDC_OPTION#C1` + +### FORM RUN_BDC — `ZCOC9040F01` L356-L420 (65줄) + +*GT_DATA 각 행에 대해 KA06(SAPLKMA4) BDC 화면 데이터를 구성하고 CALL TRANSACTION으로 2차 원가요소를 생성한 뒤 결과 메시지와 상태를 행에 기록한다.* + +> 이 unit 의 조각 1개가 53/65줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 행마다 SAPLKMA4 0200(관리회계영역·원가요소·효력시작일·종료일 99991231)과 0299(이름·내역·원가요소범주 KATYP, 저장 =BU) BDC 데이터를 만들어 CALL TRANSACTION 'KA06'을 GS_BDC_OPTION으로 실행하고, GT_MESSTAB 메시지를 BUILD_MESSAGE/ADD_DATA_MESSAGE로 행 메시지에 쌓으며 SY-SUBRC=0이면 상태 GREEN·KS 037 성공메시지, 아니면 RED로 표시한다. + +```abap + 364| LOOP AT GT_DATA. + 365| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. + 366| + 367| CLEAR : GT_BDCDATA, GT_BDCDATA[]. + 368| CLEAR : GT_MESSTAB, GT_MESSTAB[]. + 369| + 370| PERFORM DYNPRO TABLES GT_BDCDATA USING: + 371| 'X' 'SAPLKMA4' '0200', + 372| ' ' 'BDC_OKCODE' '/00', + 373| ' ' 'CSKBZ-KOKRS' P_KOKRS, + 374| ' ' 'CSKBZ-KSTAR' GT_DATA-KSTAR, + 375| ' ' 'CSKBZ-DATAB_ANFO' GT_DATA-DATAB, + 376| ' ' 'CSKBZ-DATBI_ANFO' LV_DATBI, + 377| + 378| 'X' 'SAPLKMA4' '0299', + 379| ' ' 'BDC_OKCODE' '/00', + 380| ' ' 'CSKBZ-KTEXT' GT_DATA-KTEXT, + 381| ' ' 'CSKBZ-LTEXT' GT_DATA-LTEXT, + 382| ' ' 'CSKBZ-KATYP' GT_DATA-KATYP, + 383| 'X' 'SAPLKMA4' '0299', + 384| ' ' 'BDC_OKCODE' '=BU'. + 385| + 386| CALL TRANSACTION 'KA06' + 387| USING GT_BDCDATA[] + 388| OPTIONS FROM GS_BDC_OPTION + 389| MESSAGES INTO GT_MESSTAB[]. + 390| + 391| LV_BDC_SUBRC = SY-SUBRC. + 392| + 393| LOOP AT GT_MESSTAB. + 394| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 395| CHANGING GT_DATA-MESSAGE. + 396| PERFORM ADD_DATA_MESSAGE USING + 397| GT_MESSTAB-MSGTYP '' + 398| GT_DATA-MESSAGE. + 399| ENDLOOP. + 400| + 401| IF LV_BDC_SUBRC EQ 0 . + 402| GT_DATA-STATUS = GC_STATUS_GREEN. + 403| + 404| MESSAGE ID 'KS' TYPE 'S' NUMBER '037' + 405| INTO GT_DATA-MESSAGE + 406| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 407| PERFORM ADD_DATA_MESSAGE USING + 408| GT_MESSTAB-MSGTYP '' + 409| GT_DATA-MESSAGE. + 410| ELSE. + 411| GT_DATA-STATUS = GC_STATUS_RED. + 412| ENDIF. + 413| + 414| MODIFY GT_DATA. + 415| CLEAR : GT_DATA. + 416| ENDLOOP. +``` + +- **EN**: For each row build BDC data for KA06 screens SAPLKMA4 0200 (controlling area, cost element, valid-from, valid-to 99991231) and 0299 (name, description, cost element category, save), call transaction KA06 with GS_BDC_OPTION, collect GT_MESSTAB messages into the row and set status GREEN with message KS 037 on success or RED on failure. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, KA06, BUILD_MESSAGE, ADD_DATA_MESSAGE, ADD_DATA_MESSAGE +- SAP 객체: KA06, SAPLKMA4, CSKBZ, KS 037 +- 업무 키워드: 2차 원가요소 생성, BDC 실행, 효력 시작일, 원가요소 범주, 처리 결과 메시지, 상태 아이콘 +- English: Secondary Cost Element, Batch Input, Call Transaction, Cost Element Category, Validity Date +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc9040top-58-gt_data), [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`P_KOKRS`](#decl-zcoc9040top-99-p_kokrs), [`LV_DATBI`](#decl-zcoc9040f01-357-lv_datbi), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`LV_BDC_SUBRC`](#decl-zcoc9040f01-358-lv_bdc_subrc), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) +- 위치: `abap://ZCOC9040/ZCOC9040F01#L364-L416` · confidence 0.95 · `ZCOC9040#ZCOC9040F01#FORM#RUN_BDC#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOC9040I01` L6-L29 (24줄) + +*화면 100의 기능코드에 따라 종료(컨테이너 정리) 또는 &BDC 시 KA06 BDC 실행(EXECUTE_BDC)을 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 시 ALV 컨테이너를 해제하고 화면을 나가며, &BDC 시 EXECUTE_BDC로 2차 원가요소 생성 BDC(KA06)를 실행한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| WHEN '&BDC'. + 23| PERFORM EXECUTE_BDC. + 24| + 25| WHEN OTHERS. + 26| * LEAVE PROGRAM. + 27| ENDCASE. +``` + +- **EN**: Dispatch screen 100 OK codes: free ALV containers and leave on BACK/CANC/EXIT, run the KA06 BDC for secondary cost element creation on &BDC. +- 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BDC +- SAP 객체: KA06 +- 업무 키워드: 기능코드 분기, 화면 종료, 2차 원가요소 생성 +- English: User Command, BDC, Secondary Cost Element +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc9040top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc9040c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOC9040/ZCOC9040I01#L9-L27` · confidence 0.9 · `ZCOC9040#ZCOC9040I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (309건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOC9040C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc9040c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOC9040TOP` (35건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcoc9040top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcoc9040top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcoc9040top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcoc9040top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcoc9040top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcoc9040top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcoc9040top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcoc9040top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc9040top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcoc9040top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcoc9040top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc9040top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc9040top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcoc9040top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcoc9040top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcoc9040top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L33-L34 {#decl-zcoc9040top-33-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCOS0060'. +``` + +#### GC_SMW0 — constants · L35-L35 {#decl-zcoc9040top-35-gc_smw0} + +```abap +CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC9040'. +``` + +#### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc9040top-41-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L46-L46 {#decl-zcoc9040top-46--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L47-L47 {#decl-zcoc9040top-47--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L49-L49 {#decl-zcoc9040top-49-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L50-L50 {#decl-zcoc9040top-50-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc9040top-52-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc9040top-53-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L58-L69 {#decl-zcoc9040top-58-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOS0060. + +DATA : + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + CELLTAB TYPE LVC_T_STYL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_DATA — data · L71-L71 {#decl-zcoc9040top-71-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L73-L77 {#decl-zcoc9040top-73-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KSTAR LIKE CEPC-PRCTR, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L80-L80 {#decl-zcoc9040top-80-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L82-L82 {#decl-zcoc9040top-82-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_KSTAR — data · L84-L86 {#decl-zcoc9040top-84-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKA-KSTAR, +END OF GT_KSTAR. +``` + +#### GT_SEGMENT — data · L88-L90 {#decl-zcoc9040top-88-gt_segment} + +```abap +DATA : BEGIN OF GT_SEGMENT OCCURS 0, + SEGMENT LIKE FAGL_SEGM-SEGMENT, +END OF GT_SEGMENT. +``` + +#### P_KOKRS — parameter · L99-L100 {#decl-zcoc9040top-99-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_FNAME — parameter · L105-L106 {#decl-zcoc9040top-105-p_fname} + +```abap +PARAMETER : P_FNAME TYPE RLGRAP-FILENAME + MEMORY ID ZCOC9040_P_FNAME. +``` + +#### P_DSMOD — parameter · L111-L111 {#decl-zcoc9040top-111-p_dsmod} + +```abap +PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOC9040F01` (18건) + +#### L_UCOMM — data · unit 로컬 · L38-L38 {#decl-zcoc9040f01-38-l_ucomm} + +```abap + DATA : L_UCOMM LIKE SY-UCOMM. +``` + +#### LT_LOWERCASE — data · unit 로컬 · L128-L131 {#decl-zcoc9040f01-128-lt_lowercase} + +```abap + DATA : BEGIN OF LT_LOWERCASE OCCURS 0, + DOMNAME LIKE DD01L-DOMNAME, + LOWERCASE LIKE DD01L-LOWERCASE, + END OF LT_LOWERCASE. +``` + +#### — field-symbol · unit 로컬 · L133-L133 {#decl-zcoc9040f01-133--fs_upld_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L134-L134 {#decl-zcoc9040f01-134--fs_data_field-} + +```abap +FIELD-SYMBOLS: + TYPE ANY. +``` + +#### LV_CONVFUNC — data · unit 로컬 · L135-L135 {#decl-zcoc9040f01-135-lv_convfunc} + +```abap + DATA : LV_CONVFUNC TYPE STRING. +``` + +#### LF_OREF — data · unit 로컬 · L136-L136 {#decl-zcoc9040f01-136-lf_oref} + +```abap + DATA : LF_OREF TYPE REF TO CX_ROOT. +``` + +#### LV_TEXT — data · unit 로컬 · L137-L137 {#decl-zcoc9040f01-137-lv_text} + +```abap + DATA : LV_TEXT TYPE STRING. +``` + +#### LT_FORALL — data · unit 로컬 · L230-L230 {#decl-zcoc9040f01-230-lt_forall} + +```abap + DATA : LT_FORALL LIKE TABLE OF GT_DATA. +``` + +#### L_ANSWER — data · unit 로컬 · L329-L329 {#decl-zcoc9040f01-329-l_answer} + +```abap + DATA: L_ANSWER. +``` + +#### LV_DATBI — data · unit 로컬 · L357-L357 {#decl-zcoc9040f01-357-lv_datbi} + +```abap + DATA : LV_DATBI LIKE SY-DATUM. +``` + +#### LV_BDC_SUBRC — data · unit 로컬 · L358-L358 {#decl-zcoc9040f01-358-lv_bdc_subrc} + +```abap + DATA : LV_BDC_SUBRC LIKE SY-SUBRC. +``` + +#### POPUP_FIELDCAT — data · unit 로컬 · L429-L429 {#decl-zcoc9040f01-429-popup_fieldcat} + +```abap + DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### LS_LAYO — data · unit 로컬 · L430-L430 {#decl-zcoc9040f01-430-ls_layo} + +```abap + DATA : LS_LAYO TYPE LVC_S_LAYO. +``` + +#### LT_POPUP — data · unit 로컬 · L431-L431 {#decl-zcoc9040f01-431-lt_popup} + +```abap + DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. +``` + +#### LV_MESSAGE — data · unit 로컬 · L497-L497 {#decl-zcoc9040f01-497-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LV_STATUS — data · unit 로컬 · L498-L498 {#decl-zcoc9040f01-498-lv_status} + +```abap + DATA : LV_STATUS LIKE ICON-ID. +``` + +#### LV_STRNM — data · unit 로컬 · L549-L549 {#decl-zcoc9040f01-549-lv_strnm} + +```abap + DATA : LV_STRNM LIKE DD02L-TABNAME. +``` + +#### LT_UPLD_FCAT — data · unit 로컬 · L550-L550 {#decl-zcoc9040f01-550-lt_upld_fcat} + +```abap + DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOC9040 L26-32 | 0 | INITIALIZATION 이벤트에서 SET_DYNP(관리회계영역 기본값)와 FC01_ACTIVE(양식 다운로드 버튼)를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOC9040 L33-35 | 0 | 선택화면 PAI에서 CONTROL_FCXX를 호출해 기능코드를 처리하는 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC9040 L36-41 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 PBO 이벤트이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC9040 L42-47 | 0 | 업로드 파일 P_FNAME의 F4 파일 선택 도움(F4_FNAME)을 호출한다. | +| START-OF-SELECTION | EVENT | ZCOC9040 L48-55 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOC9040 L56-67 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC9040C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC9040C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC9040C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC9040C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC9040C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC9040C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC9040C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC9040C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC9040C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOC9040C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOC9040C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOC9040C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOC9040C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOC9040C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOC9040C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOC9040C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOC9040C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOC9040C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOC9040C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOC9040C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOC9040C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOC9040C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOC9040C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOC9040C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOC9040C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOC9040F01 L6-17 | 0 | 회사코드가 비어 있을 때 선택화면 그룹 MG1 필드를 입력 불가로 설정하는 LOOP AT SCREEN 화면 제어이다. | +| SET_DYNP | FORM | ZCOC9040F01 L24-28 | 0 | 초기화 시 SET_KOKRS_BASE로 관리회계영역 기본정보를 읽어 텍스트 P_BEZEI를 설정한다. | +| CONTROL_FCXX | FORM | ZCOC9040F01 L37-51 | 1 | 선택화면 버튼 FC01 클릭 시 Z_CO_OPEN_SMW0으로 SMW0 문서(원가요소 생성 업로드 엑셀 양식)를 연다. | +| CHECK_INPUT | FORM | ZCOC9040F01 L60-67 | 1 | 선택화면의 업로드 파일명(P_FNAME) 입력 여부를 검사해 없으면 오류 메시지로 중단하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOC9040F01 L73-97 | 0 | 관리회계영역 기본정보와 메인 ALV 필드카탈로그를 설정하고 BDC 표시모드(SET_DSMOD)와 상태 플래그를 초기화한다. | +| PROCESS_DATA | FORM | ZCOC9040F01 L103-106 | 0 | 진행률 메시지를 표시하고 READ_DATA를 호출하는 디스패치 FORM이다. | +| FC01_ACTIVE | FORM | ZCOC9040F01 L115-118 | 0 | 선택화면에 '엑셀 양식 다운로드' 버튼(FC01)을 아이콘과 함께 활성화한다. | +| TRANSFER_GT_DATA | FORM | ZCOC9040F01 L127-219 | 2 | 동적 엑셀 수신 테이블 의 문자값을 업로드 구조(ZCOS0040) 필드카탈로그에 따라 대문자 변환·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이전한다. | +| VALIDATION_CHECK | FORM | ZCOC9040F01 L229-276 | 2 | 업로드된 원가요소가 CSKB에 이미 존재하는지(관리회계영역·유효기간 기준) 검증하여 중복 원가요소 행을 오류로 표시한다. | +| READ_DATA | FORM | ZCOC9040F01 L285-307 | 1 | 동적 업로드 테이블 생성 → 엑셀 읽기 → GT_DATA 이전 → 검증 → 합계·텍스트 편집까지 매출 계획 데이터 준비 흐름을 순차 호출한다. | +| SET_ERROR_FIELD_RED | FORM | ZCOC9040F01 L315-322 | 0 | 오류 필드를 ALV 셀 색상(빨강, COL=6)으로 강조하기 위해 GT_DATA-F_COL에 색상 정보를 추가하는 표시용 헬퍼이다. | +| EXECUTE_BDC | FORM | ZCOC9040F01 L328-347 | 1 | 중복 생성을 막고 '2차 원가요소를 생성하시겠습니까?' 확인 후 BDC 옵션을 설정하고 RUN_BDC로 KA06 BDC를 실행한다. | +| RUN_BDC | FORM | ZCOC9040F01 L356-420 | 1 | GT_DATA 각 행에 대해 KA06(SAPLKMA4) BDC 화면 데이터를 구성하고 CALL TRANSACTION으로 2차 원가요소를 생성한 뒤 결과 메시지와 상태를 행에 기록한다. | +| SHOW_ERROR_LOG | FORM | ZCOC9040F01 L428-486 | 1 | ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 원가요소·상태·메시지 컬럼의 팝업 ALV 그리드(W_POPUP_GRID)로 보여준다. | +| ADD_DATA_MESSAGE | FORM | ZCOC9040F01 L495-521 | 1 | 검증 결과 메시지를 값과 함께 조합하고 상태(S/E/W)에 따른 신호등 아이콘을 붙여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가한다. | +| EDIT_DATA | FORM | ZCOC9040F01 L530-540 | 0 | GT_DATA 행의 상태 아이콘이 비어 있으면 초기 상태(GC_STATUS_INIT)로 설정한다. | +| CREATE_UPLOAD_TABLE | FORM | ZCOC9040F01 L548-593 | 1 | 업로드 구조(ZCOS0060)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE로 얻고 모든 필드를 CHAR로 바꾼 뒤 CL_ALV_TABLE_CREATE로 엑셀 수신용 동적 내부테이블을 생성한다. | +| BDC_OPTION | FORM | ZCOC9040F01 L602-610 | 1 | CALL TRANSACTION용 BDC 옵션(GS_BDC_OPTION)을 기본 크기, 동기 업데이트 'S', 화면 표시 모드 PV_DSMOD로 설정한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOC9040I01 L6-29 | 1 | 화면 100의 기능코드에 따라 종료(컨테이너 정리) 또는 &BDC 시 KA06 BDC 실행(EXECUTE_BDC)을 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOC9040O01 L6-18 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC9040O01 L24-68 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC9040O01 L78-122 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOC9040O01 L130-136 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOC9040O01 L144-149 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOC9040O01 L157-170 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC9040O01 L179-207 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC9040O01 L216-231 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOC9040O01 L241-300 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOC9040O01 L308-335 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR0010.md b/wiki/programs/ZCOR0010.md new file mode 100644 index 0000000..ec02598 --- /dev/null +++ b/wiki/programs/ZCOR0010.md @@ -0,0 +1,4332 @@ +--- +type: abap-program +title: "ZCOR0010 — 예산통제 그룹 지정" +description: "예산 통제(Budget Control) 대상이 되는 원가요소 그룹(Cost Element Group, 기본값 BUDGET_CEL, SET CLASS 0102)의 하위 그룹을 SETNODE에서 읽고, BAPI_COSTELEMENTGRP_GETDETAIL로 각 하위 그룹의 원가요소 범위를 가져와 CSKA의 개별 원가요소(KSTAR)로 전개한다. 전개 결과(관리회계영역·원가요소그룹·원가요소·텍스트)를 커스텀 테이블 ZCOT0010에 관리회계영역 단위로 삭제 후 재저장하여 예산통제 그룹 매핑을 갱신하고, ALV 화면(100)에 지정/조회 결과를 표시한다. ALV에서 더블클릭하면 T-Code KAH2(원가요소 그룹 변경)로 이동한다." +resource: "abap://ZCOR0010" +tags: ["예산관리", "예산통제", "원가요소그룹", "원가요소", "마스터데이터", "관리회계", "사용자 명령", "예산통제 그룹 지정", "화면 종료", "원가요소 그룹 변경", "트랜잭션 호출", "더블클릭 네비게이션", "예산통제 그룹 저장", "기존 데이터 삭제", "매핑 갱신", "원가요소명 보완", "그룹명 보완", "텍스트 조회", "원가요소 전개", "값 범위"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:17+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKA", "CSKU", "DD07T", "SETHEADERT", "SETNODE", "T001", "TKA01", "TKT09"] +x-tables-write: ["GT_DATA", "ZCOT0010"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_COSTELEMENTGRP_GETDETAIL", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KAH2", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "03f38a1dde5c982b8fad36305c0687c1a76d78ee28368fd5966c40307eeb94e4" +x-unit-count: 133 +x-chunk-count: 60 +x-declaration-count: 202 +--- + +## 업무 목적 + +예산 통제(Budget Control) 대상이 되는 원가요소 그룹(Cost Element Group, 기본값 BUDGET_CEL, SET CLASS 0102)의 하위 그룹을 SETNODE에서 읽고, BAPI_COSTELEMENTGRP_GETDETAIL로 각 하위 그룹의 원가요소 범위를 가져와 CSKA의 개별 원가요소(KSTAR)로 전개한다. 전개 결과(관리회계영역·원가요소그룹·원가요소·텍스트)를 커스텀 테이블 ZCOT0010에 관리회계영역 단위로 삭제 후 재저장하여 예산통제 그룹 매핑을 갱신하고, ALV 화면(100)에 지정/조회 결과를 표시한다. ALV에서 더블클릭하면 T-Code KAH2(원가요소 그룹 변경)로 이동한다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역(KOKRS) 텍스트를 TKA01에서 읽어 표시하고 입력 필드를 잠근다 (SET_DYNP, LOOP_AT_SCREEN) +2. 전역 변수와 메인 ALV 필드카탈로그(GT_DATA 구조)를 초기화한다 (INITIALIZE_DATA) +3. SETNODE에서 예산통제 원가요소 그룹(P_SETNM, SETCLASS 0102, 계정과목표 GV_KTOPL)의 하위 그룹 목록을 조회한다 (SELECT_DATA) +4. 하위 그룹별로 BAPI_COSTELEMENTGRP_GETDETAIL을 호출하여 원가요소 값 범위(VALFROM/VALTO)를 GT_SETLEAF에 EQ/BT 조건으로 구성한다 (SELECT_DATA) +5. 구성된 원가요소 범위로 CSKA를 조회해 개별 원가요소를 전개하고, 각 원가요소가 속한 하위 그룹명을 매핑하여 GT_DATA를 생성한다 (SELECT_CSKS) +6. CSKU에서 원가요소명, SETHEADERT에서 그룹명을 보완하고 관리회계영역·그룹·원가요소 순으로 정렬한다 (EDIT_DATA) +7. ZCOT0010을 관리회계영역 기준으로 DELETE 후 GT_DATA 내용을 MODIFY로 저장하고 완료 메시지를 표시한다 (MODIFY_DB) +8. 화면 100의 ALV Grid에 예산통제 그룹 지정 결과를 표시하며, 더블클릭 시 KAH2로 원가요소 그룹 변경 화면을 호출한다 (END-OF-SELECTION CALL SCREEN 100, CALL_KAH2) + +## 핵심 내부테이블 + +- `GT_SETNODE` — SETNODE에서 조회한 예산통제 그룹의 하위 원가요소 그룹(SUBSETNAME) 목록 (채움: SELECT_DATA / 소비: SELECT_DATA) +- `GT_SETLEAF` — BAPI_COSTELEMENTGRP_GETDETAIL 결과로 만든 하위 그룹별 원가요소 값 범위(SETNAME, VALFROM, VALTO, EQ/BT) (채움: SELECT_DATA / 소비: SELECT_CSKS) +- `GT_DATA` — ZCOT0010 구조 기반 원가요소별 예산통제 그룹 매핑 (KOKRS, GROUPNAME, KSTAR, 원가요소명, 그룹명) (채움: SELECT_CSKS, EDIT_DATA / 소비: MODIFY_DB, DISPLAY_ALV_LIST) +- `LT_ZCOT0010` — ZCOT0010 저장용 로컬 테이블 (채움: MODIFY_DB / 소비: MODIFY_DB) + +## 테이블 / 외부 호출 + +- read: AENR, CSKA, CSKU, DD07T, SETHEADERT, SETNODE, T001, TKA01, TKT09 +- write: GT_DATA, ZCOT0010 +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_COSTELEMENTGRP_GETDETAIL, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KAH2, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END + +## 로직 조각 (60건 / unit 53개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor0010top-94-p_kokrs) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM INITIALIZE_DATA — `ZCOR0010F01` L34-L56 (23줄) + +*관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 상태 변수를 초기화한다.* + +> 이 unit 의 조각 1개가 8/23줄(35%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_KOKRS_BASE로 관리회계영역 P_KOKRS의 명칭·계정과목표 등 기준 정보를 세팅하고 GET_FCAT_LIKE_ITAB으로 메인 ALV 구조(GC_MAIN_ITAB_NAME)의 필드카탈로그를 취득한다. + +```abap + 40| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 41| P_BEZEI = GV_KOKRS_BEZEI. + 42| + 43| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 44| " MAIN ALV용 딕셔너리 구조 취득. + 45| PERFORM GET_FCAT_LIKE_ITAB + 46| TABLES GT_MAIN_FIELDCAT + 47| USING GC_MAIN_ITAB_NAME. +``` + +- **EN**: Set controlling area base info via SET_KOKRS_BASE and fetch the main ALV field catalog with GET_FCAT_LIKE_ITAB. +- 호출(파서): SET_KOKRS_BASE, GET_FCAT_LIKE_ITAB +- 업무 키워드: 관리회계영역 기준정보, 필드카탈로그 취득, 초기화 +- English: Controlling Area, Field Catalog, Initialization +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0010top-94-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GT_MAIN_FIELDCAT`](#decl-zcor0010top-40-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zcor0010top-31-gc_main_itab_name) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L40-L47` · confidence 0.75 · `ZCOR0010#ZCOR0010F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM PROCESS_DATA — `ZCOR0010F01` L62-L67 (6줄) + +*하위 그룹 조회(SELECT_DATA) → 원가요소 전개(SELECT_CSKS) → 텍스트 보완(EDIT_DATA) → ZCOT0010 저장(MODIFY_DB)을 순차 호출하는 처리 진입 FORM이다.* + +> 이 unit 의 조각 1개가 4/6줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 예산통제 그룹 전개와 ZCOT0010 갱신을 위해 SELECT_DATA, SELECT_CSKS, EDIT_DATA, MODIFY_DB를 순서대로 수행한다. + +```abap + 63| PERFORM SELECT_DATA. + 64| PERFORM SELECT_CSKS. + 65| PERFORM EDIT_DATA. + 66| PERFORM MODIFY_DB. +``` + +- **EN**: Run SELECT_DATA, SELECT_CSKS, EDIT_DATA and MODIFY_DB in sequence to expand the budget control group and update ZCOT0010. +- 호출(파서): SELECT_DATA, SELECT_CSKS, EDIT_DATA, MODIFY_DB +- SAP 객체: ZCOT0010 +- 업무 키워드: 처리 흐름, 예산통제 그룹 전개, 저장 +- English: Process Flow, Budget Control Group +- 위치: `abap://ZCOR0010/ZCOR0010F01#L63-L66` · confidence 0.8 · `ZCOR0010#ZCOR0010F01#FORM#PROCESS_DATA#C1` + +### FORM SELECT_DATA — `ZCOR0010F01` L76-L144 (69줄) + +*SETNODE에서 예산통제 원가요소 그룹의 하위 그룹을 조회하고 BAPI_COSTELEMENTGRP_GETDETAIL로 각 하위 그룹의 원가요소 값 범위를 GT_SETLEAF에 구성한다.* + +> 이 unit 의 조각 2개가 45/69줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] SETNODE에서 SETCLASS 0102(원가요소)·계정과목표 GV_KTOPL·그룹명 P_SETNM의 하위 그룹(SUBSETNAME) 목록을 조회해 GT_SETNODE에 정렬 저장한다. + +```abap + 94| SELECT SUBSETNAME + 95| INTO CORRESPONDING FIELDS OF TABLE GT_SETNODE + 96| FROM SETNODE + 97| WHERE SETCLASS = GC_SETCLASS " 원가요소 + 98| AND SUBCLASS = GV_KTOPL " 계정과목표 + 99| AND SETNAME = P_SETNM. + 100| + 101| SORT GT_SETNODE BY SUBSETNAME. + 102| + 103| CHECK GT_SETNODE[] IS NOT INITIAL. +``` + +- **EN**: Select the sub-group names of the budget control cost element group from SETNODE (set class 0102, chart of accounts) into GT_SETNODE. +- 테이블(파서): read [SETNODE](/tables/SETNODE.md) / write - +- SAP 객체: SETNODE +- 업무 키워드: 원가요소 그룹 계층, 하위 그룹 조회, 예산통제 그룹 +- English: Cost Element Group, Set Hierarchy, SETNODE +- 정의부(복사 시 함께 필요): [`GT_SETNODE`](#decl-zcor0010top-83-gt_setnode), [`GC_SETCLASS`](#decl-zcor0010top-33-gc_setclass), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_SETNM`](#decl-zcor0010top-100-p_setnm) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L94-L103` · confidence 0.9 · `ZCOR0010#ZCOR0010F01#FORM#SELECT_DATA#C1` + +#### [fm_call] 하위 그룹마다 BAPI_COSTELEMENTGRP_GETDETAIL을 호출해 HIERARCHYVALUES의 VALFROM/VALTO를 받고, 같으면 EQ 다르면 BT 옵션의 SIGN 'I' 범위 항목으로 GT_SETLEAF에 구성한 뒤 SETNAME/VALFROM으로 정렬한다. + +```abap + 109| LOOP AT GT_SETNODE. + 110| CLEAR : LT_HIERARCHYNODES, LT_HIERARCHYNODES[]. + 111| CLEAR : LT_HIERARCHYVALUES, LT_HIERARCHYVALUES[]. + 112| CLEAR : LS_BAPIRET2. + 113| + 114| LV_GROUPNAME = GT_SETNODE-SUBSETNAME. + 115| + 116| CALL FUNCTION 'BAPI_COSTELEMENTGRP_GETDETAIL' + 117| EXPORTING + 118| CHARTOFACCOUNTS = LV_CHRT_ACCTS + 119| GROUPNAME = LV_GROUPNAME + 120| CONTROLLINGAREA = LV_CO + 121| LANGUAGE = LV_LANGUAGE + 122| IMPORTING + 123| RETURN = LS_BAPIRET2 + 124| TABLES + 125| HIERARCHYNODES = LT_HIERARCHYNODES + 126| HIERARCHYVALUES = LT_HIERARCHYVALUES. + 127| + 128| LOOP AT LT_HIERARCHYVALUES. + 129| GT_SETLEAF-SETNAME = LV_GROUPNAME. + 130| IF LT_HIERARCHYVALUES-VALFROM NE + 131| LT_HIERARCHYVALUES-VALTO. + 132| GT_SETLEAF-VALOPTION = 'BT'. + 133| ELSE. + 134| GT_SETLEAF-VALOPTION = 'EQ'. + 135| ENDIF. + 136| GT_SETLEAF-VALSIGN = 'I'. + 137| GT_SETLEAF-VALFROM = LT_HIERARCHYVALUES-VALFROM. + 138| GT_SETLEAF-VALTO = LT_HIERARCHYVALUES-VALTO. + 139| APPEND GT_SETLEAF. CLEAR : GT_SETLEAF. + 140| ENDLOOP. + 141| ENDLOOP. + 142| + 143| SORT GT_SETLEAF BY SETNAME VALFROM. +``` + +- **EN**: For each sub-group call BAPI_COSTELEMENTGRP_GETDETAIL and convert its value intervals into EQ/BT range entries in GT_SETLEAF. +- 호출(파서): BAPI_COSTELEMENTGRP_GETDETAIL +- SAP 객체: BAPI_COSTELEMENTGRP_GETDETAIL, BAPISET_HIER, BAPI1113_VALUES +- 업무 키워드: 원가요소 그룹 상세, 값 범위 구성, BAPI 호출 +- English: Cost Element Group Detail, Value Interval, BAPI +- 정의부(복사 시 함께 필요): [`GT_SETNODE`](#decl-zcor0010top-83-gt_setnode), [`LT_HIERARCHYNODES`](#decl-zcor0010f01-79-lt_hierarchynodes), [`LT_HIERARCHYVALUES`](#decl-zcor0010f01-81-lt_hierarchyvalues), [`LS_BAPIRET2`](#decl-zcor0010f01-78-ls_bapiret2), [`LV_GROUPNAME`](#decl-zcor0010f01-84-lv_groupname), [`LV_CHRT_ACCTS`](#decl-zcor0010f01-83-lv_chrt_accts), [`LV_CO`](#decl-zcor0010f01-85-lv_co), [`LV_LANGUAGE`](#decl-zcor0010f01-86-lv_language), [`GT_SETLEAF`](#decl-zcor0010top-84-gt_setleaf) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L109-L143` · confidence 0.9 · `ZCOR0010#ZCOR0010F01#FORM#SELECT_DATA#C2` + +### FORM SELECT_CSKS — `ZCOR0010F01` L153-L193 (41줄) + +*GT_SETLEAF의 원가요소 값 범위를 RANGES로 만들어 CSKA에서 개별 원가요소로 전개하고 각 원가요소가 속한 하위 그룹명을 매핑해 GT_DATA를 생성한다.* + +> 이 unit 의 조각 2개가 31/41줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_SETLEAF의 VALFROM/VALTO·옵션(EQ/BT)을 RANGES LR_KSTAR로 구성해 계정과목표 GV_KTOPL의 CSKA에서 범위에 해당하는 개별 원가요소(KSTAR)를 조회한다. + +```abap + 161| LOOP AT GT_SETLEAF. + 162| LR_KSTAR-LOW = GT_SETLEAF-VALFROM. + 163| LR_KSTAR-OPTION = GT_SETLEAF-VALOPTION. + 164| LR_KSTAR-SIGN = GT_SETLEAF-VALSIGN. + 165| + 166| IF GT_SETLEAF-VALFROM NE GT_SETLEAF-VALTO. + 167| LR_KSTAR-HIGH = GT_SETLEAF-VALTO. + 168| ENDIF. + 169| + 170| APPEND LR_KSTAR. CLEAR : LR_KSTAR. + 171| ENDLOOP. + 172| + 173| CHECK LR_KSTAR[] IS NOT INITIAL. + 174| + 175| SELECT KSTAR FROM CSKA + 176| INTO CORRESPONDING FIELDS OF TABLE LT_CSKA + 177| WHERE KTOPL = GV_KTOPL + 178| AND KSTAR IN LR_KSTAR. +``` + +- **EN**: Build a RANGES table from the group value intervals and select the individual cost elements from CSKA for the chart of accounts. +- 테이블(파서): read [CSKA](/tables/CSKA.md) / write - +- SAP 객체: CSKA +- 업무 키워드: 원가요소 전개, 값 범위, 원가요소 마스터 조회 +- English: Cost Element, Ranges, CSKA, Chart of Accounts +- 정의부(복사 시 함께 필요): [`GT_SETLEAF`](#decl-zcor0010top-84-gt_setleaf), [`LR_KSTAR`](#decl-zcor0010f01-154-lr_kstar), [`LT_CSKA`](#decl-zcor0010f01-155-lt_cska), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L161-L178` · confidence 0.9 · `ZCOR0010#ZCOR0010F01#FORM#SELECT_CSKS#C1` + +#### [aggregation] 조회된 원가요소마다 GT_SETLEAF의 VALFROM~VALTO 범위에 포함되는 첫 하위 그룹(SETNAME)을 GROUPNAME으로 매핑해 관리회계영역과 함께 GT_DATA에 추가한다. + +```abap + 180| LOOP AT LT_CSKA. + 181| GT_DATA-KOKRS = P_KOKRS. + 182| GT_DATA-KSTAR = LT_CSKA-KSTAR. + 183| + 184| LOOP AT GT_SETLEAF. + 185| IF GT_DATA-KSTAR BETWEEN GT_SETLEAF-VALFROM + 186| AND GT_SETLEAF-VALTO. + 187| GT_DATA-GROUPNAME = GT_SETLEAF-SETNAME. + 188| EXIT. + 189| ENDIF. + 190| ENDLOOP. + 191| APPEND GT_DATA. CLEAR : GT_DATA. + 192| ENDLOOP. +``` + +- **EN**: For each cost element find the sub-group whose interval contains it and append the controlling area, group name and cost element to GT_DATA. +- 업무 키워드: 원가요소 그룹 매핑, 하위 그룹, 예산통제 그룹 +- English: Cost Element Group Mapping, Budget Control Group +- 정의부(복사 시 함께 필요): [`LT_CSKA`](#decl-zcor0010f01-155-lt_cska), [`GT_DATA`](#decl-zcor0010top-55-gt_data), [`P_KOKRS`](#decl-zcor0010top-94-p_kokrs), [`GT_SETLEAF`](#decl-zcor0010top-84-gt_setleaf) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L180-L192` · confidence 0.88 · `ZCOR0010#ZCOR0010F01#FORM#SELECT_CSKS#C2` + +### FORM EDIT_DATA — `ZCOR0010F01` L202-L222 (21줄) + +*GT_DATA 각 원가요소에 CSKU의 원가요소명과 SETHEADERT의 그룹명을 보완하고 관리회계영역·그룹·원가요소 순으로 정렬한다.* + +> 이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 행별로 CSKU(계정과목표 GV_KTOPL)에서 원가요소 텍스트, SETHEADERT(SETCLASS 0102)에서 원가요소 그룹 텍스트를 SELECT SINGLE로 읽어 GT_DATA에 채우고 KOKRS/GROUPNAME/KSTAR로 정렬한다. + +```abap + 204| LOOP AT GT_DATA. + 205| + 206| SELECT SINGLE KTEXT FROM CSKU + 207| INTO GT_DATA-KSTAR_DESCTIPT + 208| WHERE KTOPL = GV_KTOPL + 209| AND KSTAR = GT_DATA-KSTAR. + 210| + 211| SELECT SINGLE DESCRIPT FROM SETHEADERT + 212| INTO GT_DATA-GRP_DESCRIPT + 213| WHERE SETCLASS = GC_SETCLASS + 214| AND SUBCLASS = GV_KTOPL + 215| AND SETNAME = GT_DATA-GROUPNAME. + 216| + 217| MODIFY GT_DATA. CLEAR : GT_DATA. + 218| ENDLOOP. + 219| + 220| SORT GT_DATA BY KOKRS GROUPNAME KSTAR. +``` + +- **EN**: Enrich each row with the cost element text from CSKU and the group description from SETHEADERT, then sort by controlling area, group and cost element. +- 테이블(파서): read [CSKU](/tables/CSKU.md), [SETHEADERT](/tables/SETHEADERT.md) / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: CSKU, SETHEADERT +- 업무 키워드: 원가요소명 보완, 그룹명 보완, 텍스트 조회 +- English: Cost Element Text, Set Description, CSKU, SETHEADERT +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0010top-55-gt_data), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GC_SETCLASS`](#decl-zcor0010top-33-gc_setclass) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L204-L220` · confidence 0.9 · `ZCOR0010#ZCOR0010F01#FORM#EDIT_DATA#C1` + +### FORM MODIFY_DB — `ZCOR0010F01` L231-L249 (19줄) + +*관리회계영역 기준으로 ZCOT0010(예산통제 그룹 매핑)을 삭제한 뒤 GT_DATA의 원가요소별 그룹 매핑을 재저장한다.* + +> 이 unit 의 조각 1개가 14/19줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] ZCOT0010에서 P_KOKRS의 기존 매핑을 DELETE하고 GT_DATA를 LT_ZCOT0010으로 옮겨 MODIFY로 저장한 뒤 성공 시 완료 메시지(F03)를 표시한다. + +```abap + 235| DELETE FROM ZCOT0010 WHERE KOKRS = P_KOKRS. + 236| + 237| LOOP AT GT_DATA. + 238| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0010. + 239| APPEND LT_ZCOT0010. CLEAR : LT_ZCOT0010. + 240| ENDLOOP. + 241| + 242| IF LT_ZCOT0010[] IS NOT INITIAL. + 243| MODIFY ZCOT0010 FROM TABLE LT_ZCOT0010. + 244| + 245| IF SY-SUBRC EQ 0. + 246| MESSAGE S000 WITH '예산 통제 그룹이 정상적으로 반영되었습니다. '(F03). + 247| ENDIF. + 248| ENDIF. +``` + +- **EN**: Delete existing ZCOT0010 rows for the controlling area, MODIFY the new cost element to budget control group mapping from GT_DATA, and show a success message. +- 테이블(파서): read - / write [ZCOT0010](/tables/ZCOT0010.md) +- SAP 객체: ZCOT0010 +- 업무 키워드: 예산통제 그룹 저장, 기존 데이터 삭제, 매핑 갱신 +- English: Delete and Replace, MODIFY Table, Budget Control Group +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0010top-94-p_kokrs), [`GT_DATA`](#decl-zcor0010top-55-gt_data), [`LT_ZCOT0010`](#decl-zcor0010f01-232-lt_zcot0010) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L235-L248` · confidence 0.92 · `ZCOR0010#ZCOR0010F01#FORM#MODIFY_DB#C1` + +### EVENT END-OF-SELECTION — `ZCOR0010` L52-L63 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 53| IF SY-BATCH NE 'X'. + 54| IF GT_DATA[] IS NOT INITIAL. + 55| CALL SCREEN 100. + 56| ELSE. + 57| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 58| ENDIF. + 59| ELSE. + 60| IF GT_DATA[] IS NOT INITIAL. + 61| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 62| ENDIF. + 63| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0010top-55-gt_data) +- 위치: `abap://ZCOR0010/ZCOR0010#L53-L63` · confidence 0.85 · `ZCOR0010#ZCOR0010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR0010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR0010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR0010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR0010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR0010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR0010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0010top-94-p_kokrs) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR0010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR0010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR0010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM CALL_KAH2 — `ZCOR0010F01` L257-L265 (9줄) + +*ALV 더블클릭 시 원가요소 그룹 P_SETNM을 파라미터 ID HNA에 설정하고 T-Code KAH2(원가요소 그룹 변경)로 이동한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 행 번호가 숫자이면 SET PARAMETER ID 'HNA'에 원가요소 그룹명을 넣고 CALL TRANSACTION KAH2 AND SKIP FIRST SCREEN으로 그룹 변경 화면을 연다. + +```abap + 259| CHECK P_ROW CO '0123456789 '. + 260| + 261| SET PARAMETER ID 'HNA' FIELD P_SETNM. + 262| + 263| CALL TRANSACTION 'KAH2' AND SKIP FIRST SCREEN. +``` + +- **EN**: Set parameter ID HNA to the cost element group and call transaction KAH2 (Change Cost Element Group) skipping the first screen. +- 호출(파서): KAH2 +- SAP 객체: KAH2 +- 업무 키워드: 원가요소 그룹 변경, 트랜잭션 호출, 더블클릭 네비게이션 +- English: Cost Element Group, Call Transaction, KAH2 +- 정의부(복사 시 함께 필요): [`P_SETNM`](#decl-zcor0010top-100-p_setnm) +- 위치: `abap://ZCOR0010/ZCOR0010F01#L259-L263` · confidence 0.9 · `ZCOR0010#ZCOR0010F01#FORM#CALL_KAH2#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOR0010I01` L6-L30 (25줄) + +*화면 0100의 사용자 명령(BACK/EXIT 종료, &ASG 예산통제 그룹 지정 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 20/25줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK 코드가 BACK/CANC/EXIT이면 ALV 컨테이너를 해제하고 화면을 종료하며, &ASG이면 MODIFY_DB로 예산통제 그룹 매핑을 ZCOT0010에 저장한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| WHEN '&ASG'. + 24| PERFORM MODIFY_DB. + 25| + 26| WHEN OTHERS. + 27| * LEAVE PROGRAM. + 28| ENDCASE. +``` + +- **EN**: Dispatch screen 0100 function codes: free ALV containers and leave on BACK/EXIT, run MODIFY_DB to save the budget control group mapping to ZCOT0010 on &ASG. +- 호출(파서): CLEAR_CONTAINER_PROC, MODIFY_DB +- SAP 객체: ZCOT0010 +- 업무 키워드: 사용자 명령, 예산통제 그룹 지정, 화면 종료 +- English: User Command, PAI, Budget Control Group +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcor0010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcor0010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOR0010/ZCOR0010I01#L9-L28` · confidence 0.85 · `ZCOR0010#ZCOR0010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (294건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR0010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor0010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR0010TOP` (28건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor0010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor0010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor0010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor0010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor0010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor0010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcor0010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcor0010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcor0010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcor0010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcor0010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcor0010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcor0010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcor0010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zcor0010top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zcor0010top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_SETCLASS — constants · L33-L34 {#decl-zcor0010top-33-gc_setclass} + +```abap +CONSTANTS : GC_SETCLASS LIKE SETNODE-SETCLASS + VALUE '0102'. +``` + +#### GT_MAIN_FIELDCAT — data · L40-L40 {#decl-zcor0010top-40-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_UPLOAD — data · L45-L50 {#decl-zcor0010top-45-gt_upload} + +```abap +DATA : BEGIN OF GT_UPLOAD OCCURS 0, + PERNR(8) TYPE C, + DMBTR(16) TYPE C, "금액 + SGTXT(50) TYPE C, " 라인아이템 텍스트 + BVTYP(4) TYPE C, +END OF GT_UPLOAD. +``` + +#### GS_UPLOAD — data · L53-L53 {#decl-zcor0010top-53-gs_upload} + +```abap +DATA : GS_UPLOAD LIKE GT_UPLOAD. +``` + +#### GT_DATA — data · L55-L69 {#decl-zcor0010top-55-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOT0010. + +DATA : +*DATA : + TABNAME LIKE DD03L-TABNAME, + FIELDNAME LIKE DD03L-FIELDNAME, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, + MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L71-L71 {#decl-zcor0010top-71-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L73-L78 {#decl-zcor0010top-73-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L81-L81 {#decl-zcor0010top-81-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_SETNODE — data · L83-L83 {#decl-zcor0010top-83-gt_setnode} + +```abap +DATA : GT_SETNODE LIKE SETNODE OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SETLEAF — data · L84-L84 {#decl-zcor0010top-84-gt_setleaf} + +```abap +DATA : GT_SETLEAF LIKE SETLEAF OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L94-L95 {#decl-zcor0010top-94-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_SETNM — parameter · L100-L101 {#decl-zcor0010top-100-p_setnm} + +```abap +PARAMETER : P_SETNM LIKE GRPDYNP-NAME_COALL OBLIGATORY + DEFAULT 'BUDGET_CEL' MODIF ID MG1.. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR0010F01` (10건) + +#### LS_BAPIRET2 — data · unit 로컬 · L78-L78 {#decl-zcor0010f01-78-ls_bapiret2} + +```abap + DATA : LS_BAPIRET2 LIKE BAPIRET2. +``` + +#### LT_HIERARCHYNODES — data · unit 로컬 · L79-L80 {#decl-zcor0010f01-79-lt_hierarchynodes} + +```abap + DATA : LT_HIERARCHYNODES LIKE BAPISET_HIER + OCCURS 0 WITH HEADER LINE. +``` + +#### LT_HIERARCHYVALUES — data · unit 로컬 · L81-L82 {#decl-zcor0010f01-81-lt_hierarchyvalues} + +```abap + DATA : LT_HIERARCHYVALUES LIKE BAPI1113_VALUES + OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CHRT_ACCTS — data · unit 로컬 · L83-L83 {#decl-zcor0010f01-83-lv_chrt_accts} + +```abap + DATA : LV_CHRT_ACCTS LIKE BAPICO_GROUP-CHRT_ACCTS. +``` + +#### LV_GROUPNAME — data · unit 로컬 · L84-L84 {#decl-zcor0010f01-84-lv_groupname} + +```abap + DATA : LV_GROUPNAME LIKE BAPICO_GROUP-GROUPNAME. +``` + +#### LV_CO — data · unit 로컬 · L85-L85 {#decl-zcor0010f01-85-lv_co} + +```abap + DATA : LV_CO LIKE BAPICO_GROUP-CO_AREA. +``` + +#### LV_LANGUAGE — data · unit 로컬 · L86-L86 {#decl-zcor0010f01-86-lv_language} + +```abap + DATA : LV_LANGUAGE LIKE BAPI0015_10. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L154-L154 {#decl-zcor0010f01-154-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LT_CSKA — data · unit 로컬 · L155-L155 {#decl-zcor0010f01-155-lt_cska} + +```abap + DATA : LT_CSKA LIKE CSKA OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ZCOT0010 — data · unit 로컬 · L232-L232 {#decl-zcor0010f01-232-lt_zcot0010} + +```abap + DATA : LT_ZCOT0010 LIKE ZCOT0010 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR0010 L25-30 | 0 | INITIALIZATION 이벤트에서 관리회계영역 텍스트 설정(SET_DYNP)을 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOR0010 L31-32 | 0 | AT SELECTION-SCREEN 이벤트 블록이나 처리 로직이 없는 빈 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR0010 L33-44 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 제어한다. | +| START-OF-SELECTION | EVENT | ZCOR0010 L45-51 | 0 | 초기화(INITIALIZE_DATA) 후 예산통제 그룹 전개·저장 처리(PROCESS_DATA)를 호출하는 메인 이벤트다. | +| END-OF-SELECTION | EVENT | ZCOR0010 L52-63 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR0010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR0010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR0010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR0010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR0010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR0010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR0010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR0010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR0010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR0010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR0010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR0010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR0010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR0010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR0010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR0010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOR0010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOR0010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR0010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR0010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR0010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOR0010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR0010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR0010C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR0010C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR0010F01 L6-17 | 0 | 선택화면에서 GV_BUKRS_O가 비어 있으면 그룹 MG1 필드를 입력 불가로 설정하는 화면 속성 제어 FORM이다. | +| SET_DYNP | FORM | ZCOR0010F01 L24-28 | 0 | 초기화 시 관리회계영역 P_KOKRS의 기준 정보를 SET_KOKRS_BASE로 조회해 명칭(P_BEZEI)을 선택화면에 표시한다. | +| INITIALIZE_DATA | FORM | ZCOR0010F01 L34-56 | 1 | 관리회계영역 기준 정보(SET_KOKRS_BASE)와 메인 ALV 필드카탈로그를 취득하고 상태 변수를 초기화한다. | +| PROCESS_DATA | FORM | ZCOR0010F01 L62-67 | 1 | 하위 그룹 조회(SELECT_DATA) → 원가요소 전개(SELECT_CSKS) → 텍스트 보완(EDIT_DATA) → ZCOT0010 저장(MODIFY_DB)을 순차 호출하는 처리 진입 FORM이다. | +| SELECT_DATA | FORM | ZCOR0010F01 L76-144 | 2 | SETNODE에서 예산통제 원가요소 그룹의 하위 그룹을 조회하고 BAPI_COSTELEMENTGRP_GETDETAIL로 각 하위 그룹의 원가요소 값 범위를 GT_SETLEAF에 구성한다. | +| SELECT_CSKS | FORM | ZCOR0010F01 L153-193 | 2 | GT_SETLEAF의 원가요소 값 범위를 RANGES로 만들어 CSKA에서 개별 원가요소로 전개하고 각 원가요소가 속한 하위 그룹명을 매핑해 GT_DATA를 생성한다. | +| EDIT_DATA | FORM | ZCOR0010F01 L202-222 | 1 | GT_DATA 각 원가요소에 CSKU의 원가요소명과 SETHEADERT의 그룹명을 보완하고 관리회계영역·그룹·원가요소 순으로 정렬한다. | +| MODIFY_DB | FORM | ZCOR0010F01 L231-249 | 1 | 관리회계영역 기준으로 ZCOT0010(예산통제 그룹 매핑)을 삭제한 뒤 GT_DATA의 원가요소별 그룹 매핑을 재저장한다. | +| CALL_KAH2 | FORM | ZCOR0010F01 L257-265 | 1 | ALV 더블클릭 시 원가요소 그룹 P_SETNM을 파라미터 ID HNA에 설정하고 T-Code KAH2(원가요소 그룹 변경)로 이동한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR0010I01 L6-30 | 1 | 화면 0100의 사용자 명령(BACK/EXIT 종료, &ASG 예산통제 그룹 지정 저장)을 받아 해당 FORM으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOR0010O01 L6-24 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR0010O01 L30-75 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR0010O01 L85-129 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR0010O01 L137-157 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOR0010O01 L165-174 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR0010O01 L182-204 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR0010O01 L213-241 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR0010O01 L314-329 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR0010O01 L339-391 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR0010O01 L399-428 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR0020.md b/wiki/programs/ZCOR0020.md new file mode 100644 index 0000000..4e2bd7d --- /dev/null +++ b/wiki/programs/ZCOR0020.md @@ -0,0 +1,5475 @@ +--- +type: abap-program +title: "ZCOR0020 — 부서별 예산 집행 현황" +description: "코스트센터(부서) 또는 투자오더(Internal Order) 단위로 회계연도·기간별 예산(Budget)과 실적(Actual)·약정(Commitment)·임시전표(Parked)를 비교하여 가용예산과 가용율을 보여주는 예산 집행 현황(Budget vs. Actual) 리포트다. 코스트센터 예산은 COSP의 계획값(WRTTP 01, 버전 B00 사업계획 또는 B10~B15/B20 월별 실행예산·조정·이월)에서, 투자오더 예산은 BPEJ(WRTTP 41, KBUD/KBN0/KBR0)에서 읽고, 실적은 COSP(WRTTP 04/22/60, 버전 000)에서 집계한다. 예산통제 그룹(ZCOT0010)을 표시하고 가용율에 따라 신호등 아이콘(10% 이하 빨강, 50% 이하 노랑, 50% 초과 초록)을 부여하며, ALV에서 실적/임시 금액을 더블클릭하면 KSB1/KOB1 라인아이템(RKAEP000)으로 드릴다운한다." +resource: "abap://ZCOR0020" +tags: ["예산관리", "예산집행현황", "코스트센터", "투자오더", "가용예산", "관리회계", "CO-OM", "드릴다운", "값유형", "실적", "임시전표", "관리회계영역", "라인아이템", "전기일 범위", "원가요소", "전체 기간", "표시변형", "금액 단위 환산", "천원", "백만원"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:17+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "AUFK", "BPEJ", "COSP", "CSKB", "CSKS", "CSKT", "CSKU", "DD07T", "ONRKS", "ONROR", "T001", "TKA01", "TKT09", "ZCOT0010"] +x-tables-write: ["GT_COSP", "GT_DATA", "GT_KSTAR"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_GROUP_SELECT", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RKAEP000", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "9a9eb5d79f5b4495c53a8a34a17b12409072baaecec4b85bc40b524cded1a4ad" +x-unit-count: 151 +x-chunk-count: 82 +x-declaration-count: 224 +--- + +## 업무 목적 + +코스트센터(부서) 또는 투자오더(Internal Order) 단위로 회계연도·기간별 예산(Budget)과 실적(Actual)·약정(Commitment)·임시전표(Parked)를 비교하여 가용예산과 가용율을 보여주는 예산 집행 현황(Budget vs. Actual) 리포트다. 코스트센터 예산은 COSP의 계획값(WRTTP 01, 버전 B00 사업계획 또는 B10~B15/B20 월별 실행예산·조정·이월)에서, 투자오더 예산은 BPEJ(WRTTP 41, KBUD/KBN0/KBR0)에서 읽고, 실적은 COSP(WRTTP 04/22/60, 버전 000)에서 집계한다. 예산통제 그룹(ZCOT0010)을 표시하고 가용율에 따라 신호등 아이콘(10% 이하 빨강, 50% 이하 노랑, 50% 초과 초록)을 부여하며, ALV에서 실적/임시 금액을 더블클릭하면 KSB1/KOB1 라인아이템(RKAEP000)으로 드릴다운한다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트 설정, 코스트센터/투자오더 라디오버튼에 따라 입력 블록을 표시·숨김하고 예산 Indicator 신호등 범례를 표시한다 (SET_DYNP, LOOP_AT_SCREEN, SET_SCREEN_ICON) +2. 코스트센터·원가요소·투자오더 그룹 F4는 K_GROUP_SELECT(SET CLASS 0101/0102/0103)로, 원가요소·오더 F4는 CSKB/CSKU·AUFK 조회로 제공한다 (F4_GRP, F4_KSTAR, F4_AUFNR) +3. 그룹과 개별 값이 동시에 입력되었거나 둘 다 비어 있으면 오류 처리하고, 코스트센터 그룹/원가요소 그룹을 GET_SETLEAF_VALUES로 전개해 ONRKS(코스트센터 OBJNR) 또는 ONROR+AUFK(투자오더 OBJNR, AUART I%/S%) 조회 대상을 결정한다 (INITIALIZE_DATA, CHECK_INPUT, DETERMINE_KOSTL, DETERMINE_KSTAR, DETERMINE_AUFNR) +4. 예산통제 대상 원가요소(P_CONT)이면 ZCOT0010에 등록된 원가요소만 남기고, 예산통제 그룹 매핑을 읽는다 (DETERMINE_KSTAR, GET_MASTER_ZCOT0010) +5. 예산값 조회: 코스트센터는 COSP에서 WRTTP 01·선택 버전(B00 / B10 / B10~B15,B20)으로, 투자오더는 BPEJ에서 WRTTP 41·VORGA KBUD/KBN0/KBR0 연간예산을 B00으로 매핑하여 GT_COSP에 적재한다 (PROCESS_DATA, SELECT_COSP 'B', SELECT_BPEJ) +6. 실적값 조회: COSP에서 WRTTP 04(실제)/22(약정)/60(임시), 버전 000을 읽고 BEKNZ 'A' 레코드는 제외한다 (SELECT_COSP 'A') +7. 선택 기간(코스트센터: S_PERBL, 오더: 1~12월)의 WKG001~WKG012 컬럼을 버전별 예산 컬럼(BG_B00~BG_B20)과 ACTUAL/PARK 컬럼으로 분배하며 OBJNR·원가요소 단위로 COLLECT한다 (COLLECT_DATA, DISTIBUTE_FIELD) +8. 코스트센터명(CSKT), 원가요소명(CSKU), 오더명·책임/요청 코스트센터(AUFK)를 보완하고 총예산(BG_ALL)·집행액(ACTUAL+PARK)·가용예산·가용율과 신호등 상태를 계산한 뒤 전부 0인 행을 삭제한다 (EDIT_DATA) +9. 금액 단위(원/천원/백만원)에 따라 CURR 필드를 나누고, 화면 100 ALV Grid에 표시하며 실적/임시 컬럼 더블클릭 시 RKAEP000(KSB1 또는 KOB1)을 SUBMIT한다 (CONVERT_CURR, END-OF-SELECTION CALL SCREEN 100, CALL_REPORT) + +## 핵심 내부테이블 + +- `GT_ONRKS` — 조회 대상 코스트센터의 오브젝트번호(OBJNR)-코스트센터 매핑 (채움: DETERMINE_KOSTL / 소비: EDIT_DATA) +- `GT_ONROR` — 조회 대상 투자오더의 오브젝트번호-오더번호 매핑 (AUART I%/S%) (채움: DETERMINE_AUFNR / 소비: EDIT_DATA) +- `GT_KSTAR` — 조회 대상 원가요소(CSKB/CSKU, 0050000000~0069999999)와 명칭; GR_KSTAR 범위 생성용 (채움: DETERMINE_KSTAR / 소비: DETERMINE_KSTAR) +- `GT_ZCOT0010` — 원가요소별 예산통제 그룹 매핑 마스터 (채움: GET_MASTER_ZCOT0010 / 소비: EDIT_DATA) +- `GT_COSP` — COSP/BPEJ에서 집계한 월별(WKG001~012) 예산(C_TYPE B)·실적(C_TYPE A) 원본 (채움: SELECT_COSP, SELECT_BPEJ / 소비: COLLECT_DATA, DISTIBUTE_FIELD) +- `GT_DATA` — ALV 출력용 코스트센터/오더·원가요소별 버전별 예산(BG_B00~BG_B20), 실적, 임시, 총예산, 가용예산, 가용율, 상태 아이콘, 예산통제 그룹 (채움: COLLECT_DATA, EDIT_DATA, CONVERT_CURR / 소비: CALL_REPORT, DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, AUFK, BPEJ, COSP, CSKB, CSKS, CSKT, CSKU, DD07T, ONRKS, ONROR, T001, TKA01, TKT09, ZCOT0010 +- write: GT_COSP, GT_DATA, GT_KSTAR +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_GROUP_SELECT, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (82건 / unit 62개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM F4_KSTAR — `ZCOR0020F01` L137-L160 (24줄) + +*관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다.* + +> 이 unit 의 조각 1개가 13/24줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKB와 CSKU를 조인해 P_KOKRS의 원가요소 50000000~69999999 중 현재 유효한 원가요소와 명칭을 조회하고 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 필드에 F4 목록을 띄운다. + +```abap + 146| SELECT A~KSTAR B~KTEXT + 147| FROM CSKB AS A INNER JOIN CSKU AS B + 148| ON A~KSTAR = B~KSTAR + 149| INTO CORRESPONDING FIELDS OF TABLE LT_CSKA + 150| WHERE A~KOKRS = P_KOKRS + 151| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 152| AND SPRAS = SY-LANGU + 153| AND A~DATBI >= SY-DATUM + 154| AND A~DATAB <= SY-DATUM. + 155| + 156| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 157| TABLES LT_CSKA LT_FIELDTAB LT_RETURN + 158| USING 'KSTAR' P_FIELD. +``` + +- **EN**: Select valid cost elements in range 50000000-69999999 with texts from CSKB joined CSKU for the controlling area and present them as an F4 value list via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: CSKB, CSKU, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 원가요소 검색도움, 원가요소 명칭, 유효기간, F4 +- English: Cost Element, Search Help, F4 Help, Controlling Area +- 정의부(복사 시 함께 필요): [`LT_CSKA`](#decl-zcor0020f01-138-lt_cska), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`LT_FIELDTAB`](#decl-zcor0020f01-144-lt_fieldtab), [`LT_RETURN`](#decl-zcor0020f01-143-lt_return) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L146-L158` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#F4_KSTAR#C1` + +### FORM F4_GRP — `ZCOR0020F01` L168-L190 (23줄) + +*K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 12/23줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터 그룹/0102 원가요소 그룹)·필드명·관리회계영역·계정과목표 GV_KTOPL을 넘겨 K_GROUP_SELECT로 그룹 선택 대화상자를 띄우고 선택된 세트명을 선택화면 파라미터에 반환한다. + +```abap + 177| CALL FUNCTION 'K_GROUP_SELECT' + 178| EXPORTING + 179| CLASS = LV_CLASS + 180| FIELD_NAME = LV_FIELDNAME + 181| KOKRS = P_KOKRS + 182| KTOPL = GV_KTOPL + 183| IMPORTING + 184| SET_NAME = P_DYN_FIELD + 185| SET_TITLE = KMAS_D-SETTXT_KST + 186| EXCEPTIONS + 187| NO_SET_PICKED = 1 + 188| OTHERS = 2. +``` + +- **EN**: Call K_GROUP_SELECT with set class (0101 cost center group / 0102 cost element group), field name, controlling area and chart of accounts to let the user pick a group and return the set name. +- 호출(파서): K_GROUP_SELECT +- SAP 객체: K_GROUP_SELECT, RGSBS +- 업무 키워드: 그룹 선택, 코스트센터 그룹, 원가요소 그룹, 검색도움 +- English: Cost Center Group, Cost Element Group, Set, F4 Help, Chart of Accounts +- 정의부(복사 시 함께 필요): [`LV_CLASS`](#decl-zcor0020f01-171-lv_class), [`LV_FIELDNAME`](#decl-zcor0020f01-170-lv_fieldname), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`KMAS_D`](#decl-zcor0020top-5-kmas_d) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L177-L188` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#F4_GRP#C1` + +### FORM F4_AUFNR — `ZCOR0020F01` L775-L793 (19줄) + +*오더유형이 I로 시작하는 투자오더 목록을 AUFK에서 읽어 F4IF_INT_TABLE_VALUE_REQUEST로 오더번호 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 8/19줄(42%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] AUFK에서 오더유형(AUART)이 I로 시작하는 투자오더의 번호·유형·명칭을 조회해 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 오더 필드(P_FIELD)에 검색도움을 띄운다. + +```abap + 785| SELECT AUFNR AUART KTEXT + 786| INTO CORRESPONDING FIELDS OF TABLE LT_AUFK + 787| FROM AUFK + 788| WHERE AUART LIKE 'I%'. + 789| + 790| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 791| TABLES LT_AUFK LT_FIELDTAB LT_RETURN + 792| USING 'AUFNR' P_FIELD. +``` + +- **EN**: Select investment orders (order type starting with I) from AUFK and show them as an F4 value help for the selection-screen order field via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [AUFK](/tables/AUFK.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: AUFK, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 투자오더 검색도움, 오더유형, F4 +- English: Internal Order, Value Help, Order Type +- 정의부(복사 시 함께 필요): [`LT_AUFK`](#decl-zcor0020f01-776-lt_aufk), [`AUFK`](#decl-zcor0020top-5-aufk), [`LT_FIELDTAB`](#decl-zcor0020f01-783-lt_fieldtab), [`LT_RETURN`](#decl-zcor0020f01-782-lt_return) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L785-L792` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#F4_AUFNR#C1` + +### FORM INITIALIZE_DATA — `ZCOR0020F01` L75-L107 (33줄) + +*관리회계영역 기본정보와 ALV 필드카탈로그를 준비하고 전역 변수를 초기화한 뒤 입력 검증과 코스트센터/원가요소 또는 투자오더 조회 대상 결정, 예산통제 그룹 마스터 조회를 호출한다.* + +> 이 unit 의 조각 1개가 9/33줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 입력 검증(CHECK_INPUT) 후 코스트센터 모드면 DETERMINE_KOSTL·DETERMINE_KSTAR, 투자오더 모드면 DETERMINE_AUFNR로 조회 대상을 정하고 GET_MASTER_ZCOT0010으로 예산통제 그룹 마스터를 읽는다. + +```abap + 98| PERFORM CHECK_INPUT. + 99| + 100| IF PR_CC = 'X'. + 101| PERFORM DETERMINE_KOSTL. + 102| PERFORM DETERMINE_KSTAR. + 103| ELSEIF PR_IO = 'X'. + 104| PERFORM DETERMINE_AUFNR. + 105| ENDIF. + 106| PERFORM GET_MASTER_ZCOT0010. +``` + +- **EN**: After input validation, determine target cost centers/cost elements (cost center mode) or orders (internal order mode), then load the budget control group master ZCOT0010. +- 호출(파서): CHECK_INPUT, DETERMINE_KOSTL, DETERMINE_KSTAR, DETERMINE_AUFNR, GET_MASTER_ZCOT0010 +- SAP 객체: ZCOT0010 +- 업무 키워드: 입력 검증, 조회 대상 결정, 예산통제 그룹, 코스트센터, 투자오더 +- English: Input Validation, Cost Center, Internal Order, Budget Control Group +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`PR_IO`](#decl-zcor0020top-131-pr_io) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L98-L106` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM CHECK_INPUT — `ZCOR0020F01` L316-L351 (36줄) + +*코스트센터 모드는 코스트센터 그룹/코스트센터 및 원가요소 그룹/원가요소, 투자오더 모드는 오더 그룹/오더가 둘 다 입력되거나 둘 다 비어 있으면 오류 메시지로 실행을 중단하는 선택화면 입력 검증이다.* + +> 이 unit 의 조각 1개가 32/36줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 코스트센터 모드(PR_CC)에서는 코스트센터 그룹(P_KSSET)과 코스트센터(S_KOSTL)가 동시 입력되거나 모두 비었을 때, 원가요소 그룹(P_KASET)과 원가요소(S_KSTAR)가 동시 입력되었을 때, 투자오더 모드(PR_IO)에서는 오더 그룹(P_KOSET)과 오더(S_AUFNR)가 동시 입력되거나 모두 비었을 때 S000 오류 메시지를 띄우고 LEAVE LIST-PROCESSING 한다. + +```abap + 318| IF PR_CC = 'X'. + 319| IF P_KSSET IS NOT INITIAL AND S_KOSTL[] IS NOT INITIAL. + 320| MESSAGE S000 DISPLAY LIKE 'E' + 321| WITH '코스트센터 그룹 혹은 코스트센터 필드 하나만 입력하여 주십시오.'(F05). + 322| LEAVE LIST-PROCESSING. + 323| ENDIF. + 324| + 325| IF P_KSSET IS INITIAL AND S_KOSTL[] IS INITIAL. + 326| MESSAGE S000 DISPLAY LIKE 'E' + 327| WITH '코스트센터 그룹 혹은 코스트센터 필드를 입력하여 주십시오.'(F09). + 328| LEAVE LIST-PROCESSING. + 329| ENDIF. + 330| + 331| IF P_KASET IS NOT INITIAL AND S_KSTAR[] IS NOT INITIAL. + 332| MESSAGE S000 DISPLAY LIKE 'E' + 333| WITH '원가요소 그룹 혹은 원가요소 필드 하나만 입력하여 주십시오.'(F06). + 334| LEAVE LIST-PROCESSING. + 335| ENDIF. + 336| + 337| ELSEIF PR_IO = 'X'. + 338| IF P_KOSET IS NOT INITIAL AND S_AUFNR[] IS NOT INITIAL. + 339| MESSAGE S000 DISPLAY LIKE 'E' + 340| WITH '투자오더 그룹 혹은 투자 오더 필드 하나만 입력하여 주십시오.'(F10). + 341| LEAVE LIST-PROCESSING. + 342| ENDIF. + 343| + 344| IF P_KOSET IS INITIAL AND S_AUFNR[] IS INITIAL. + 345| MESSAGE S000 DISPLAY LIKE 'E' + 346| WITH '투자오더 그룹 혹은 투자오더 필드를 입력하여 주십시오.'(F11). + 347| LEAVE LIST-PROCESSING. + 348| ENDIF. + 349| ENDIF. +``` + +- **EN**: Validate that exactly one of group or individual values is entered: cost center group vs cost centers and cost element group vs cost elements in cost center mode, order group vs orders in internal order mode; otherwise issue an error message and leave list processing. +- SAP 객체: S_KOSTL, S_KSTAR, S_AUFNR +- 업무 키워드: 입력 검증, 코스트센터 그룹, 원가요소 그룹, 투자오더 그룹, 상호 배타 입력 +- English: Input Validation, Cost Center Group, Cost Element Group, Order Group, Selection Screen +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`P_KSSET`](#decl-zcor0020top-156-p_ksset), [`S_KOSTL`](#decl-zcor0020top-157-s_kostl), [`P_KASET`](#decl-zcor0020top-158-p_kaset), [`S_KSTAR`](#decl-zcor0020top-159-s_kstar), [`PR_IO`](#decl-zcor0020top-131-pr_io), [`P_KOSET`](#decl-zcor0020top-178-p_koset), [`S_AUFNR`](#decl-zcor0020top-179-s_aufnr) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L318-L349` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#CHECK_INPUT#C1` + +### FORM DETERMINE_KOSTL — `ZCOR0020F01` L269-L307 (39줄) + +*선택화면의 코스트센터 또는 코스트센터 그룹(SET CLASS 0101)을 전개해 ONRKS에서 코스트센터의 OBJNR을 구하고 조회 대상 범위 GR_SELECT_OBJ를 결정한다.* + +> 이 unit 의 조각 2개가 30/39줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 코스트센터(S_KOSTL)가 입력되면 그대로 범위로 쓰고, 코스트센터 그룹(P_KSSET)이면 GET_SETLEAF_VALUES로 SET CLASS 0101 그룹을 전개해 범위를 만들며 비어 있으면 오류 메시지 후 종료한다. + +```abap + 275| IF S_KOSTL[] IS NOT INITIAL. + 276| LR_KOSTL[] = S_KOSTL[]. + 277| ELSEIF P_KSSET IS NOT INITIAL. + 278| PERFORM GET_SETLEAF_VALUES USING + 279| P_KSSET '0101'. + 280| MACRO_VALUE_TO_RANGE : LR_KOSTL GT_VALUE_SET. + 281| + 282| IF LR_KOSTL[] IS INITIAL. + 283| MESSAGE S000 DISPLAY LIKE 'E' + 284| WITH '코스트센터 그룹에 데이터가 없습니다.'(F07). + 285| LEAVE LIST-PROCESSING. + 286| ENDIF. + 287| ENDIF. +``` + +- **EN**: Use entered cost centers S_KOSTL or expand the cost center group P_KSSET (set class 0101) via GET_SETLEAF_VALUES into a range; stop with an error message if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, CSKS +- 업무 키워드: 코스트센터 그룹, 그룹 전개, 입력 검증 +- English: Cost Center Group, Set Leaf Values, Set Class 0101 +- 정의부(복사 시 함께 필요): [`S_KOSTL`](#decl-zcor0020top-157-s_kostl), [`LR_KOSTL`](#decl-zcor0020f01-270-lr_kostl), [`P_KSSET`](#decl-zcor0020top-156-p_ksset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L275-L287` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KOSTL#C1` + +#### [sql_select] ONRKS에서 관리회계영역·코스트센터 범위에 해당하는 오브젝트번호(OBJNR)-코스트센터 매핑을 GT_ONRKS에 읽고 OBJNR을 COSP 조회 대상 범위 GR_SELECT_OBJ에 추가하며 대상이 없으면 오류로 종료한다. + +```abap + 289| SELECT OBJNR KOSTL + 290| FROM ONRKS + 291| INTO CORRESPONDING FIELDS OF TABLE GT_ONRKS + 292| WHERE KOKRS = P_KOKRS + 293| AND KOSTL IN LR_KOSTL. + 294| + 295| SORT GT_ONRKS BY OBJNR. + 296| + 297| " 실 제조회 대상 코스트센터 + 298| LOOP AT GT_ONRKS. + 299| ADD_RANGE_EQ : GR_SELECT_OBJ GT_ONRKS-OBJNR. + 300| ENDLOOP. + 301| + 302| IF GR_SELECT_OBJ[] IS INITIAL. + 303| MESSAGE S000 DISPLAY LIKE 'E' WITH '대상 코스트센터가 없습니다.'(F13). + 304| LEAVE LIST-PROCESSING. + 305| ENDIF. +``` + +- **EN**: Select object number/cost center mappings from ONRKS for the controlling area and cost center range into GT_ONRKS, add each OBJNR to the COSP selection range GR_SELECT_OBJ, and stop with an error when none exist. +- 테이블(파서): read [ONRKS](/tables/ONRKS.md) / write - +- SAP 객체: ONRKS, GT_ONRKS +- 업무 키워드: 오브젝트 번호, 코스트센터, 조회 대상 결정, 관리회계영역 +- English: Object Number, Cost Center, ONRKS, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_ONRKS`](#decl-zcor0020top-115-gt_onrks), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`LR_KOSTL`](#decl-zcor0020f01-270-lr_kostl), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_SELECT_OBJ`](#decl-zcor0020top-118-gr_select_obj) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L289-L305` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KOSTL#C2` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DETERMINE_KSTAR — `ZCOR0020F01` L199-L260 (62줄) + +*선택화면의 원가요소 또는 원가요소 그룹(SET CLASS 0102)을 전개해 CSKB/CSKU에서 유효한 원가요소(0050000000~0069999999)를 구하고, 예산통제 대상 옵션이면 ZCOT0010 등록 원가요소만 남겨 조회 범위 GR_KSTAR를 만든다.* + +> 이 unit 의 조각 4개가 46/62줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 원가요소(S_KSTAR)가 입력되면 그대로 범위로 쓰고, 원가요소 그룹(P_KASET)이면 GET_SETLEAF_VALUES로 SET CLASS 0102 그룹을 전개해 범위를 만들며 비어 있으면 오류 메시지 후 종료한다. + +```abap + 208| IF S_KSTAR[] IS NOT INITIAL. + 209| LR_KSTAR[] = S_KSTAR[]. + 210| ELSEIF P_KASET IS NOT INITIAL. + 211| PERFORM GET_SETLEAF_VALUES USING + 212| P_KASET '0102'. + 213| MACRO_VALUE_TO_RANGE : LR_KSTAR GT_VALUE_SET. + 214| + 215| IF LR_KSTAR[] IS INITIAL. + 216| MESSAGE S000 DISPLAY LIKE 'E' + 217| WITH '원가요소 그룹에 데이터가 없습니다..'(F08). + 218| LEAVE LIST-PROCESSING. + 219| ENDIF. + 220| ENDIF. +``` + +- **EN**: Use entered cost elements S_KSTAR or expand the cost element group P_KASET (set class 0102) via GET_SETLEAF_VALUES; stop with an error message if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, CSKA +- 업무 키워드: 원가요소 그룹, 그룹 전개, 입력 검증 +- English: Cost Element Group, Set Leaf Values, Set Class 0102 +- 정의부(복사 시 함께 필요): [`S_KSTAR`](#decl-zcor0020top-159-s_kstar), [`LR_KSTAR`](#decl-zcor0020f01-200-lr_kstar), [`P_KASET`](#decl-zcor0020top-158-p_kaset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L208-L220` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KSTAR#C1` + +#### [sql_select] CSKB와 CSKU를 조인해 관리회계영역의 현재 유효한 원가요소 중 0050000000~0069999999 범위(비용 계정)에 속하고 입력 범위에 해당하는 원가요소와 명칭을 GT_KSTAR에 조회한다. + +```abap + 223| SELECT A~KSTAR B~KTEXT + 224| FROM CSKB AS A INNER JOIN CSKU AS B + 225| ON A~KSTAR = B~KSTAR + 226| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 227| WHERE A~KOKRS = P_KOKRS + 228| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 229| AND SPRAS = SY-LANGU + 230| AND A~DATBI >= SY-DATUM + 231| AND A~DATAB <= SY-DATUM + 232| AND A~KSTAR IN LR_KSTAR. + 233| + 234| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Select valid cost elements and texts from CSKB joined with CSKU for the controlling area within 0050000000-0069999999 and the input range into GT_KSTAR. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU, GT_KSTAR +- 업무 키워드: 원가요소 마스터, 비용 계정 범위, 유효기간, 원가요소 명칭 +- English: Cost Element Master, CSKB, CSKU, Validity +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcor0020top-110-gt_kstar), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`LR_KSTAR`](#decl-zcor0020f01-200-lr_kstar) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L223-L234` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KSTAR#C2` + +#### [validation] 예산통제 대상만 조회 옵션(P_CONT)이면 ZCOT0010(예산통제 그룹 마스터)을 읽어 등록되지 않은 원가요소를 GT_KSTAR에서 삭제한다. + +```abap + 237| IF P_CONT = 'X'. + 238| SELECT * FROM ZCOT0010 + 239| INTO CORRESPONDING FIELDS OF TABLE LT_ZCOT0010 + 240| WHERE KOKRS = P_KOKRS. + 241| + 242| SORT LT_ZCOT0010 BY KSTAR. + 243| + 244| LOOP AT GT_KSTAR. + 245| + 246| READ TABLE LT_ZCOT0010 WITH KEY + 247| KSTAR = GT_KSTAR-KSTAR BINARY SEARCH. + 248| + 249| IF SY-SUBRC NE 0. + 250| DELETE GT_KSTAR. + 251| ENDIF. + 252| + 253| ENDLOOP. + 254| ENDIF. +``` + +- **EN**: When only budget-controlled cost elements are requested (P_CONT), read ZCOT0010 and delete cost elements from GT_KSTAR that are not registered there. +- 테이블(파서): read [ZCOT0010](/tables/ZCOT0010.md) / write [GT_KSTAR](/tables/GT_KSTAR.md) +- SAP 객체: ZCOT0010, GT_KSTAR +- 업무 키워드: 예산통제 대상, 원가요소 필터, 예산통제 그룹 +- English: Budget Control, Cost Element Filter, ZCOT0010 +- 정의부(복사 시 함께 필요): [`P_CONT`](#decl-zcor0020top-163-p_cont), [`LT_ZCOT0010`](#decl-zcor0020f01-201-lt_zcot0010), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`GT_KSTAR`](#decl-zcor0020top-110-gt_kstar) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L237-L254` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KSTAR#C3` + +#### [other] 최종 조회 대상 원가요소를 COSP 조회용 범위 GR_KSTAR에 EQ 조건으로 추가한다. + +```abap + 257| LOOP AT GT_KSTAR. + 258| ADD_RANGE_EQ : GR_KSTAR GT_KSTAR-KSTAR. + 259| ENDLOOP. +``` + +- **EN**: Add each remaining cost element to the GR_KSTAR range used for the COSP selection. +- SAP 객체: GT_KSTAR +- 업무 키워드: 원가요소 범위, 조회 조건 +- English: Cost Element Range, Select-Option +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcor0020top-110-gt_kstar), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KSTAR`](#decl-zcor0020top-108-gr_kstar) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L257-L259` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_KSTAR#C4` + +### FORM DETERMINE_AUFNR — `ZCOR0020F01` L802-L843 (42줄) + +*선택화면의 투자오더 또는 오더 그룹(SET CLASS 0103)을 전개해 ONROR/AUFK에서 오더유형 I·S로 시작하는 오더의 OBJNR을 구해 조회 대상(GR_SELECT_OBJ)을 결정한다.* + +> 이 unit 의 조각 2개가 32/42줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 오더번호(S_AUFNR)가 입력되면 그대로 범위로 쓰고, 오더 그룹(P_KOSET)이면 GET_SETLEAF_VALUES로 SET CLASS 0103 그룹을 전개해 오더 범위를 만들며 비어 있으면 오류 메시지 후 종료한다. + +```abap + 807| IF S_AUFNR[] IS NOT INITIAL. + 808| LR_AUFNR[] = S_AUFNR[]. + 809| ELSEIF P_KOSET IS NOT INITIAL. + 810| PERFORM GET_SETLEAF_VALUES USING + 811| P_KOSET '0103'. + 812| MACRO_VALUE_TO_RANGE : LR_AUFNR GT_VALUE_SET. + 813| + 814| IF LR_AUFNR[] IS INITIAL. + 815| MESSAGE S000 DISPLAY LIKE 'E' + 816| WITH '투자오더 그룹에 데이터가 없습니다.'(F12). + 817| LEAVE LIST-PROCESSING. + 818| ENDIF. + 819| ENDIF. +``` + +- **EN**: Use entered order numbers S_AUFNR or expand the order group P_KOSET (set class 0103) via GET_SETLEAF_VALUES into an order range; stop with an error message if the group yields nothing. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, AUFK +- 업무 키워드: 투자오더 그룹, 그룹 전개, 오더 범위, 입력 검증 +- English: Order Group, Set Leaf Values, Set Class 0103 +- 정의부(복사 시 함께 필요): [`S_AUFNR`](#decl-zcor0020top-179-s_aufnr), [`LR_AUFNR`](#decl-zcor0020f01-803-lr_aufnr), [`P_KOSET`](#decl-zcor0020top-178-p_koset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L807-L819` · confidence 0.85 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_AUFNR#C1` + +#### [sql_select] ONROR와 AUFK를 조인해 오더 범위 중 오더유형(AUART)이 I 또는 S로 시작하는 투자/설비 오더의 OBJNR-오더번호 매핑을 GT_ONROR에 읽고 OBJNR을 조회 대상 범위 GR_SELECT_OBJ에 추가하며 대상이 없으면 오류로 종료한다. + +```abap + 821| SELECT A~OBJNR A~AUFNR + 822| FROM ONROR AS A INNER JOIN AUFK AS B + 823| ON A~AUFNR = B~AUFNR + 824| INTO CORRESPONDING FIELDS OF TABLE GT_ONROR + 825| WHERE A~AUFNR IN LR_AUFNR + 826| " I와 S로 시작하는 오더만 조회한다. + 827| AND ( B~AUART LIKE 'I%' OR B~AUART LIKE 'S%' ). + 828| + 829| SORT GT_ONROR BY OBJNR. + 830| + 831| " 실제조회 대상 투자오더 + 832| LOOP AT GT_ONROR. + 833| ADD_RANGE_EQ : GR_SELECT_OBJ GT_ONROR-OBJNR. + 834| ENDLOOP. + 835| + 836| IF GR_SELECT_OBJ[] IS INITIAL. + 837| MESSAGE S000 DISPLAY LIKE 'E' WITH '대상 오더가 없습니다'(F14). + 838| LEAVE LIST-PROCESSING. + 839| ENDIF. +``` + +- **EN**: Join ONROR with AUFK to get object number/order mappings for orders whose order type starts with I or S into GT_ONROR, add each OBJNR to the selection range GR_SELECT_OBJ, and stop with an error when none exist. +- 테이블(파서): read [ONROR](/tables/ONROR.md), [AUFK](/tables/AUFK.md) / write - +- SAP 객체: ONROR, AUFK, GT_ONROR +- 업무 키워드: 오브젝트 번호, 투자오더, 오더유형, 조회 대상 결정 +- English: Object Number, Internal Order, Order Type, ONROR +- 정의부(복사 시 함께 필요): [`AUFK`](#decl-zcor0020top-5-aufk), [`GT_ONROR`](#decl-zcor0020top-116-gt_onror), [`LR_AUFNR`](#decl-zcor0020f01-803-lr_aufnr), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_SELECT_OBJ`](#decl-zcor0020top-118-gr_select_obj) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L821-L839` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#DETERMINE_AUFNR#C2` + +### FORM GET_MASTER_ZCOT0010 — `ZCOR0020F01` L758-L767 (10줄) + +*관리회계영역별 원가요소-예산통제 그룹 매핑 마스터 ZCOT0010을 전체 조회해 GT_ZCOT0010에 담고 원가요소로 정렬한다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 예산통제 그룹 마스터 ZCOT0010을 관리회계영역(P_KOKRS) 기준으로 조회해 GT_ZCOT0010에 담고 KSTAR로 정렬한다(이후 BINARY SEARCH용). + +```abap + 762| SELECT * FROM ZCOT0010 + 763| INTO CORRESPONDING FIELDS OF TABLE GT_ZCOT0010 + 764| WHERE KOKRS = P_KOKRS. + 765| + 766| SORT GT_ZCOT0010 BY KSTAR. +``` + +- **EN**: Read the budget control group master ZCOT0010 for the controlling area into GT_ZCOT0010 and sort by cost element for binary search. +- 테이블(파서): read [ZCOT0010](/tables/ZCOT0010.md) / write - +- SAP 객체: ZCOT0010 +- 업무 키워드: 예산통제 그룹, 원가요소 마스터, 관리회계영역 +- English: Budget Control Group, Cost Element, Custom Table +- 정의부(복사 시 함께 필요): [`GT_ZCOT0010`](#decl-zcor0020top-120-gt_zcot0010), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L762-L766` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#GET_MASTER_ZCOT0010#C1` + +### FORM PROCESS_DATA — `ZCOR0020F01` L113-L128 (16줄) + +*코스트센터 모드는 COSP 계획값, 투자오더 모드는 BPEJ 예산을 읽고 COSP 실적을 조회한 뒤 집계·가공·단위환산 서브루틴을 순서대로 호출하는 메인 처리 흐름이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 코스트센터(PR_CC)면 SELECT_COSP B로 계획값을, 투자오더(PR_IO)면 SELECT_BPEJ로 예산을 읽고 SELECT_COSP A로 실적을 조회한 후 COLLECT_DATA, EDIT_DATA, CONVERT_CURR를 순차 수행한다. + +```abap + 117| " 계획값 SELECT. + 118| IF PR_CC = 'X'. + 119| PERFORM SELECT_COSP USING 'B'. " 계획 + 120| ELSEIF PR_IO = 'X'. + 121| PERFORM SELECT_BPEJ. + 122| ENDIF. + 123| + 124| PERFORM SELECT_COSP USING 'A'. " 실적 + 125| PERFORM COLLECT_DATA. + 126| PERFORM EDIT_DATA. + 127| PERFORM CONVERT_CURR. +``` + +- **EN**: Dispatch budget retrieval (SELECT_COSP B for cost centers or SELECT_BPEJ for orders), then actuals (SELECT_COSP A), followed by COLLECT_DATA, EDIT_DATA and CONVERT_CURR. +- 호출(파서): SELECT_COSP, SELECT_BPEJ, SELECT_COSP, COLLECT_DATA, EDIT_DATA, CONVERT_CURR +- SAP 객체: COSP, BPEJ +- 업무 키워드: 예산 조회, 실적 조회, 처리 순서, 코스트센터, 투자오더 +- English: Budget, Actual, Process Flow, COSP, BPEJ +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`PR_IO`](#decl-zcor0020top-131-pr_io) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L117-L127` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#PROCESS_DATA#C1` + +### FORM SELECT_COSP — `ZCOR0020F01` L359-L435 (77줄) + +*구분(B: 예산 계획값, A: 실적/약정/임시)에 따라 값유형·버전 범위를 정해 COSP에서 오브젝트·원가요소별 월별 금액을 합산 조회하고 GT_COSP에 구분을 표시한다.* + +> 이 unit 의 조각 2개가 66/77줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 예산(B)이면 값유형 01(계획)과 선택한 예산 버전(B00 사업계획, B10 실행예산, 또는 B10~B15+B20 전체)을, 실적(A)이면 값유형 04(실제)/22(약정)/60(임시)와 버전 000을 조회 범위로 구성한다. + +```abap + 368| IF P_FLAG = 'B'. + 369| " 1 : 계획값 + 370| ADD_RANGE_EQ : LR_WRTTP '01'. + 371| + 372| IF P_B00 = 'X'. + 373| ADD_RANGE_EQ : LR_VERSN 'B00'. + 374| ELSEIF P_B10 = 'X'. + 375| ADD_RANGE_EQ : LR_VERSN 'B10'. + 376| ELSEIF P_B1X = 'X'. + 377| ADD_RANGE_EQ : LR_VERSN 'B10'. + 378| ADD_RANGE_EQ : LR_VERSN 'B11'. + 379| ADD_RANGE_EQ : LR_VERSN 'B12'. + 380| ADD_RANGE_EQ : LR_VERSN 'B13'. + 381| ADD_RANGE_EQ : LR_VERSN 'B14'. + 382| ADD_RANGE_EQ : LR_VERSN 'B15'. " 판매운영비 추가 2013-09-30 + 383| ADD_RANGE_EQ : LR_VERSN 'B20'. + 384| ENDIF. + 385| ELSEIF P_FLAG = 'A'. + 386| * 실제, 약정, 임시 + 387| ADD_RANGE_EQ : LR_WRTTP '04'. " 실제 + 388| ADD_RANGE_EQ : LR_WRTTP '22'. " 약정 + 389| ADD_RANGE_EQ : LR_WRTTP '60'. " 임시 + 390| + 391| * " 2. 버전 -000 + 392| ADD_RANGE_EQ : LR_VERSN '000'. + 393| ENDIF. +``` + +- **EN**: Build WRTTP/VERSN ranges: for budget use value type 01 with the chosen plan version(s) B00, B10 or B10-B15 plus B20; for actual use value types 04 (actual), 22 (commitment), 60 (parked) with version 000. +- SAP 객체: COSP-WRTTP, COSP-VERSN +- 업무 키워드: 값유형, 예산 버전, 사업계획, 실행예산, 약정, 임시전표 +- English: Value Type, Plan Version, Commitment, Parked Document +- 정의부(복사 시 함께 필요): [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcor0020f01-361-lr_wrttp), [`P_B00`](#decl-zcor0020top-168-p_b00), [`LR_VERSN`](#decl-zcor0020f01-362-lr_versn), [`P_B10`](#decl-zcor0020top-170-p_b10), [`P_B1X`](#decl-zcor0020top-172-p_b1x) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L368-L393` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#SELECT_COSP#C1` + +#### [sql_select] COSP(원장 00)에서 조회 대상 OBJNR·회계연도·값유형·버전·원가요소 범위로 월별 금액 WKG001~012를 오브젝트·원가요소·차대구분·통화·버전·값유형별 합산해 GT_COSP에 추가하고, 실적이면 차대구분 A 행을 제거한 뒤 구분(C_TYPE)을 표시한다. + +```abap + 395| SELECT + 396| OBJNR + 397| GJAHR + 398| KSTAR + 399| BEKNZ + 400| TWAER + 401| VERSN + 402| WRTTP + 403| SUM( WKG001 ) AS WKG001 + 404| SUM( WKG002 ) AS WKG002 + 405| SUM( WKG003 ) AS WKG003 + 406| SUM( WKG004 ) AS WKG004 + 407| SUM( WKG005 ) AS WKG005 + 408| SUM( WKG006 ) AS WKG006 + 409| SUM( WKG007 ) AS WKG007 + 410| SUM( WKG008 ) AS WKG008 + 411| SUM( WKG009 ) AS WKG009 + 412| SUM( WKG010 ) AS WKG010 + 413| SUM( WKG011 ) AS WKG011 + 414| SUM( WKG012 ) AS WKG012 + 415| FROM COSP + 416| APPENDING CORRESPONDING FIELDS OF TABLE GT_COSP + 417| WHERE LEDNR = '00' + 418| AND OBJNR IN GR_SELECT_OBJ + 419| AND GJAHR = P_GJAHR + 420| AND WRTTP IN LR_WRTTP + 421| AND VERSN IN LR_VERSN + 422| AND KSTAR IN GR_KSTAR + 423| GROUP BY OBJNR GJAHR KSTAR BEKNZ TWAER VERSN + 424| WRTTP. + 425| + 426| IF GT_COSP[] IS NOT INITIAL. " 구분 설정. + 427| IF P_FLAG = 'A'. " 실제 + 428| DELETE GT_COSP WHERE BEKNZ = 'A'. + 429| ENDIF. + 430| + 431| LS_COSP-C_TYPE = P_FLAG. + 432| MODIFY GT_COSP FROM LS_COSP TRANSPORTING C_TYPE + 433| WHERE C_TYPE IS INITIAL. + 434| ENDIF. +``` + +- **EN**: Aggregate monthly amounts WKG001-012 from COSP (ledger 00) for the target objects, fiscal year, value types, versions and cost element range into GT_COSP, delete debit/credit indicator A rows for actual data, and set C_TYPE to the flag. +- 테이블(파서): read [COSP](/tables/COSP.md) / write [GT_COSP](/tables/GT_COSP.md) +- SAP 객체: COSP, GT_COSP +- 업무 키워드: 코스트센터 실적, 계획값, 월별 금액, 원가요소, 차대구분, 관리회계 합계 +- English: COSP, Cost Totals, Plan Value, Actual, Debit/Credit Indicator +- 정의부(복사 시 함께 필요): [`COSP`](#decl-zcor0020top-5-cosp), [`GT_COSP`](#decl-zcor0020top-83-gt_cosp), [`GR_SELECT_OBJ`](#decl-zcor0020top-118-gr_select_obj), [`P_GJAHR`](#decl-zcor0020top-147-p_gjahr), [`LR_WRTTP`](#decl-zcor0020f01-361-lr_wrttp), [`LR_VERSN`](#decl-zcor0020f01-362-lr_versn), [`GR_KSTAR`](#decl-zcor0020top-108-gr_kstar), [`LS_COSP`](#decl-zcor0020f01-363-ls_cosp) +- 선언을 못 찾은 이름: C_TYPE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L395-L434` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#SELECT_COSP#C2` + +### FORM SELECT_BPEJ — `ZCOR0020F01` L852-L878 (27줄) + +*투자오더의 연간 예산(BPEJ, 값유형 41, 편성/증액/삭감)을 오브젝트별로 합산해 GT_COSP에 예산(C_TYPE B, 버전 B00)으로 추가한다.* + +> 이 unit 의 조각 1개가 20/27줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] BPEJ에서 조회 대상 오더 OBJNR(GR_SELECT_OBJ)·회계연도의 값유형 41(예산) 중 VORGA KBUD(편성)/KBN0(증액)/KBR0(삭감) 금액 WLJHR을 합산해 GT_COSP에 추가하고 구분을 예산(C_TYPE B), 버전 B00으로 표시한다. + +```abap + 857| SELECT + 858| GJAHR + 859| OBJNR + 860| TWAER + 861| SUM( WLJHR ) AS WKG001 + 862| FROM BPEJ + 863| APPENDING CORRESPONDING FIELDS OF TABLE GT_COSP + 864| WHERE OBJNR IN GR_SELECT_OBJ + 865| AND WRTTP = '41' + 866| AND GJAHR = P_GJAHR + 867| AND VORGA IN ('KBUD', 'KBN0', 'KBR0') " 예산 편성, 증액, 삭감 + 868| GROUP BY GJAHR OBJNR TWAER. + 869| + 870| IF GT_COSP[] IS NOT INITIAL. + 871| LS_COSP-C_TYPE = 'B'. + 872| LS_COSP-VERSN = 'B00'. " B00 연간 필드에 맵핑해줌. + 873| MODIFY GT_COSP FROM LS_COSP TRANSPORTING C_TYPE + 874| VERSN + 875| WHERE C_TYPE IS INITIAL. + 876| ENDIF. +``` + +- **EN**: Select yearly order budget from BPEJ (value type 41, business transactions KBUD/KBN0/KBR0 for original budget, supplement, return) summed by object number and fiscal year into GT_COSP, marking rows as budget type B with version B00. +- 테이블(파서): read [BPEJ](/tables/BPEJ.md) / write [GT_COSP](/tables/GT_COSP.md) +- SAP 객체: BPEJ, GT_COSP +- 업무 키워드: 투자오더 예산, 예산 편성, 예산 증액, 예산 삭감, 연간 예산 +- English: Order Budget, BPEJ, Original Budget, Supplement, Return +- 정의부(복사 시 함께 필요): [`GT_COSP`](#decl-zcor0020top-83-gt_cosp), [`GR_SELECT_OBJ`](#decl-zcor0020top-118-gr_select_obj), [`P_GJAHR`](#decl-zcor0020top-147-p_gjahr), [`LS_COSP`](#decl-zcor0020f01-854-ls_cosp) +- 선언을 못 찾은 이름: C_TYPE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L857-L876` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#SELECT_BPEJ#C1` + +### FORM COLLECT_DATA — `ZCOR0020F01` L444-L498 (55줄) + +*COSP/BPEJ에서 읽은 월별 금액(WKG001~012)을 선택 기간 범위만큼 순회하며 오브젝트·원가요소별로 예산/실적 필드에 배분하고 COLLECT로 GT_DATA에 집계한다.* + +> 이 unit 의 조각 2개가 38/55줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 집계할 기간 범위를 코스트센터 모드는 선택화면 기간(S_PERBL LOW~HIGH), 투자오더 모드는 연간 전체(1~12월)로 정하고 반복 횟수(LV_DOCNT)를 계산한다. + +```abap + 458| IF PR_CC = 'X'. + 459| LV_START = S_PERBL-LOW. + 460| IF S_PERBL-HIGH IS INITIAL. + 461| LV_END = LV_START. + 462| ELSE. + 463| LV_END = S_PERBL-HIGH. + 464| ENDIF. + 465| ELSEIF PR_IO = 'X'. + 466| LV_START = 1. + 467| LV_END = 12. + 468| ENDIF. + 469| + 470| LV_DOCNT = LV_END - LV_START + 1. +``` + +- **EN**: Determine the period range to aggregate: selected periods S_PERBL for cost center mode, full year 1-12 for internal order mode, and compute the loop count. +- SAP 객체: COSP-PERBL, S_PERBL +- 업무 키워드: 기간 범위, 코스트센터, 투자오더, 연간 +- English: Period Range, Fiscal Period, Cost Center, Internal Order +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`LV_START`](#decl-zcor0020f01-445-lv_start), [`S_PERBL`](#decl-zcor0020top-149-s_perbl), [`LV_END`](#decl-zcor0020f01-446-lv_end), [`PR_IO`](#decl-zcor0020top-131-pr_io), [`LV_DOCNT`](#decl-zcor0020f01-447-lv_docnt) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L458-L470` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#COLLECT_DATA#C1` + +#### [aggregation] GT_COSP 각 행의 월별 금액 필드(WKGnnn)를 시작월부터 동적 ASSIGN으로 읽어 OBJNR·원가요소(코스트센터 모드)·통화를 키로 DISTIBUTE_FIELD로 예산/실적 필드에 배분한 뒤 COLLECT로 GT_DATA에 합산한다. + +```abap + 472| LOOP AT GT_COSP. + 473| LV_NC = LV_START. + 474| DO LV_DOCNT TIMES. + 475| CONCATENATE 'GT_COSP-WKG' LV_NC + 476| INTO LV_FIELD. + 477| + 478| ASSIGN (LV_FIELD) TO . + 479| + 480| IF SY-SUBRC EQ 0. + 481| + 482| GT_DATA-OBJNR = GT_COSP-OBJNR. + 483| IF PR_CC = 'X'. + 484| GT_DATA-KSTAR = GT_COSP-KSTAR. + 485| ENDIF. + 486| GT_DATA-TWAER = GV_WAERS. + 487| + 488| PERFORM DISTIBUTE_FIELD USING . + 489| COLLECT GT_DATA. CLEAR : GT_DATA. + 490| ENDIF. + 491| + 492| LV_NC = LV_NC + 1. + 493| CLEAR : LV_FIELD. + 494| ENDDO. + 495| CLEAR : LV_NC. + 496| ENDLOOP. +``` + +- **EN**: For each GT_COSP row read the monthly amount fields WKGnnn from the start period via dynamic ASSIGN, distribute them into budget/actual fields through DISTIBUTE_FIELD keyed by OBJNR, cost element and currency, and COLLECT into GT_DATA. +- 호출(파서): DISTIBUTE_FIELD +- SAP 객체: GT_COSP, GT_DATA, COSP +- 업무 키워드: 월별 금액 집계, 오브젝트 번호, 원가요소, 예산 실적 합산 +- English: Monthly Amount, Object Number, Cost Element, COLLECT Aggregation +- 정의부(복사 시 함께 필요): [`GT_COSP`](#decl-zcor0020top-83-gt_cosp), [`LV_NC`](#decl-zcor0020f01-450-lv_nc), [`LV_START`](#decl-zcor0020f01-445-lv_start), [`LV_DOCNT`](#decl-zcor0020f01-447-lv_docnt), [`LV_FIELD`](#decl-zcor0020f01-449-lv_field), [``](#decl-zcor0020f01-448--fs_field-), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L472-L496` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#COLLECT_DATA#C2` + +### FORM DISTIBUTE_FIELD — `ZCOR0020F01` L507-L537 (31줄) + +*GT_COSP 한 행의 월별 금액을 구분(C_TYPE)과 버전/값유형에 따라 GT_DATA의 예산 버전 필드(BG_B00~BG_B20) 또는 실적(ACTUAL)/임시(PARK) 필드에 동적으로 배분한다.* + +> 이 unit 의 조각 1개가 25/31줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 예산(C_TYPE B)이면 버전명으로 GT_DATA-BG_+VERSN 필드를 동적 ASSIGN해 금액을 넣고, 실적(C_TYPE A)이면 값유형 WRTTP 04는 ACTUAL, 22/60(약정·임시)은 PARK 필드에 금액을 배분한다. + +```abap + 511| IF GT_COSP-C_TYPE = 'B'. + 512| CLEAR : LV_FIELD. + 513| + 514| CONCATENATE 'GT_DATA-BG_' GT_COSP-VERSN + 515| INTO LV_FIELD. + 516| + 517| ASSIGN (LV_FIELD) TO . + 518| + 519| IF SY-SUBRC EQ 0. + 520| = P_VALUE. + 521| ENDIF. + 522| ELSEIF GT_COSP-C_TYPE = 'A'. + 523| CASE GT_COSP-WRTTP. + 524| WHEN '04'. + 525| LV_FIELD = 'GT_DATA-ACTUAL'. + 526| WHEN '22' OR '60'. + 527| LV_FIELD = 'GT_DATA-PARK'. + 528| ENDCASE. + 529| + 530| ASSIGN (LV_FIELD) TO . + 531| + 532| IF SY-SUBRC EQ 0. + 533| = P_VALUE. + 534| ENDIF. + 535| ENDIF. +``` + +- **EN**: For budget rows (C_TYPE B) assign the amount to the GT_DATA-BG_ field dynamically; for actual rows (C_TYPE A) route value type 04 to ACTUAL and 22/60 (commitment/parked) to PARK. +- SAP 객체: GT_COSP, GT_DATA, COSP-WRTTP, COSP-VERSN +- 업무 키워드: 예산 버전 배분, 실적, 약정, 임시전표, 값유형, 동적 필드 +- English: Budget Version, Actual, Commitment, Parked, Value Type, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_COSP`](#decl-zcor0020top-83-gt_cosp), [`LV_FIELD`](#decl-zcor0020f01-509-lv_field), [``](#decl-zcor0020f01-508--fs_field-) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L511-L535` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#DISTIBUTE_FIELD#C1` + +### FORM EDIT_DATA — `ZCOR0020F01` L546-L709 (164줄) + +*집계된 GT_DATA에 코스트센터/원가요소/오더 명칭을 붙이고 총예산(BG_ALL)·총실적·가용예산·가용율을 계산해 신호등 상태와 예산통제 그룹을 부여한 뒤 금액이 모두 0인 행을 제거한다.* + +> 이 unit 의 조각 7개가 127/164줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 관리회계영역(P_KOKRS)의 현재 유효한 코스트센터 명칭을 CSKT와 CSKS 조인으로 조회해 LT_CSKT에 담고 KOSTL로 정렬한다. + +```abap + 570| SELECT B~KOSTL A~KTEXT + 571| FROM CSKT AS A INNER JOIN CSKS AS B + 572| ON A~KOSTL = B~KOSTL + 573| INTO CORRESPONDING FIELDS OF TABLE LT_CSKT + 574| WHERE A~KOKRS = P_KOKRS + 575| AND B~DATBI >= SY-DATUM + 576| AND B~DATAB <= SY-DATUM + 577| AND A~SPRAS = SY-LANGU + 578| AND A~DATBI >= SY-DATUM. + 579| + 580| SORT LT_CSKT BY KOSTL. +``` + +- **EN**: Select currently valid cost center texts (CSKT joined with CSKS) for the controlling area into LT_CSKT and sort by KOSTL. +- 테이블(파서): read [CSKT](/tables/CSKT.md), [CSKS](/tables/CSKS.md) / write - +- SAP 객체: CSKT, CSKS +- 업무 키워드: 코스트센터 명칭, 관리회계영역, 유효기간 +- English: Cost Center Text, Controlling Area, Validity Period +- 정의부(복사 시 함께 필요): [`CSKS`](#decl-zcor0020top-4-csks), [`LT_CSKT`](#decl-zcor0020f01-551-lt_cskt), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L570-L580` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C1` + +#### [sql_select] GT_DATA에 있는 원가요소의 명칭을 계정과목표(GV_KTOPL) 기준으로 CSKU에서 FOR ALL ENTRIES로 조회해 LT_CSKU에 담는다. + +```abap + 583| SELECT KSTAR KTEXT + 584| FROM CSKU + 585| INTO CORRESPONDING FIELDS OF TABLE LT_CSKU + 586| FOR ALL ENTRIES IN GT_DATA + 587| WHERE KTOPL = GV_KTOPL + 588| AND KSTAR = GT_DATA-KSTAR + 589| AND SPRAS = SY-LANGU. + 590| + 591| SORT LT_CSKU BY KSTAR. +``` + +- **EN**: Select cost element texts from CSKU for all cost elements in GT_DATA by chart of accounts GV_KTOPL into LT_CSKU. +- 테이블(파서): read [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKU +- 업무 키워드: 원가요소 명칭, 계정과목표 +- English: Cost Element Text, Chart of Accounts +- 정의부(복사 시 함께 필요): [`LT_CSKU`](#decl-zcor0020f01-556-lt_csku), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L583-L591` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C2` + +#### [calculation] 코스트센터 모드에서 OBJNR을 GT_ONRKS로 코스트센터로 환산하고 코스트센터·원가요소 명칭을 붙인 뒤, 총예산(BG_ALL)을 사업계획(B00) 선택 시 BG_B00, 아니면 실행예산 버전 B10~B15+B20 합계로 계산한다. + +```abap + 595| IF PR_CC = 'X'. + 596| READ TABLE GT_ONRKS WITH KEY OBJNR = -OBJNR + 597| BINARY SEARCH. + 598| + 599| IF SY-SUBRC EQ 0. + 600| -KOSTL = GT_ONRKS-KOSTL. + 601| ENDIF. + 602| + 603| READ TABLE LT_CSKT INTO LS_CSKT + 604| WITH KEY KOSTL = -KOSTL BINARY SEARCH. + 605| + 606| IF SY-SUBRC EQ 0. + 607| -KOSTL_T = LS_CSKT-KTEXT. + 608| ENDIF. + 609| + 610| READ TABLE LT_CSKU INTO LS_CSKU + 611| WITH KEY KSTAR = -KSTAR BINARY SEARCH. + 612| + 613| IF SY-SUBRC EQ 0. + 614| -KSTAR_T = LS_CSKU-KTEXT. + 615| ENDIF. + 616| + 617| IF P_B00 NE 'X'. + 618| -BG_ALL = + 619| -BG_B10 + + 620| -BG_B11 + + 621| -BG_B12 + + 622| -BG_B13 + + 623| -BG_B14 + + 624| -BG_B15 + + 625| -BG_B20. + 626| ELSE. + 627| -BG_ALL = -BG_B00. + 628| ENDIF. +``` + +- **EN**: In cost center mode map OBJNR to cost center via GT_ONRKS, attach cost center/cost element texts, and compute total budget BG_ALL as BG_B00 (business plan) or the sum of execution budget versions B10-B15 and B20. +- SAP 객체: GT_ONRKS, GT_DATA +- 업무 키워드: 코스트센터, 총예산, 사업계획, 실행예산, 버전 합계 +- English: Cost Center, Total Budget, Plan Version, Object Number +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`GT_ONRKS`](#decl-zcor0020top-115-gt_onrks), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [``](#decl-zcor0020f01-547--fs_data-), [`LT_CSKT`](#decl-zcor0020f01-551-lt_cskt), [`LS_CSKT`](#decl-zcor0020f01-561-ls_cskt), [`LT_CSKU`](#decl-zcor0020f01-556-lt_csku), [`LS_CSKU`](#decl-zcor0020f01-562-ls_csku), [`P_B00`](#decl-zcor0020top-168-p_b00) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L595-L628` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C3` + +#### [sql_select] 투자오더 모드에서 OBJNR을 GT_ONROR로 오더번호로 환산하고 AUFK에서 오더 명칭·책임코스트센터(KOSTV)·요청코스트센터(AKSTL)를 SELECT SINGLE로 읽어 명칭을 붙이며 총예산(BG_ALL)은 BG_B00으로 둔다. + +```abap + 629| ELSEIF PR_IO = 'X'. + 630| READ TABLE GT_ONROR WITH KEY OBJNR = -OBJNR + 631| BINARY SEARCH. + 632| + 633| IF SY-SUBRC EQ 0. + 634| -AUFNR = GT_ONROR-AUFNR. + 635| ENDIF. + 636| + 637| SELECT SINGLE KTEXT KOSTV AKSTL + 638| FROM AUFK + 639| INTO (-AUFNR_T, + 640| -KOSTV, + 641| -AKSTL) + 642| WHERE AUFNR = -AUFNR. + 643| + 644| READ TABLE LT_CSKT INTO LS_CSKT + 645| WITH KEY KOSTL = -KOSTV BINARY SEARCH. + 646| + 647| IF SY-SUBRC EQ 0. + 648| -KOSTV_T = LS_CSKT-KTEXT. + 649| ENDIF. + 650| + 651| CLEAR : LS_CSKT. + 652| + 653| READ TABLE LT_CSKT INTO LS_CSKT + 654| WITH KEY KOSTL = -AKSTL BINARY SEARCH. + 655| + 656| IF SY-SUBRC EQ 0. + 657| -AKSTL_T = LS_CSKT-KTEXT. + 658| ENDIF. + 659| + 660| -BG_ALL = -BG_B00. + 661| ENDIF. +``` + +- **EN**: In internal order mode map OBJNR to order number via GT_ONROR, read order text, responsible cost center (KOSTV) and requesting cost center (AKSTL) from AUFK with their texts, and set BG_ALL to BG_B00. +- 테이블(파서): read [AUFK](/tables/AUFK.md) / write - +- SAP 객체: AUFK, GT_ONROR +- 업무 키워드: 투자오더, 오더 명칭, 책임 코스트센터, 요청 코스트센터, 총예산 +- English: Internal Order, Responsible Cost Center, Requesting Cost Center, AUFK +- 정의부(복사 시 함께 필요): [`PR_IO`](#decl-zcor0020top-131-pr_io), [`GT_ONROR`](#decl-zcor0020top-116-gt_onror), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [``](#decl-zcor0020f01-547--fs_data-), [`AUFK`](#decl-zcor0020top-5-aufk), [`LT_CSKT`](#decl-zcor0020f01-551-lt_cskt), [`LS_CSKT`](#decl-zcor0020f01-561-ls_cskt) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L629-L661` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C4` + +#### [calculation] 총집행(TOTAL_A=실적+임시), 가용예산(POSSIBLE_BG=총예산-총집행, 음수/예산없음은 0)과 가용율(%)을 계산하고 가용율 0은 초기, 10% 이하 빨강, 50% 이하 노랑, 50% 초과 초록 신호등 상태를 부여한다. + +```abap + 663| -TOTAL_A = -ACTUAL + 664| + -PARK. + 665| + 666| -POSSIBLE_BG = + 667| -BG_ALL - + 668| -TOTAL_A. + 669| * + 670| IF -POSSIBLE_BG <= 0 OR + 671| -BG_ALL = 0. + 672| -POSSIBLE_BG = 0. + 673| ENDIF. + 674| + 675| IF -BG_ALL NE 0. + 676| LV_PV = -POSSIBLE_BG / + 677| -BG_ALL. + 678| LV_PV = LV_PV * 100. + 679| ENDIF. + 680| + 681| IF LV_PV = 0. + 682| -STATUS = GC_STATUS_INIT. + 683| ELSEIF LV_PV <= 10. + 684| -STATUS = GC_STATUS_RED. + 685| ELSEIF LV_PV <= 50. + 686| -STATUS = GC_STATUS_YELLOW. + 687| ELSEIF LV_PV > 50. + 688| -STATUS = GC_STATUS_GREEN. + 689| ENDIF. + 690| + 691| -PER = LV_PV. +``` + +- **EN**: Compute total consumption (actual + parked), available budget (total budget minus consumption, floored at 0) and availability ratio in percent, then assign traffic-light status: 0 initial, <=10% red, <=50% yellow, >50% green. +- SAP 객체: GT_DATA +- 업무 키워드: 가용예산, 가용율, 예산 집행, 신호등 아이콘, 임시전표 +- English: Available Budget, Availability Ratio, Budget Consumption, Traffic Light Status +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0020top-40-gt_data), [``](#decl-zcor0020f01-547--fs_data-), [`LV_PV`](#decl-zcor0020f01-548-lv_pv), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L663-L691` · confidence 0.95 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C5` + +#### [other] 원가요소별 예산통제 그룹 마스터(GT_ZCOT0010)를 관리회계영역+원가요소로 읽어 그룹명과 그룹 설명을 GT_DATA 행에 부여한다. + +```abap + 693| READ TABLE GT_ZCOT0010 WITH KEY + 694| KOKRS = P_KOKRS + 695| KSTAR = -KSTAR + 696| BINARY SEARCH. + 697| + 698| IF SY-SUBRC EQ 0. + 699| -GROUPNAME = GT_ZCOT0010-GROUPNAME. + 700| -GRP_DESCRIPT = GT_ZCOT0010-GRP_DESCRIPT. + 701| ENDIF. +``` + +- **EN**: Look up the budget control group master GT_ZCOT0010 by controlling area and cost element and assign group name and description to the row. +- SAP 객체: ZCOT0010 +- 업무 키워드: 예산통제 그룹, 원가요소 매핑 +- English: Budget Control Group, Cost Element Mapping +- 정의부(복사 시 함께 필요): [`GT_ZCOT0010`](#decl-zcor0020top-120-gt_zcot0010), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [``](#decl-zcor0020f01-547--fs_data-) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L693-L701` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C6` + +#### [other] 실적·임시·총예산·가용예산이 모두 0인 무의미한 행을 GT_DATA에서 삭제한다. + +```abap + 706| DELETE GT_DATA WHERE ACTUAL = 0 + 707| AND PARK = 0 AND BG_ALL = 0 AND POSSIBLE_BG = 0. +``` + +- **EN**: Delete rows from GT_DATA where actual, parked, total budget and available budget are all zero. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA +- 업무 키워드: 0 행 제거, 결과 정리 +- English: Zero Row Deletion +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0020top-40-gt_data) +- 선언을 못 찾은 이름: BG_ALL (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L706-L707` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#EDIT_DATA#C7` + +### FORM CONVERT_CURR — `ZCOR0020F01` L718-L749 (32줄) + +*선택화면의 금액 단위 옵션(원/천원/백만원)에 따라 GT_DATA의 모든 통화(CURR) 필드를 1000 또는 1000000으로 나누어 표시 단위를 환산한다.* + +> 이 unit 의 조각 1개가 25/32줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 원 단위(P_WON1)가 아니면 천원(P_WON2)은 1000, 백만원(P_WON3)은 1000000을 나눗수로 정해 ALV 필드카탈로그(GT_MAIN_FIELDCAT)의 DATATYPE CURR 필드를 동적 ASSIGN으로 찾아 GT_DATA 금액을 단위 환산한다. + +```abap + 724| CHECK P_WON1 NE 'X'. + 725| + 726| IF P_WON2 = 'X'. + 727| LV_DIVIDE = 1000. + 728| ELSEIF P_WON3 = 'X'. + 729| LV_DIVIDE = 1000000. + 730| ENDIF. + 731| + 732| LOOP AT GT_DATA. + 733| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 734| WHERE DATATYPE = 'CURR'. + 735| + 736| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 737| INTO LV_FIELD. + 738| + 739| ASSIGN (LV_FIELD) TO . + 740| + 741| IF SY-SUBRC EQ 0 AND NE 0. + 742| = / LV_DIVIDE. + 743| ENDIF. + 744| CLEAR : LV_FIELD. + 745| ENDLOOP. + 746| + 747| MODIFY GT_DATA. CLEAR: GT_DATA. + 748| ENDLOOP. +``` + +- **EN**: Unless the amount unit is KRW (P_WON1), set divisor 1000 (thousand) or 1000000 (million) and divide every CURR-type field of GT_DATA found via the ALV field catalog with dynamic ASSIGN. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA, GT_MAIN_FIELDCAT, LVC_S_FCAT +- 업무 키워드: 금액 단위 환산, 천원, 백만원, 통화 필드, 동적 필드 할당 +- English: Amount Unit Conversion, Currency Field, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`P_WON1`](#decl-zcor0020top-184-p_won1), [`P_WON2`](#decl-zcor0020top-186-p_won2), [`LV_DIVIDE`](#decl-zcor0020f01-722-lv_divide), [`P_WON3`](#decl-zcor0020top-188-p_won3), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`GT_MAIN_FIELDCAT`](#decl-zcor0020top-36-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcor0020f01-719-ls_fieldcat), [`LV_FIELD`](#decl-zcor0020f01-721-lv_field), [``](#decl-zcor0020f01-720--fs-) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L724-L748` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#CONVERT_CURR#C1` + +### EVENT END-OF-SELECTION — `ZCOR0020` L78-L89 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 79| IF SY-BATCH NE 'X'. + 80| IF GT_DATA[] IS NOT INITIAL. + 81| CALL SCREEN 100. + 82| ELSE. + 83| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 84| ENDIF. + 85| ELSE. + 86| IF GT_DATA[] IS NOT INITIAL. + 87| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 88| ENDIF. + 89| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0020top-40-gt_data) +- 위치: `abap://ZCOR0020/ZCOR0020#L79-L89` · confidence 0.85 · `ZCOR0020#ZCOR0020#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR0020/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR0020/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR0020/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR0020/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR0020/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR0020#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR0020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR0020/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR0020#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM CALL_REPORT — `ZCOR0020F01` L886-L957 (72줄) + +*ALV에서 실적(ACTUAL)/임시(PARK) 금액 셀을 더블클릭했을 때 해당 코스트센터 또는 투자오더의 CO 라인아이템 리포트(RKAEP000, KSB1/KOB1)로 드릴다운한다.* + +> 이 unit 의 조각 3개가 59/72줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 더블클릭된 행/컬럼이 ACTUAL 또는 PARK 컬럼인지 검증하고 GT_DATA 해당 행을 읽은 뒤 관리회계영역 파라미터(CAC)를 세팅하고 값유형(WRTTP) 범위를 실적은 04, 임시전표는 60으로 결정한다. + +```abap + 896| CHECK P_ROW CO '0123456789 '. + 897| + 898| IF NOT ( P_COLUMN = 'ACTUAL' OR P_COLUMN = 'PARK' ). + 899| EXIT. + 900| ENDIF. + 901| + 902| READ TABLE GT_DATA INDEX P_ROW. + 903| + 904| CHECK SY-SUBRC EQ 0. + 905| + 906| SET PARAMETER ID 'CAC' FIELD P_KOKRS. + 907| + 908| IF P_COLUMN = 'ACTUAL'. + 909| ADD_RANGE_EQ : LR_WRTTP '04'. + 910| ELSEIF P_COLUMN = 'PARK'. + 911| ADD_RANGE_EQ : LR_WRTTP '60'. + 912| ENDIF. +``` + +- **EN**: Validate the clicked ALV row/column (ACTUAL or PARK), read the GT_DATA row, set parameter ID CAC and determine the value type (WRTTP) range 04 for actual or 60 for parked documents. +- SAP 객체: GT_DATA, COEP-WRTTP +- 업무 키워드: 드릴다운, 값유형, 실적, 임시전표, 관리회계영역 +- English: Drilldown, Value Type, Actual, Parked Document, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`P_KOKRS`](#decl-zcor0020top-141-p_kokrs), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcor0020f01-890-lr_wrttp) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L896-L912` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#CALL_REPORT#C1` + +#### [fm_call] 코스트센터 조회 모드에서는 코스트센터·원가요소·전기일(회계연도+기간 범위의 초일~말일, GET_LAST_DAY) 범위를 만들고 값유형 11을 추가한 뒤 RKAEP000을 KSB1(코스트센터 실제 라인아이템)로 SUBMIT AND RETURN 한다. + +```abap + 914| IF PR_CC = 'X'. + 915| ADD_RANGE_EQ : LR_WRTTP '11'. " 11번 추가 + 916| + 917| ADD_RANGE_EQ : LR_KOSTL GT_DATA-KOSTL. + 918| ADD_RANGE_EQ : LR_KSTAR GT_DATA-KSTAR. + 919| CONCATENATE P_GJAHR S_PERBL-LOW+1(2) '01' INTO LV_S_DATE. + 920| + 921| IF S_PERBL-HIGH IS NOT INITIAL. + 922| CONCATENATE P_GJAHR S_PERBL-HIGH+1(2) '01' INTO LV_E_DATE. + 923| ELSE. + 924| LV_E_DATE = LV_S_DATE. + 925| ENDIF. + 926| + 927| PERFORM GET_LAST_DAY USING LV_E_DATE + 928| CHANGING LV_E_DATE. + 929| + 930| LR_BUDAT-LOW = LV_S_DATE. + 931| LR_BUDAT-HIGH = LV_E_DATE. + 932| LR_BUDAT-SIGN = 'I'. + 933| LR_BUDAT-OPTION = 'BT'. + 934| APPEND LR_BUDAT. + 935| + 936| SUBMIT RKAEP000 WITH KOTSL IN LR_KOSTL + 937| WITH R_BUDAT IN LR_BUDAT + 938| WITH P_TCODE EQ 'KSB1' + 939| WITH KSTAR IN LR_KSTAR + 940| WITH KOSTL IN LR_KOSTL + 941| WITH GR_WRTTP IN LR_WRTTP + 942| AND RETURN. +``` + +- **EN**: For cost center mode, build cost center, cost element and posting date ranges (first to last day of the selected periods via GET_LAST_DAY), add value type 11, and SUBMIT RKAEP000 as KSB1 (Cost Center Actual Line Items) and return. +- 호출(파서): GET_LAST_DAY, RKAEP000 +- SAP 객체: RKAEP000, KSB1, GET_LAST_DAY, CSKS, COBK +- 업무 키워드: 코스트센터, 라인아이템, 전기일 범위, 드릴다운, 원가요소 +- English: Cost Center, Line Item Report, KSB1, Posting Date +- 정의부(복사 시 함께 필요): [`PR_CC`](#decl-zcor0020top-128-pr_cc), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcor0020f01-890-lr_wrttp), [`LR_KOSTL`](#decl-zcor0020f01-891-lr_kostl), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`LR_KSTAR`](#decl-zcor0020f01-893-lr_kstar), [`P_GJAHR`](#decl-zcor0020top-147-p_gjahr), [`S_PERBL`](#decl-zcor0020top-149-s_perbl), [`LV_S_DATE`](#decl-zcor0020f01-887-lv_s_date), [`LV_E_DATE`](#decl-zcor0020f01-888-lv_e_date), [`LR_BUDAT`](#decl-zcor0020f01-892-lr_budat) +- 선언을 못 찾은 이름: R_BUDAT, P_TCODE, GR_WRTTP (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L914-L942` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#CALL_REPORT#C2` + +#### [fm_call] 투자오더 조회 모드에서는 오더번호 범위만 지정하고 잔액이 완전정산되지 않으므로 전기일 범위 없이 전체 기간으로 RKAEP000을 KOB1(오더 실제 라인아이템, 표시변형 /ZORDER)로 SUBMIT AND RETURN 한다. + +```abap + 943| ELSE. + 944| ADD_RANGE_EQ : LR_AUFNR GT_DATA-AUFNR. + 945| + 946| " 잔액을 완전정산 하지 않으므로 전체 기간을 조회해야 한다. + 947| CLEAR : LR_BUDAT. + 948| + 949| SUBMIT RKAEP000 WITH AUFNR IN LR_AUFNR + 950| WITH R_BUDAT IN LR_BUDAT + 951| WITH GR_WRTTP IN LR_WRTTP + 952| WITH P_TCODE EQ 'KOB1' + 953| WITH P_DISVAR = '/ZORDER' " A 상계계정을 없앤다. + 954| AND RETURN. + 955| ENDIF. +``` + +- **EN**: For internal order mode, set only the order number range and SUBMIT RKAEP000 as KOB1 (Order Actual Line Items, display variant /ZORDER) over all periods since balances are not fully settled. +- 호출(파서): RKAEP000 +- SAP 객체: RKAEP000, KOB1, AUFK +- 업무 키워드: 투자오더, 라인아이템, 드릴다운, 전체 기간, 표시변형 +- English: Internal Order, Line Item Report, KOB1, Display Variant +- 정의부(복사 시 함께 필요): [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_AUFNR`](#decl-zcor0020f01-894-lr_aufnr), [`GT_DATA`](#decl-zcor0020top-40-gt_data), [`LR_BUDAT`](#decl-zcor0020f01-892-lr_budat), [`LR_WRTTP`](#decl-zcor0020f01-890-lr_wrttp) +- 선언을 못 찾은 이름: R_BUDAT, GR_WRTTP, P_TCODE, P_DISVAR (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0020/ZCOR0020F01#L943-L955` · confidence 0.9 · `ZCOR0020#ZCOR0020F01#FORM#CALL_REPORT#C3` + +## 정의부 (347건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR0020C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor0020c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR0020TOP` (50건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor0020top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor0020top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor0020top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor0020top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor0020top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor0020top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### CSKA — tables · L4-L4 {#decl-zcor0020top-4-cska} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### CSKS — tables · L4-L4 {#decl-zcor0020top-4-csks} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### DD03L — tables · L4-L4 {#decl-zcor0020top-4-dd03l} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### AUFK — tables · L5-L5 {#decl-zcor0020top-5-aufk} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### COSP — tables · L5-L5 {#decl-zcor0020top-5-cosp} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### KMAS_D — tables · L5-L5 {#decl-zcor0020top-5-kmas_d} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcor0020top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcor0020top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcor0020top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcor0020top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcor0020top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcor0020top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcor0020top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcor0020top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L36-L36 {#decl-zcor0020top-36-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L40-L70 {#decl-zcor0020top-40-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + OBJNR LIKE COSP-OBJNR, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, + AUFNR LIKE AUFK-AUFNR, + AUFNR_T LIKE AUFK-KTEXT, + KSTAR LIKE CSKA-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, + TOTAL_A LIKE COSP-WKG001, + ACTUAL LIKE COSP-WKG001, + PARK LIKE COSP-WKG001, + BG_B00 LIKE COSP-WKG001, + BG_B10 LIKE COSP-WKG001, + BG_B11 LIKE COSP-WKG001, + BG_B12 LIKE COSP-WKG001, + BG_B13 LIKE COSP-WKG001, + BG_B14 LIKE COSP-WKG001, + BG_B15 LIKE COSP-WKG001, + BG_B20 LIKE COSP-WKG001, + BG_ALL LIKE COSP-WKG001, + POSSIBLE_BG LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + PER TYPE P DECIMALS 2, + GROUPNAME LIKE ZCOT0010-GROUPNAME, + GRP_DESCRIPT LIKE ZCOT0010-GRP_DESCRIPT, + KOSTV LIKE AUFK-KOSTV, + KOSTV_T LIKE CSKT-KTEXT, + AKSTL LIKE AUFK-AKSTL, + AKSTL_T LIKE CSKT-KTEXT, + STATUS LIKE ICON-ID, +END OF GT_DATA. +``` + +#### GS_DATA — data · L72-L72 {#decl-zcor0020top-72-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L74-L78 {#decl-zcor0020top-74-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L81-L81 {#decl-zcor0020top-81-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_COSP — data · L83-L106 {#decl-zcor0020top-83-gt_cosp} + +```abap +DATA : BEGIN OF GT_COSP OCCURS 0 , + OBJNR LIKE COSP-OBJNR, + GJAHR LIKE COSP-GJAHR, + KSTAR LIKE COSP-KSTAR, + BEKNZ LIKE COSP-BEKNZ, + TWAER LIKE COSP-TWAER, + VERSN LIKE COSP-VERSN, + WRTTP LIKE COSP-WRTTP, + WKG001 LIKE COSP-WKG001, + WKG002 LIKE COSP-WKG002, + WKG003 LIKE COSP-WKG003, + WKG004 LIKE COSP-WKG004, + WKG005 LIKE COSP-WKG005, + WKG006 LIKE COSP-WKG006, + WKG007 LIKE COSP-WKG007, + WKG008 LIKE COSP-WKG008, + WKG009 LIKE COSP-WKG009, + WKG010 LIKE COSP-WKG010, + WKG011 LIKE COSP-WKG011, + WKG012 LIKE COSP-WKG012, + + C_TYPE TYPE C, " B: 예산, A: 실제 + +END OF GT_COSP. +``` + +#### GR_KSTAR — ranges · L108-L108 {#decl-zcor0020top-108-gr_kstar} + +```abap +RANGES : GR_KSTAR FOR CSKA-KSTAR. +``` + +#### GT_KSTAR — data · L110-L113 {#decl-zcor0020top-110-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KTEXT LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GT_ONRKS — data · L115-L115 {#decl-zcor0020top-115-gt_onrks} + +```abap +DATA : GT_ONRKS LIKE ONRKS OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ONROR — data · L116-L116 {#decl-zcor0020top-116-gt_onror} + +```abap +DATA : GT_ONROR LIKE ONROR OCCURS 0 WITH HEADER LINE. +``` + +#### GR_SELECT_OBJ — ranges · L118-L118 {#decl-zcor0020top-118-gr_select_obj} + +```abap +RANGES : GR_SELECT_OBJ FOR COSP-OBJNR. +``` + +#### GT_ZCOT0010 — data · L120-L120 {#decl-zcor0020top-120-gt_zcot0010} + +```abap +DATA : GT_ZCOT0010 LIKE ZCOT0010 OCCURS 0 WITH HEADER LINE. +``` + +#### PR_CC — parameter · L128-L129 {#decl-zcor0020top-128-pr_cc} + +```abap +PARAMETER : PR_CC TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X' + USER-COMMAND UC1. +``` + +#### PR_IO — parameter · L131-L131 {#decl-zcor0020top-131-pr_io} + +```abap +PARAMETER : PR_IO TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_KOKRS — parameter · L141-L142 {#decl-zcor0020top-141-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L147-L148 {#decl-zcor0020top-147-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### S_PERBL — select-option · L149-L151 {#decl-zcor0020top-149-s_perbl} + +```abap +SELECT-OPTIONS : S_PERBL FOR COSP-PERBL NO-EXTENSION OBLIGATORY + DEFAULT SY-DATUM+4(2) + MODIF ID MG2. +``` + +#### P_KSSET — parameter · L156-L156 {#decl-zcor0020top-156-p_ksset} + +```abap +PARAMETER : P_KSSET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KOSTL — select-option · L157-L157 {#decl-zcor0020top-157-s_kostl} + +```abap +SELECT-OPTIONS : S_KOSTL FOR CSKS-KOSTL MODIF ID MG2. +``` + +#### P_KASET — parameter · L158-L158 {#decl-zcor0020top-158-p_kaset} + +```abap +PARAMETER : P_KASET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KSTAR — select-option · L159-L159 {#decl-zcor0020top-159-s_kstar} + +```abap +SELECT-OPTIONS : S_KSTAR FOR CSKA-KSTAR MODIF ID MG2. +``` + +#### P_CONT — parameter · L163-L163 {#decl-zcor0020top-163-p_cont} + +```abap +PARAMETER : P_CONT TYPE C AS CHECKBOX DEFAULT 'X' MODIF ID MG2. +``` + +#### P_B00 — parameter · L168-L168 {#decl-zcor0020top-168-p_b00} + +```abap +PARAMETER : P_B00 TYPE C RADIOBUTTON GROUP RG2 MODIF ID MG2. +``` + +#### P_B10 — parameter · L170-L170 {#decl-zcor0020top-170-p_b10} + +```abap +PARAMETER : P_B10 TYPE C RADIOBUTTON GROUP RG2 MODIF ID MG2. +``` + +#### P_B1X — parameter · L172-L172 {#decl-zcor0020top-172-p_b1x} + +```abap +PARAMETER : P_B1X TYPE C RADIOBUTTON GROUP RG2 DEFAULT 'X' MODIF ID MG2. +``` + +#### P_KOSET — parameter · L178-L178 {#decl-zcor0020top-178-p_koset} + +```abap +PARAMETER : P_KOSET LIKE GRPDYNP-NAME_COALL MODIF ID MG3. +``` + +#### S_AUFNR — select-option · L179-L179 {#decl-zcor0020top-179-s_aufnr} + +```abap +SELECT-OPTIONS : S_AUFNR FOR AUFK-AUFNR MODIF ID MG3. +``` + +#### P_WON1 — parameter · L184-L184 {#decl-zcor0020top-184-p_won1} + +```abap +PARAMETER : P_WON1 TYPE C RADIOBUTTON GROUP RG3 . +``` + +#### P_WON2 — parameter · L186-L186 {#decl-zcor0020top-186-p_won2} + +```abap +PARAMETER : P_WON2 TYPE C RADIOBUTTON GROUP RG3 DEFAULT 'X' . +``` + +#### P_WON3 — parameter · L188-L188 {#decl-zcor0020top-188-p_won3} + +```abap +PARAMETER : P_WON3 TYPE C RADIOBUTTON GROUP RG3 . +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR0020F01` (41건) + +#### LT_CSKA — data · unit 로컬 · L138-L141 {#decl-zcor0020f01-138-lt_cska} + +```abap + DATA : BEGIN OF LT_CSKA OCCURS 0, + KSTAR LIKE CSKA-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKA. +``` + +#### LT_RETURN — data · unit 로컬 · L143-L143 {#decl-zcor0020f01-143-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L144-L144 {#decl-zcor0020f01-144-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FIELDNAME — data · unit 로컬 · L170-L170 {#decl-zcor0020f01-170-lv_fieldname} + +```abap + DATA : LV_FIELDNAME TYPE RGSBS-FIELD. +``` + +#### LV_CLASS — data · unit 로컬 · L171-L171 {#decl-zcor0020f01-171-lv_class} + +```abap + DATA : LV_CLASS TYPE RGSBS-CLASS. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L200-L200 {#decl-zcor0020f01-200-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LT_ZCOT0010 — data · unit 로컬 · L201-L201 {#decl-zcor0020f01-201-lt_zcot0010} + +```abap + DATA : LT_ZCOT0010 LIKE ZCOT0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L270-L270 {#decl-zcor0020f01-270-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_WRTTP — ranges · unit 로컬 · L361-L361 {#decl-zcor0020f01-361-lr_wrttp} + +```abap + RANGES : LR_WRTTP FOR COSP-WRTTP. +``` + +#### LR_VERSN — ranges · unit 로컬 · L362-L362 {#decl-zcor0020f01-362-lr_versn} + +```abap + RANGES : LR_VERSN FOR COSP-VERSN. +``` + +#### LS_COSP — data · unit 로컬 · L363-L363 {#decl-zcor0020f01-363-ls_cosp} + +```abap + DATA : LS_COSP LIKE GT_COSP. +``` + +#### LV_START — data · unit 로컬 · L445-L445 {#decl-zcor0020f01-445-lv_start} + +```abap + DATA : LV_START LIKE COSP-PERBL. +``` + +#### LV_END — data · unit 로컬 · L446-L446 {#decl-zcor0020f01-446-lv_end} + +```abap + DATA : LV_END LIKE COSP-PERBL. +``` + +#### LV_DOCNT — data · unit 로컬 · L447-L447 {#decl-zcor0020f01-447-lv_docnt} + +```abap + DATA : LV_DOCNT TYPE I. +``` + +#### — field-symbol · unit 로컬 · L448-L448 {#decl-zcor0020f01-448--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L449-L449 {#decl-zcor0020f01-449-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L450-L450 {#decl-zcor0020f01-450-lv_nc} + +```abap + DATA : LV_NC(3) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L508-L508 {#decl-zcor0020f01-508--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L509-L509 {#decl-zcor0020f01-509-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L547-L547 {#decl-zcor0020f01-547--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_PV — data · unit 로컬 · L548-L548 {#decl-zcor0020f01-548-lv_pv} + +```abap + DATA : LV_PV TYPE P DECIMALS 4. +``` + +#### LT_CSKT — data · unit 로컬 · L551-L554 {#decl-zcor0020f01-551-lt_cskt} + +```abap + DATA : BEGIN OF LT_CSKT OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, + END OF LT_CSKT. +``` + +#### LT_CSKU — data · unit 로컬 · L556-L559 {#decl-zcor0020f01-556-lt_csku} + +```abap + DATA : BEGIN OF LT_CSKU OCCURS 0, + KSTAR LIKE CSKU-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKU. +``` + +#### LS_CSKT — data · unit 로컬 · L561-L561 {#decl-zcor0020f01-561-ls_cskt} + +```abap + DATA : LS_CSKT LIKE LINE OF LT_CSKT. +``` + +#### LS_CSKU — data · unit 로컬 · L562-L562 {#decl-zcor0020f01-562-ls_csku} + +```abap + DATA : LS_CSKU LIKE LINE OF LT_CSKU. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L719-L719 {#decl-zcor0020f01-719-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L720-L720 {#decl-zcor0020f01-720--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L721-L721 {#decl-zcor0020f01-721-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_DIVIDE — data · unit 로컬 · L722-L722 {#decl-zcor0020f01-722-lv_divide} + +```abap + DATA : LV_DIVIDE TYPE I. +``` + +#### LT_AUFK — data · unit 로컬 · L776-L780 {#decl-zcor0020f01-776-lt_aufk} + +```abap + DATA : BEGIN OF LT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + AUART LIKE AUFK-AUART, + KTEXT LIKE AUFK-KTEXT, + END OF LT_AUFK. +``` + +#### LT_RETURN — data · unit 로컬 · L782-L782 {#decl-zcor0020f01-782-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L783-L783 {#decl-zcor0020f01-783-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LR_AUFNR — ranges · unit 로컬 · L803-L803 {#decl-zcor0020f01-803-lr_aufnr} + +```abap + RANGES : LR_AUFNR FOR AUFK-AUFNR. +``` + +#### LS_COSP — data · unit 로컬 · L854-L854 {#decl-zcor0020f01-854-ls_cosp} + +```abap + DATA : LS_COSP LIKE GT_COSP. +``` + +#### LV_S_DATE — data · unit 로컬 · L887-L887 {#decl-zcor0020f01-887-lv_s_date} + +```abap + DATA : LV_S_DATE LIKE SY-DATUM. +``` + +#### LV_E_DATE — data · unit 로컬 · L888-L888 {#decl-zcor0020f01-888-lv_e_date} + +```abap + DATA : LV_E_DATE LIKE SY-DATUM. +``` + +#### LR_WRTTP — ranges · unit 로컬 · L890-L890 {#decl-zcor0020f01-890-lr_wrttp} + +```abap + RANGES : LR_WRTTP FOR COEP-WRTTP. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L891-L891 {#decl-zcor0020f01-891-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_BUDAT — ranges · unit 로컬 · L892-L892 {#decl-zcor0020f01-892-lr_budat} + +```abap + RANGES : LR_BUDAT FOR COBK-BUDAT. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L893-L893 {#decl-zcor0020f01-893-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LR_AUFNR — ranges · unit 로컬 · L894-L894 {#decl-zcor0020f01-894-lr_aufnr} + +```abap + RANGES : LR_AUFNR FOR AUFK-AUFNR. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR0020 L26-31 | 0 | INITIALIZATION 이벤트에서 선택화면 초기 설정 루틴 SET_DYNP를 호출한다. | +| AT SELECTION-SCREEN | EVENT | ZCOR0020 L32-33 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 처리 로직이 없는 빈 이벤트 블록이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR0020 L34-42 | 0 | AT SELECTION-SCREEN OUTPUT에서 화면 필드 제어(LOOP_AT_SCREEN)와 신호등 범례 아이콘 설정(SET_SCREEN_ICON)을 호출하는 PBO 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L43-45 | 0 | 원가요소 범위 하한(S_KSTAR-LOW)의 F4 검색도움으로 F4_KSTAR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L46-48 | 0 | 원가요소 범위 상한(S_KSTAR-HIGH)의 F4 검색도움으로 F4_KSTAR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L49-51 | 0 | 코스트센터 그룹(P_KSSET) 입력 필드의 F4 검색도움으로 F4_GRP(SET CLASS 0101, KOSTL)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L52-54 | 0 | 원가요소 그룹(P_KASET) 입력 필드의 F4 검색도움으로 F4_GRP(SET CLASS 0102, KSTAR)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L55-57 | 0 | 투자오더 범위 하한(S_AUFNR-LOW)의 F4 검색도움으로 F4_AUFNR을 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L58-60 | 0 | 투자오더 범위 상한(S_AUFNR-HIGH)의 F4 검색도움으로 F4_AUFNR을 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0020 L61-70 | 0 | 투자오더 그룹(P_KOSET) 입력 필드의 F4 검색도움으로 F4_GRP(SET CLASS 0103, AUFNR)를 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOR0020 L71-77 | 0 | START-OF-SELECTION에서 초기화(INITIALIZE_DATA)와 데이터 처리(PROCESS_DATA) 서브루틴을 호출하는 진입 이벤트다. | +| END-OF-SELECTION | EVENT | ZCOR0020 L78-89 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR0020C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR0020C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR0020C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR0020C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR0020C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR0020C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR0020C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR0020C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR0020C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR0020C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR0020C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR0020C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR0020C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR0020C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR0020C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR0020C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOR0020C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOR0020C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR0020C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR0020C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR0020C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOR0020C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR0020C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR0020C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR0020C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR0020F01 L6-27 | 0 | 코스트센터/투자오더 라디오버튼에 따라 선택화면 입력 블록(MG2/MG3)을 숨기고 MG1 그룹 필드를 입력 불가로 만드는 LOOP AT SCREEN 화면 제어 루틴이다. | +| SET_SCREEN_ICON | FORM | ZCOR0020F01 L36-45 | 0 | 선택화면에 예산 가용율 신호등 범례(빨강 10% 이하, 노랑 50% 이하, 초록 50% 초과, 소등 통제 없음) 아이콘과 텍스트를 표시하는 화면 꾸밈 루틴이다. | +| SET_DYNP | FORM | ZCOR0020F01 L51-69 | 0 | INITIALIZATION 시 SET_KOKRS_BASE로 관리회계영역 기본정보를 읽어 선택화면에 관리회계영역 명칭(P_BEZEI)을 표시하는 초기 설정 루틴이다(개발계 기본값 설정은 주석 처리됨). | +| INITIALIZE_DATA | FORM | ZCOR0020F01 L75-107 | 1 | 관리회계영역 기본정보와 ALV 필드카탈로그를 준비하고 전역 변수를 초기화한 뒤 입력 검증과 코스트센터/원가요소 또는 투자오더 조회 대상 결정, 예산통제 그룹 마스터 조회를 호출한다. | +| PROCESS_DATA | FORM | ZCOR0020F01 L113-128 | 1 | 코스트센터 모드는 COSP 계획값, 투자오더 모드는 BPEJ 예산을 읽고 COSP 실적을 조회한 뒤 집계·가공·단위환산 서브루틴을 순서대로 호출하는 메인 처리 흐름이다. | +| F4_KSTAR | FORM | ZCOR0020F01 L137-160 | 1 | 관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다. | +| F4_GRP | FORM | ZCOR0020F01 L168-190 | 1 | K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다. | +| DETERMINE_KSTAR | FORM | ZCOR0020F01 L199-260 | 4 | 선택화면의 원가요소 또는 원가요소 그룹(SET CLASS 0102)을 전개해 CSKB/CSKU에서 유효한 원가요소(0050000000~0069999999)를 구하고, 예산통제 대상 옵션이면 ZCOT0010 등록 원가요소만 남겨 조회 범위 GR_KSTAR를 만든다. | +| DETERMINE_KOSTL | FORM | ZCOR0020F01 L269-307 | 2 | 선택화면의 코스트센터 또는 코스트센터 그룹(SET CLASS 0101)을 전개해 ONRKS에서 코스트센터의 OBJNR을 구하고 조회 대상 범위 GR_SELECT_OBJ를 결정한다. | +| CHECK_INPUT | FORM | ZCOR0020F01 L316-351 | 1 | 코스트센터 모드는 코스트센터 그룹/코스트센터 및 원가요소 그룹/원가요소, 투자오더 모드는 오더 그룹/오더가 둘 다 입력되거나 둘 다 비어 있으면 오류 메시지로 실행을 중단하는 선택화면 입력 검증이다. | +| SELECT_COSP | FORM | ZCOR0020F01 L359-435 | 2 | 구분(B: 예산 계획값, A: 실적/약정/임시)에 따라 값유형·버전 범위를 정해 COSP에서 오브젝트·원가요소별 월별 금액을 합산 조회하고 GT_COSP에 구분을 표시한다. | +| COLLECT_DATA | FORM | ZCOR0020F01 L444-498 | 2 | COSP/BPEJ에서 읽은 월별 금액(WKG001~012)을 선택 기간 범위만큼 순회하며 오브젝트·원가요소별로 예산/실적 필드에 배분하고 COLLECT로 GT_DATA에 집계한다. | +| DISTIBUTE_FIELD | FORM | ZCOR0020F01 L507-537 | 1 | GT_COSP 한 행의 월별 금액을 구분(C_TYPE)과 버전/값유형에 따라 GT_DATA의 예산 버전 필드(BG_B00~BG_B20) 또는 실적(ACTUAL)/임시(PARK) 필드에 동적으로 배분한다. | +| EDIT_DATA | FORM | ZCOR0020F01 L546-709 | 7 | 집계된 GT_DATA에 코스트센터/원가요소/오더 명칭을 붙이고 총예산(BG_ALL)·총실적·가용예산·가용율을 계산해 신호등 상태와 예산통제 그룹을 부여한 뒤 금액이 모두 0인 행을 제거한다. | +| CONVERT_CURR | FORM | ZCOR0020F01 L718-749 | 1 | 선택화면의 금액 단위 옵션(원/천원/백만원)에 따라 GT_DATA의 모든 통화(CURR) 필드를 1000 또는 1000000으로 나누어 표시 단위를 환산한다. | +| GET_MASTER_ZCOT0010 | FORM | ZCOR0020F01 L758-767 | 1 | 관리회계영역별 원가요소-예산통제 그룹 매핑 마스터 ZCOT0010을 전체 조회해 GT_ZCOT0010에 담고 원가요소로 정렬한다. | +| F4_AUFNR | FORM | ZCOR0020F01 L775-793 | 1 | 오더유형이 I로 시작하는 투자오더 목록을 AUFK에서 읽어 F4IF_INT_TABLE_VALUE_REQUEST로 오더번호 검색도움을 제공한다. | +| DETERMINE_AUFNR | FORM | ZCOR0020F01 L802-843 | 2 | 선택화면의 투자오더 또는 오더 그룹(SET CLASS 0103)을 전개해 ONROR/AUFK에서 오더유형 I·S로 시작하는 오더의 OBJNR을 구해 조회 대상(GR_SELECT_OBJ)을 결정한다. | +| SELECT_BPEJ | FORM | ZCOR0020F01 L852-878 | 1 | 투자오더의 연간 예산(BPEJ, 값유형 41, 편성/증액/삭감)을 오브젝트별로 합산해 GT_COSP에 예산(C_TYPE B, 버전 B00)으로 추가한다. | +| CALL_REPORT | FORM | ZCOR0020F01 L886-957 | 3 | ALV에서 실적(ACTUAL)/임시(PARK) 금액 셀을 더블클릭했을 때 해당 코스트센터 또는 투자오더의 CO 라인아이템 리포트(RKAEP000, KSB1/KOB1)로 드릴다운한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR0020I01 L6-28 | 0 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 해제하고 프로그램 또는 화면을 빠져나가는 단순 종료 처리 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOR0020O01 L6-11 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR0020O01 L17-60 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR0020O01 L70-114 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR0020O01 L122-127 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOR0020O01 L135-139 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR0020O01 L147-169 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR0020O01 L178-206 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR0020O01 L279-339 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR0020O01 L349-524 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR0020O01 L532-569 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR0030.md b/wiki/programs/ZCOR0030.md new file mode 100644 index 0000000..4f27813 --- /dev/null +++ b/wiki/programs/ZCOR0030.md @@ -0,0 +1,5277 @@ +--- +type: abap-program +title: "ZCOR0030 — 부서별 예산 상세 현황" +description: "코스트센터(부서)·원가요소별로 회계연도·기간의 예산을 버전별 상세 항목(월별 실행예산 B10, 예산조정 추경 B11/전용 B12/이체 B13/환수 B14, 판매운영비 B15, 예산이월 B20)으로 나누어 보여주고, 실적(COSP WRTTP 04)·약정(22)·임시전표(60)와 비교해 가용예산과 가용율을 산출하는 예산 상세 현황 리포트다. 예산통제 그룹(ZCOT0010)을 함께 표시하고 가용율에 따라 신호등 아이콘을 부여하며, 실적/임시 금액 더블클릭 시 KSB1 라인아이템(RKAEP000)으로 드릴다운한다. ZCOR0020(예산 집행 현황)에서 투자오더 기능을 제외하고 예산 버전별 컬럼을 상세화한 변형 프로그램이다." +resource: "abap://ZCOR0030" +tags: ["예산관리", "예산상세현황", "예산조정", "코스트센터", "가용예산", "관리회계", "CO-OM", "기능코드", "화면 종료", "컨테이너 해제", "뒤로가기", "투자오더", "오더 그룹", "그룹 전개", "입력 검증", "오브젝트번호", "오더유형", "조회 대상", "드릴다운", "값유형"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:17+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "AUFK", "COSP", "CSKB", "CSKS", "CSKT", "CSKU", "DD07T", "ONRKS", "ONROR", "T001", "TKA01", "TKT09", "ZCOT0010"] +x-tables-write: ["GT_COSP", "GT_DATA", "GT_KSTAR"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_GROUP_SELECT", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RKAEP000", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "eda390f122be1031d660276b81924f06b829692dd78b9d3e8666ec20592c06c4" +x-unit-count: 150 +x-chunk-count: 76 +x-declaration-count: 220 +--- + +## 업무 목적 + +코스트센터(부서)·원가요소별로 회계연도·기간의 예산을 버전별 상세 항목(월별 실행예산 B10, 예산조정 추경 B11/전용 B12/이체 B13/환수 B14, 판매운영비 B15, 예산이월 B20)으로 나누어 보여주고, 실적(COSP WRTTP 04)·약정(22)·임시전표(60)와 비교해 가용예산과 가용율을 산출하는 예산 상세 현황 리포트다. 예산통제 그룹(ZCOT0010)을 함께 표시하고 가용율에 따라 신호등 아이콘을 부여하며, 실적/임시 금액 더블클릭 시 KSB1 라인아이템(RKAEP000)으로 드릴다운한다. ZCOR0020(예산 집행 현황)에서 투자오더 기능을 제외하고 예산 버전별 컬럼을 상세화한 변형 프로그램이다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트를 설정하고 투자오더 블록(MG3)은 항상 숨기며 예산 Indicator 신호등 범례를 표시한다 (SET_DYNP, LOOP_AT_SCREEN, SET_SCREEN_ICON) +2. 코스트센터/원가요소 그룹 F4는 K_GROUP_SELECT(SET CLASS 0101/0102)로, 원가요소 F4는 CSKB/CSKU 조회로 제공한다 (F4_GRP, F4_KSTAR) +3. 코스트센터 그룹과 코스트센터, 원가요소 그룹과 원가요소가 동시에 입력되었거나 코스트센터 조건이 비어 있으면 오류 처리한다 (INITIALIZE_DATA, CHECK_INPUT) +4. 코스트센터 그룹을 GET_SETLEAF_VALUES로 전개해 ONRKS에서 오브젝트번호를 구하고, 원가요소(CSKB 0050000000~0069999999)를 결정하되 P_CONT이면 ZCOT0010에 등록된 예산통제 원가요소만 남긴다 (DETERMINE_KOSTL, DETERMINE_KSTAR, GET_MASTER_ZCOT0010) +5. COSP에서 예산값(WRTTP 01, 버전 B10~B15, B20)과 실적값(WRTTP 04/22/60, 버전 000, BEKNZ 'A' 제외)을 월별 컬럼 합계로 조회한다 (PROCESS_DATA, SELECT_COSP) +6. 선택 기간(S_PERBL)의 WKG 컬럼을 버전별 예산 컬럼(BG_B10~BG_B20)과 ACTUAL/PARK 컬럼으로 분배해 오브젝트·원가요소 단위로 COLLECT한다 (COLLECT_DATA, DISTIBUTE_FIELD) +7. 코스트센터명(CSKT), 원가요소명(CSKU), 예산통제 그룹(ZCOT0010)을 보완하고 총예산(B10~B15+B20)·집행액(ACTUAL+PARK)·가용예산·가용율·신호등 상태를 계산한다 (EDIT_DATA) +8. 금액 단위(원/천원/백만원)에 따라 CURR 필드를 나누고 화면 100 ALV Grid에 표시하며, 실적/임시 컬럼 더블클릭 시 RKAEP000(KSB1)을 SUBMIT한다 (CONVERT_CURR, END-OF-SELECTION CALL SCREEN 100, CALL_REPORT) + +## 핵심 내부테이블 + +- `GT_ONRKS` — 조회 대상 코스트센터의 오브젝트번호(OBJNR)-코스트센터 매핑 (채움: DETERMINE_KOSTL / 소비: EDIT_DATA) +- `GT_KSTAR` — 조회 대상 원가요소(CSKB/CSKU)와 명칭; GR_KSTAR 범위 생성용 (채움: DETERMINE_KSTAR / 소비: DETERMINE_KSTAR) +- `GT_ZCOT0010` — 원가요소별 예산통제 그룹 매핑 마스터 (채움: GET_MASTER_ZCOT0010 / 소비: EDIT_DATA) +- `GT_COSP` — COSP에서 집계한 월별(WKG001~012) 예산(C_TYPE B)·실적(C_TYPE A) 원본 (채움: SELECT_COSP / 소비: COLLECT_DATA, DISTIBUTE_FIELD) +- `GT_DATA` — ALV 출력용 코스트센터·원가요소별 버전별 예산(BG_B10~BG_B20), 실적, 임시, 총예산, 가용예산, 가용율, 상태 아이콘, 예산통제 그룹 (채움: COLLECT_DATA, EDIT_DATA, CONVERT_CURR / 소비: CALL_REPORT, DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, AUFK, COSP, CSKB, CSKS, CSKT, CSKU, DD07T, ONRKS, ONROR, T001, TKA01, TKT09, ZCOT0010 +- write: GT_COSP, GT_DATA, GT_KSTAR +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_GROUP_SELECT, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (76건 / unit 62개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM F4_KSTAR — `ZCOR0030F01` L114-L137 (24줄) + +*관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다.* + +> 이 unit 의 조각 1개가 13/24줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKB와 CSKU를 조인해 P_KOKRS의 원가요소 50000000~69999999 중 현재 유효한 원가요소와 명칭을 조회하고 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 필드에 F4 목록을 띄운다. + +```abap + 123| SELECT A~KSTAR B~KTEXT + 124| FROM CSKB AS A INNER JOIN CSKU AS B + 125| ON A~KSTAR = B~KSTAR + 126| INTO CORRESPONDING FIELDS OF TABLE LT_CSKA + 127| WHERE A~KOKRS = P_KOKRS + 128| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 129| AND SPRAS = SY-LANGU + 130| AND A~DATBI >= SY-DATUM + 131| AND A~DATAB <= SY-DATUM. + 132| + 133| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 134| TABLES LT_CSKA LT_FIELDTAB LT_RETURN + 135| USING 'KSTAR' P_FIELD. +``` + +- **EN**: Select valid cost elements in range 50000000-69999999 with texts from CSKB joined CSKU for the controlling area and present them as an F4 value list via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: CSKB, CSKU, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 원가요소 검색도움, 원가요소 명칭, 유효기간, F4 +- English: Cost Element, Search Help, F4 Help, Controlling Area +- 정의부(복사 시 함께 필요): [`LT_CSKA`](#decl-zcor0030f01-115-lt_cska), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`LT_FIELDTAB`](#decl-zcor0030f01-121-lt_fieldtab), [`LT_RETURN`](#decl-zcor0030f01-120-lt_return) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L123-L135` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#F4_KSTAR#C1` + +### FORM F4_GRP — `ZCOR0030F01` L145-L167 (23줄) + +*K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 12/23줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터 그룹/0102 원가요소 그룹)·필드명·관리회계영역·계정과목표 GV_KTOPL을 넘겨 K_GROUP_SELECT로 그룹 선택 대화상자를 띄우고 선택된 세트명을 선택화면 파라미터에 반환한다. + +```abap + 154| CALL FUNCTION 'K_GROUP_SELECT' + 155| EXPORTING + 156| CLASS = LV_CLASS + 157| FIELD_NAME = LV_FIELDNAME + 158| KOKRS = P_KOKRS + 159| KTOPL = GV_KTOPL + 160| IMPORTING + 161| SET_NAME = P_DYN_FIELD + 162| SET_TITLE = KMAS_D-SETTXT_KST + 163| EXCEPTIONS + 164| NO_SET_PICKED = 1 + 165| OTHERS = 2. +``` + +- **EN**: Call K_GROUP_SELECT with set class (0101 cost center group / 0102 cost element group), field name, controlling area and chart of accounts to let the user pick a group and return the set name. +- 호출(파서): K_GROUP_SELECT +- SAP 객체: K_GROUP_SELECT, RGSBS +- 업무 키워드: 그룹 선택, 코스트센터 그룹, 원가요소 그룹, 검색도움 +- English: Cost Center Group, Cost Element Group, Set, F4 Help, Chart of Accounts +- 정의부(복사 시 함께 필요): [`LV_CLASS`](#decl-zcor0030f01-148-lv_class), [`LV_FIELDNAME`](#decl-zcor0030f01-147-lv_fieldname), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`KMAS_D`](#decl-zcor0030top-5-kmas_d) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L154-L165` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#F4_GRP#C1` + +### FORM F4_AUFNR — `ZCOR0030F01` L696-L714 (19줄) + +*오더유형이 I로 시작하는 투자오더 목록을 AUFK에서 읽어 F4IF_INT_TABLE_VALUE_REQUEST로 오더번호 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 8/19줄(42%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] AUFK에서 오더유형(AUART)이 I로 시작하는 투자오더의 번호·유형·명칭을 조회해 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 오더 필드(P_FIELD)에 검색도움을 띄운다. + +```abap + 706| SELECT AUFNR AUART KTEXT + 707| INTO CORRESPONDING FIELDS OF TABLE LT_AUFK + 708| FROM AUFK + 709| WHERE AUART LIKE 'I%'. + 710| + 711| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 712| TABLES LT_AUFK LT_FIELDTAB LT_RETURN + 713| USING 'AUFNR' P_FIELD. +``` + +- **EN**: Select investment orders (order type starting with I) from AUFK and show them as an F4 value help for the selection-screen order field via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [AUFK](/tables/AUFK.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: AUFK, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 투자오더 검색도움, 오더유형, F4 +- English: Internal Order, Value Help, Order Type +- 정의부(복사 시 함께 필요): [`LT_AUFK`](#decl-zcor0030f01-697-lt_aufk), [`AUFK`](#decl-zcor0030top-5-aufk), [`LT_FIELDTAB`](#decl-zcor0030f01-704-lt_fieldtab), [`LT_RETURN`](#decl-zcor0030f01-703-lt_return) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L706-L713` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#F4_AUFNR#C1` + +### FORM INITIALIZE_DATA — `ZCOR0030F01` L63-L90 (28줄) + +*관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, 전역변수 초기화 후 입력 검증·코스트센터·원가요소·예산통제 마스터 결정 FORM들을 순서대로 호출하는 초기화 FORM이다.* + +> 이 unit 의 조각 2개가 6/28줄(21%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_KOKRS_BASE로 관리회계영역(P_KOKRS)의 기준정보(계정과목표, 통화, 명칭)를 설정하고 명칭을 P_BEZEI에 표시한다. + +```abap + 69| PERFORM SET_KOKRS_BASE USING P_KOKRS. + 70| P_BEZEI = GV_KOKRS_BEZEI. +``` + +- **EN**: Set controlling-area base data (chart of accounts, currency, description) via SET_KOKRS_BASE and show the description in P_BEZEI. +- 호출(파서): SET_KOKRS_BASE +- SAP 객체: SET_KOKRS_BASE +- 업무 키워드: 관리회계영역, 기준정보 설정 +- English: Controlling Area, Chart of Accounts +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei) +- 선언을 못 찾은 이름: P_BEZEI (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L69-L70` · confidence 0.75 · `ZCOR0030#ZCOR0030F01#FORM#INITIALIZE_DATA#C1` + +#### [control_flow] CHECK_INPUT(입력 검증) → DETERMINE_KOSTL(코스트센터 오브젝트 결정) → DETERMINE_KSTAR(원가요소 결정) → GET_MASTER_ZCOT0010(예산통제 그룹 마스터) 순으로 조회 전제 데이터를 준비한다. + +```abap + 86| PERFORM CHECK_INPUT. + 87| PERFORM DETERMINE_KOSTL. + 88| PERFORM DETERMINE_KSTAR. + 89| PERFORM GET_MASTER_ZCOT0010. +``` + +- **EN**: Run input validation, cost center and cost element determination and load the budget control master ZCOT0010 before data processing. +- 호출(파서): CHECK_INPUT, DETERMINE_KOSTL, DETERMINE_KSTAR, GET_MASTER_ZCOT0010 +- SAP 객체: ZCOT0010 +- 업무 키워드: 입력 검증, 코스트센터 결정, 원가요소 결정, 예산통제 마스터 +- English: Validation, Cost Center, Cost Element, Master Data +- 위치: `abap://ZCOR0030/ZCOR0030F01#L86-L89` · confidence 0.8 · `ZCOR0030#ZCOR0030F01#FORM#INITIALIZE_DATA#C2` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM CHECK_INPUT — `ZCOR0030F01` L293-L313 (21줄) + +*코스트센터 그룹/코스트센터와 원가요소 그룹/원가요소가 동시에 입력되었거나 코스트센터 조건이 비었으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다.* + +> 이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 코스트센터 그룹(P_KSSET)과 코스트센터(S_KOSTL) 중 하나만, 그리고 반드시 하나는 입력되어야 하며 원가요소 그룹(P_KASET)과 원가요소(S_KSTAR)도 동시 입력을 금지하고 위반 시 MESSAGE S000 E 표시 후 LEAVE LIST-PROCESSING 한다. + +```abap + 296| IF P_KSSET IS NOT INITIAL AND S_KOSTL[] IS NOT INITIAL. + 297| MESSAGE S000 DISPLAY LIKE 'E' + 298| WITH '코스트센터 그룹 혹은 코스트센터 필드 하나만 입력하여 주십시오.'(F05). + 299| LEAVE LIST-PROCESSING. + 300| ENDIF. + 301| + 302| IF P_KSSET IS INITIAL AND S_KOSTL[] IS INITIAL. + 303| MESSAGE S000 DISPLAY LIKE 'E' + 304| WITH '코스트센터 그룹 혹은 코스트센터 필드를 입력하여 주십시오.'(F09). + 305| LEAVE LIST-PROCESSING. + 306| ENDIF. + 307| + 308| IF P_KASET IS NOT INITIAL AND S_KSTAR[] IS NOT INITIAL. + 309| MESSAGE S000 DISPLAY LIKE 'E' + 310| WITH '원가요소 그룹 혹은 원가요소 필드 하나만 입력하여 주십시오.'(F06). + 311| LEAVE LIST-PROCESSING. + 312| ENDIF. +``` + +- **EN**: Validate selection input: cost center group and cost center are mutually exclusive but one is mandatory, and cost element group and cost element are mutually exclusive; otherwise show an error and stop. +- 업무 키워드: 입력 검증, 코스트센터 그룹, 원가요소 그룹, 필수 입력, 상호 배타 +- English: Input Validation, Cost Center Group, Cost Element Group, Selection Screen +- 정의부(복사 시 함께 필요): [`P_KSSET`](#decl-zcor0030top-147-p_ksset), [`S_KOSTL`](#decl-zcor0030top-148-s_kostl), [`P_KASET`](#decl-zcor0030top-149-p_kaset), [`S_KSTAR`](#decl-zcor0030top-150-s_kstar) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L296-L312` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#CHECK_INPUT#C1` + +### FORM DETERMINE_KOSTL — `ZCOR0030F01` L246-L284 (39줄) + +*코스트센터 조건(S_KOSTL) 또는 코스트센터 그룹(P_KSSET)을 전개해 ONRKS에서 오브젝트번호를 구하고 COSP 조회 대상 범위 GR_SELECT_OBJ를 만드는 FORM이다.* + +> 이 unit 의 조각 2개가 30/39줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 코스트센터 범위가 직접 입력되면 그대로 쓰고 아니면 코스트센터 그룹(P_KSSET)을 GET_SETLEAF_VALUES(SET CLASS 0101)로 전개해 LR_KOSTL 범위를 만들며, 비어 있으면 오류 메시지 후 종료한다. + +```abap + 252| IF S_KOSTL[] IS NOT INITIAL. + 253| LR_KOSTL[] = S_KOSTL[]. + 254| ELSEIF P_KSSET IS NOT INITIAL. + 255| PERFORM GET_SETLEAF_VALUES USING + 256| P_KSSET '0101'. + 257| MACRO_VALUE_TO_RANGE : LR_KOSTL GT_VALUE_SET. + 258| + 259| IF LR_KOSTL[] IS INITIAL. + 260| MESSAGE S000 DISPLAY LIKE 'E' + 261| WITH '코스트센터 그룹에 데이터가 없습니다.'(F07). + 262| LEAVE LIST-PROCESSING. + 263| ENDIF. + 264| ENDIF. +``` + +- **EN**: Build the cost center range from S_KOSTL or by expanding the cost center group P_KSSET via GET_SETLEAF_VALUES (set class 0101); stop with an error if the group has no data. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, SETLEAF +- 업무 키워드: 코스트센터 그룹, 그룹 전개, 입력 검증 +- English: Cost Center Group, Set Leaf, SETLEAF +- 정의부(복사 시 함께 필요): [`S_KOSTL`](#decl-zcor0030top-148-s_kostl), [`LR_KOSTL`](#decl-zcor0030f01-247-lr_kostl), [`P_KSSET`](#decl-zcor0030top-147-p_ksset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L252-L264` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KOSTL#C1` + +#### [sql_select] ONRKS에서 관리회계영역·코스트센터 범위의 오브젝트번호(OBJNR)를 GT_ONRKS로 조회해 GR_SELECT_OBJ 범위에 추가하고, 대상이 없으면 '조회 코스트센터가 존재하지 않습니다' 오류로 종료한다. + +```abap + 266| SELECT OBJNR KOSTL + 267| FROM ONRKS + 268| INTO CORRESPONDING FIELDS OF TABLE GT_ONRKS + 269| WHERE KOKRS = P_KOKRS + 270| AND KOSTL IN LR_KOSTL. + 271| + 272| SORT GT_ONRKS BY OBJNR. + 273| + 274| " 실 제조회 대상 코스트센터 + 275| LOOP AT GT_ONRKS. + 276| ADD_RANGE_EQ : GR_SELECT_OBJ GT_ONRKS-OBJNR. + 277| ENDLOOP. + 278| + 279| IF GR_SELECT_OBJ[] IS INITIAL. + 280| MESSAGE S000 DISPLAY LIKE 'E' WITH '조회 코스트센터가 존재하지 않습니다.'(F12). + 281| LEAVE LIST-PROCESSING. + 282| ENDIF. +``` + +- **EN**: Read object numbers for the cost centers from ONRKS into GT_ONRKS, add them to the selection range GR_SELECT_OBJ and abort with an error when no cost center is found. +- 테이블(파서): read [ONRKS](/tables/ONRKS.md) / write - +- SAP 객체: ONRKS +- 업무 키워드: 코스트센터, 오브젝트번호, 조회 대상, 존재 검증 +- English: Cost Center, Object Number, ONRKS +- 정의부(복사 시 함께 필요): [`GT_ONRKS`](#decl-zcor0030top-117-gt_onrks), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`LR_KOSTL`](#decl-zcor0030f01-247-lr_kostl), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_SELECT_OBJ`](#decl-zcor0030top-120-gr_select_obj) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L266-L282` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KOSTL#C2` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DETERMINE_KSTAR — `ZCOR0030F01` L176-L237 (62줄) + +*선택화면의 원가요소 또는 원가요소 그룹(SET CLASS 0102)을 전개해 CSKB/CSKU에서 유효한 원가요소(0050000000~0069999999)를 구하고, 예산통제 대상 옵션이면 ZCOT0010 등록 원가요소만 남겨 조회 범위 GR_KSTAR를 만든다.* + +> 이 unit 의 조각 4개가 46/62줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 원가요소(S_KSTAR)가 입력되면 그대로 범위로 쓰고, 원가요소 그룹(P_KASET)이면 GET_SETLEAF_VALUES로 SET CLASS 0102 그룹을 전개해 범위를 만들며 비어 있으면 오류 메시지 후 종료한다. + +```abap + 185| IF S_KSTAR[] IS NOT INITIAL. + 186| LR_KSTAR[] = S_KSTAR[]. + 187| ELSEIF P_KASET IS NOT INITIAL. + 188| PERFORM GET_SETLEAF_VALUES USING + 189| P_KASET '0102'. + 190| MACRO_VALUE_TO_RANGE : LR_KSTAR GT_VALUE_SET. + 191| + 192| IF LR_KSTAR[] IS INITIAL. + 193| MESSAGE S000 DISPLAY LIKE 'E' + 194| WITH '원가요소 그룹에 데이터가 없습니다..'(F08). + 195| LEAVE LIST-PROCESSING. + 196| ENDIF. + 197| ENDIF. +``` + +- **EN**: Use entered cost elements S_KSTAR or expand the cost element group P_KASET (set class 0102) via GET_SETLEAF_VALUES; stop with an error message if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, CSKA +- 업무 키워드: 원가요소 그룹, 그룹 전개, 입력 검증 +- English: Cost Element Group, Set Leaf Values, Set Class 0102 +- 정의부(복사 시 함께 필요): [`S_KSTAR`](#decl-zcor0030top-150-s_kstar), [`LR_KSTAR`](#decl-zcor0030f01-177-lr_kstar), [`P_KASET`](#decl-zcor0030top-149-p_kaset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L185-L197` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KSTAR#C1` + +#### [sql_select] CSKB와 CSKU를 조인해 관리회계영역의 현재 유효한 원가요소 중 0050000000~0069999999 범위(비용 계정)에 속하고 입력 범위에 해당하는 원가요소와 명칭을 GT_KSTAR에 조회한다. + +```abap + 200| SELECT A~KSTAR B~KTEXT + 201| FROM CSKB AS A INNER JOIN CSKU AS B + 202| ON A~KSTAR = B~KSTAR + 203| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 204| WHERE A~KOKRS = P_KOKRS + 205| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 206| AND SPRAS = SY-LANGU + 207| AND A~DATBI >= SY-DATUM + 208| AND A~DATAB <= SY-DATUM + 209| AND A~KSTAR IN LR_KSTAR. + 210| + 211| SORT GT_KSTAR BY KSTAR. +``` + +- **EN**: Select valid cost elements and texts from CSKB joined with CSKU for the controlling area within 0050000000-0069999999 and the input range into GT_KSTAR. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU, GT_KSTAR +- 업무 키워드: 원가요소 마스터, 비용 계정 범위, 유효기간, 원가요소 명칭 +- English: Cost Element Master, CSKB, CSKU, Validity +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcor0030top-112-gt_kstar), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`LR_KSTAR`](#decl-zcor0030f01-177-lr_kstar) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L200-L211` · confidence 0.95 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KSTAR#C2` + +#### [validation] 예산통제 대상만 조회 옵션(P_CONT)이면 ZCOT0010(예산통제 그룹 마스터)을 읽어 등록되지 않은 원가요소를 GT_KSTAR에서 삭제한다. + +```abap + 214| IF P_CONT = 'X'. + 215| SELECT * FROM ZCOT0010 + 216| INTO CORRESPONDING FIELDS OF TABLE LT_ZCOT0010 + 217| WHERE KOKRS = P_KOKRS. + 218| + 219| SORT LT_ZCOT0010 BY KSTAR. + 220| + 221| LOOP AT GT_KSTAR. + 222| + 223| READ TABLE LT_ZCOT0010 WITH KEY + 224| KSTAR = GT_KSTAR-KSTAR BINARY SEARCH. + 225| + 226| IF SY-SUBRC NE 0. + 227| DELETE GT_KSTAR. + 228| ENDIF. + 229| + 230| ENDLOOP. + 231| ENDIF. +``` + +- **EN**: When only budget-controlled cost elements are requested (P_CONT), read ZCOT0010 and delete cost elements from GT_KSTAR that are not registered there. +- 테이블(파서): read [ZCOT0010](/tables/ZCOT0010.md) / write [GT_KSTAR](/tables/GT_KSTAR.md) +- SAP 객체: ZCOT0010, GT_KSTAR +- 업무 키워드: 예산통제 대상, 원가요소 필터, 예산통제 그룹 +- English: Budget Control, Cost Element Filter, ZCOT0010 +- 정의부(복사 시 함께 필요): [`P_CONT`](#decl-zcor0030top-154-p_cont), [`LT_ZCOT0010`](#decl-zcor0030f01-178-lt_zcot0010), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`GT_KSTAR`](#decl-zcor0030top-112-gt_kstar) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L214-L231` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KSTAR#C3` + +#### [other] 최종 조회 대상 원가요소를 COSP 조회용 범위 GR_KSTAR에 EQ 조건으로 추가한다. + +```abap + 234| LOOP AT GT_KSTAR. + 235| ADD_RANGE_EQ : GR_KSTAR GT_KSTAR-KSTAR. + 236| ENDLOOP. +``` + +- **EN**: Add each remaining cost element to the GR_KSTAR range used for the COSP selection. +- SAP 객체: GT_KSTAR +- 업무 키워드: 원가요소 범위, 조회 조건 +- English: Cost Element Range, Select-Option +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcor0030top-112-gt_kstar), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KSTAR`](#decl-zcor0030top-110-gr_kstar) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L234-L236` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_KSTAR#C4` + +### FORM GET_MASTER_ZCOT0010 — `ZCOR0030F01` L679-L688 (10줄) + +*관리회계영역별 원가요소-예산통제 그룹 매핑 마스터 ZCOT0010을 전체 조회해 GT_ZCOT0010에 담고 원가요소로 정렬한다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 예산통제 그룹 마스터 ZCOT0010을 관리회계영역(P_KOKRS) 기준으로 조회해 GT_ZCOT0010에 담고 KSTAR로 정렬한다(이후 BINARY SEARCH용). + +```abap + 683| SELECT * FROM ZCOT0010 + 684| INTO CORRESPONDING FIELDS OF TABLE GT_ZCOT0010 + 685| WHERE KOKRS = P_KOKRS. + 686| + 687| SORT GT_ZCOT0010 BY KSTAR. +``` + +- **EN**: Read the budget control group master ZCOT0010 for the controlling area into GT_ZCOT0010 and sort by cost element for binary search. +- 테이블(파서): read [ZCOT0010](/tables/ZCOT0010.md) / write - +- SAP 객체: ZCOT0010 +- 업무 키워드: 예산통제 그룹, 원가요소 마스터, 관리회계영역 +- English: Budget Control Group, Cost Element, Custom Table +- 정의부(복사 시 함께 필요): [`GT_ZCOT0010`](#decl-zcor0030top-122-gt_zcot0010), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L683-L687` · confidence 0.95 · `ZCOR0030#ZCOR0030F01#FORM#GET_MASTER_ZCOT0010#C1` + +### FORM PROCESS_DATA — `ZCOR0030F01` L96-L105 (10줄) + +*예산(B)·실적(A) COSP 조회, 기간 집계, 명칭·가용예산 가공, 금액 단위 환산을 순서대로 호출하는 데이터 처리 메인 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SELECT_COSP(예산/실적) → COLLECT_DATA(기간 집계) → EDIT_DATA(명칭·가용예산 계산) → CONVERT_CURR(단위 환산) 순으로 예산 상세 현황 데이터를 만든다. + +```abap + 100| PERFORM SELECT_COSP USING 'B'. " 계획 + 101| PERFORM SELECT_COSP USING 'A'. " 실적 + 102| PERFORM COLLECT_DATA. + 103| PERFORM EDIT_DATA. + 104| PERFORM CONVERT_CURR. +``` + +- **EN**: Orchestrate SELECT_COSP for budget and actual, COLLECT_DATA, EDIT_DATA and CONVERT_CURR to build the budget detail data. +- 호출(파서): SELECT_COSP, SELECT_COSP, COLLECT_DATA, EDIT_DATA, CONVERT_CURR +- SAP 객체: COSP +- 업무 키워드: 예산 조회, 실적 조회, 데이터 가공, 처리 흐름 +- English: COSP, Budget, Actual, Process Flow +- 위치: `abap://ZCOR0030/ZCOR0030F01#L100-L104` · confidence 0.8 · `ZCOR0030#ZCOR0030F01#FORM#PROCESS_DATA#C1` + +### FORM SELECT_COSP — `ZCOR0030F01` L321-L397 (77줄) + +*구분(B: 예산 WRTTP 01·버전 B10~B15/B20, A: 실적 WRTTP 04/22/60·버전 000)에 따라 COSP에서 월별 금액을 오브젝트·원가요소별로 SUM 집계해 GT_COSP에 추가하는 FORM이다.* + +> 이 unit 의 조각 2개가 66/77줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 예산 조회(B)면 값유형 01과 예산 버전 B10~B15,B20 범위를, 실적 조회(A)면 값유형 04(실제)/22(약정)/60(임시)와 버전 000 범위를 구성한다. + +```abap + 330| IF P_FLAG = 'B'. + 331| " 1 : 계획값 + 332| ADD_RANGE_EQ : LR_WRTTP '01'. + 333| + 334| * IF P_B00 = 'X'. + 335| * ADD_RANGE_EQ : LR_VERSN 'B00'. + 336| * ELSEIF P_B10 = 'X'. + 337| * ADD_RANGE_EQ : LR_VERSN 'B10'. + 338| * IF P_B1X = 'X'. + 339| ADD_RANGE_EQ : LR_VERSN 'B10'. + 340| ADD_RANGE_EQ : LR_VERSN 'B11'. + 341| ADD_RANGE_EQ : LR_VERSN 'B12'. + 342| ADD_RANGE_EQ : LR_VERSN 'B13'. + 343| ADD_RANGE_EQ : LR_VERSN 'B14'. + 344| ADD_RANGE_EQ : LR_VERSN 'B15'. " 판매운영비 추가 2013-09-30 + 345| ADD_RANGE_EQ : LR_VERSN 'B20'. + 346| * ENDIF. + 347| ELSEIF P_FLAG = 'A'. + 348| * 실제, 약정, 임시 + 349| ADD_RANGE_EQ : LR_WRTTP '04'. " 실제 + 350| ADD_RANGE_EQ : LR_WRTTP '22'. " 약정 + 351| ADD_RANGE_EQ : LR_WRTTP '60'. " 임시 + 352| + 353| * " 2. 버전 -000 + 354| ADD_RANGE_EQ : LR_VERSN '000'. + 355| ENDIF. +``` + +- **EN**: Build value type and version ranges: WRTTP 01 with budget versions B10-B15/B20 for budget, WRTTP 04/22/60 with version 000 for actual/commitment/parked. +- SAP 객체: COSP +- 업무 키워드: 예산 버전, 값유형, 실적, 약정, 임시전표, 실행예산, 예산이월 +- English: Value Type, Version, Budget, Commitment, Parked Document +- 정의부(복사 시 함께 필요): [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcor0030f01-323-lr_wrttp), [`LR_VERSN`](#decl-zcor0030f01-324-lr_versn) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L330-L355` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#SELECT_COSP#C1` + +#### [sql_select] COSP(LEDNR 00)에서 조회 대상 오브젝트(GR_SELECT_OBJ)·연도·값유형·버전·원가요소 조건으로 WKG001~012 월별 금액을 GROUP BY로 합산해 GT_COSP에 APPENDING하고, 실적이면 차대구분 'A'(대변) 행을 제거한 뒤 C_TYPE 구분값을 세팅한다. + +```abap + 357| SELECT + 358| OBJNR + 359| GJAHR + 360| KSTAR + 361| BEKNZ + 362| TWAER + 363| VERSN + 364| WRTTP + 365| SUM( WKG001 ) AS WKG001 + 366| SUM( WKG002 ) AS WKG002 + 367| SUM( WKG003 ) AS WKG003 + 368| SUM( WKG004 ) AS WKG004 + 369| SUM( WKG005 ) AS WKG005 + 370| SUM( WKG006 ) AS WKG006 + 371| SUM( WKG007 ) AS WKG007 + 372| SUM( WKG008 ) AS WKG008 + 373| SUM( WKG009 ) AS WKG009 + 374| SUM( WKG010 ) AS WKG010 + 375| SUM( WKG011 ) AS WKG011 + 376| SUM( WKG012 ) AS WKG012 + 377| FROM COSP + 378| APPENDING CORRESPONDING FIELDS OF TABLE GT_COSP + 379| WHERE LEDNR = '00' + 380| AND OBJNR IN GR_SELECT_OBJ + 381| AND GJAHR = P_GJAHR + 382| AND WRTTP IN LR_WRTTP + 383| AND VERSN IN LR_VERSN + 384| AND KSTAR IN GR_KSTAR + 385| GROUP BY OBJNR GJAHR KSTAR BEKNZ TWAER VERSN + 386| WRTTP. + 387| + 388| IF GT_COSP[] IS NOT INITIAL. " 구분 설정. + 389| IF P_FLAG = 'A'. " 실제 + 390| DELETE GT_COSP WHERE BEKNZ = 'A'. + 391| ENDIF. + 392| + 393| LS_COSP-C_TYPE = P_FLAG. + 394| MODIFY GT_COSP FROM LS_COSP TRANSPORTING C_TYPE + 395| WHERE C_TYPE IS INITIAL. + 396| ENDIF. +``` + +- **EN**: Select monthly totals WKG001-012 from COSP (ledger 00) for the selected objects, year, value types, versions and cost elements grouped by object/cost element/version/value type; for actuals delete BEKNZ 'A' rows and stamp C_TYPE. +- 테이블(파서): read [COSP](/tables/COSP.md) / write [GT_COSP](/tables/GT_COSP.md) +- SAP 객체: COSP +- 업무 키워드: 예산 조회, 실적 조회, 월별 합계, 코스트센터 원가, 차대구분 +- English: COSP, Cost Totals, Debit/Credit Indicator, Fiscal Year +- 정의부(복사 시 함께 필요): [`COSP`](#decl-zcor0030top-5-cosp), [`GT_COSP`](#decl-zcor0030top-85-gt_cosp), [`GR_SELECT_OBJ`](#decl-zcor0030top-120-gr_select_obj), [`P_GJAHR`](#decl-zcor0030top-138-p_gjahr), [`LR_WRTTP`](#decl-zcor0030f01-323-lr_wrttp), [`LR_VERSN`](#decl-zcor0030f01-324-lr_versn), [`GR_KSTAR`](#decl-zcor0030top-110-gr_kstar), [`LS_COSP`](#decl-zcor0030f01-325-ls_cosp) +- 선언을 못 찾은 이름: C_TYPE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L357-L396` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#SELECT_COSP#C2` + +### FORM COLLECT_DATA — `ZCOR0030F01` L406-L453 (48줄) + +*COSP 원본(GT_COSP)의 월별 금액(WKG001~012)을 선택 기간(S_PERBL) 범위만큼 순회해 오브젝트·원가요소별로 GT_DATA에 COLLECT 집계하는 FORM이다.* + +> 이 unit 의 조각 1개가 32/48줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 선택 기간 시작~종료 월 수만큼 GT_COSP-WKGnnn 필드를 동적 ASSIGN하고 DISTIBUTE_FIELD로 예산/실적 컬럼에 배분한 뒤 OBJNR·KSTAR·통화 키로 GT_DATA에 COLLECT해 기간 합계를 만든다. + +```abap + 420| LV_START = S_PERBL-LOW. + 421| IF S_PERBL-HIGH IS INITIAL. + 422| LV_END = LV_START. + 423| ELSE. + 424| LV_END = S_PERBL-HIGH. + 425| ENDIF. + 426| + 427| LV_DOCNT = LV_END - LV_START + 1. + 428| + 429| LOOP AT GT_COSP. + 430| LV_NC = LV_START. + 431| DO LV_DOCNT TIMES. + 432| CONCATENATE 'GT_COSP-WKG' LV_NC + 433| INTO LV_FIELD. + 434| + 435| ASSIGN (LV_FIELD) TO . + 436| + 437| IF SY-SUBRC EQ 0. + 438| + 439| GT_DATA-OBJNR = GT_COSP-OBJNR. + 440| GT_DATA-KSTAR = GT_COSP-KSTAR. + 441| GT_DATA-TWAER = GV_WAERS. + 442| + 443| PERFORM DISTIBUTE_FIELD USING . + 444| COLLECT GT_DATA. CLEAR : GT_DATA. + 445| ENDIF. + 446| + 447| LV_NC = LV_NC + 1. + 448| CLEAR : LV_FIELD. + 449| ENDDO. + 450| CLEAR : LV_NC. + 451| ENDLOOP. +``` + +- **EN**: Loop over GT_COSP and the selected period range, dynamically read WKG001-012 monthly values, distribute them into budget/actual columns via DISTIBUTE_FIELD and COLLECT into GT_DATA by object, cost element and currency. +- 호출(파서): DISTIBUTE_FIELD +- SAP 객체: COSP, DISTIBUTE_FIELD +- 업무 키워드: 기간별 집계, 월별 금액, 예산 집계, 실적 집계, COLLECT +- English: Period Aggregation, COSP, Fiscal Period, COLLECT +- 정의부(복사 시 함께 필요): [`LV_START`](#decl-zcor0030f01-407-lv_start), [`S_PERBL`](#decl-zcor0030top-140-s_perbl), [`LV_END`](#decl-zcor0030f01-408-lv_end), [`LV_DOCNT`](#decl-zcor0030f01-409-lv_docnt), [`GT_COSP`](#decl-zcor0030top-85-gt_cosp), [`LV_NC`](#decl-zcor0030f01-412-lv_nc), [`LV_FIELD`](#decl-zcor0030f01-411-lv_field), [``](#decl-zcor0030f01-410--fs_field-), [`GT_DATA`](#decl-zcor0030top-40-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L420-L451` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#COLLECT_DATA#C1` + +### FORM DISTIBUTE_FIELD — `ZCOR0030F01` L462-L492 (31줄) + +*GT_COSP 한 행의 월별 금액을 구분(C_TYPE)과 버전/값유형에 따라 GT_DATA의 예산 버전 필드(BG_B00~BG_B20) 또는 실적(ACTUAL)/임시(PARK) 필드에 동적으로 배분한다.* + +> 이 unit 의 조각 1개가 25/31줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 예산(C_TYPE B)이면 버전명으로 GT_DATA-BG_+VERSN 필드를 동적 ASSIGN해 금액을 넣고, 실적(C_TYPE A)이면 값유형 WRTTP 04는 ACTUAL, 22/60(약정·임시)은 PARK 필드에 금액을 배분한다. + +```abap + 466| IF GT_COSP-C_TYPE = 'B'. + 467| CLEAR : LV_FIELD. + 468| + 469| CONCATENATE 'GT_DATA-BG_' GT_COSP-VERSN + 470| INTO LV_FIELD. + 471| + 472| ASSIGN (LV_FIELD) TO . + 473| + 474| IF SY-SUBRC EQ 0. + 475| = P_VALUE. + 476| ENDIF. + 477| ELSEIF GT_COSP-C_TYPE = 'A'. + 478| CASE GT_COSP-WRTTP. + 479| WHEN '04'. + 480| LV_FIELD = 'GT_DATA-ACTUAL'. + 481| WHEN '22' OR '60'. + 482| LV_FIELD = 'GT_DATA-PARK'. + 483| ENDCASE. + 484| + 485| ASSIGN (LV_FIELD) TO . + 486| + 487| IF SY-SUBRC EQ 0. + 488| = P_VALUE. + 489| ENDIF. + 490| ENDIF. +``` + +- **EN**: For budget rows (C_TYPE B) assign the amount to the GT_DATA-BG_ field dynamically; for actual rows (C_TYPE A) route value type 04 to ACTUAL and 22/60 (commitment/parked) to PARK. +- SAP 객체: GT_COSP, GT_DATA, COSP-WRTTP, COSP-VERSN +- 업무 키워드: 예산 버전 배분, 실적, 약정, 임시전표, 값유형, 동적 필드 +- English: Budget Version, Actual, Commitment, Parked, Value Type, Dynamic Assign +- 정의부(복사 시 함께 필요): [`GT_COSP`](#decl-zcor0030top-85-gt_cosp), [`LV_FIELD`](#decl-zcor0030f01-464-lv_field), [``](#decl-zcor0030f01-463--fs_field-) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L466-L490` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#DISTIBUTE_FIELD#C1` + +### FORM EDIT_DATA — `ZCOR0030F01` L501-L630 (130줄) + +*집계된 GT_DATA에 코스트센터·원가요소 명칭을 붙이고 총예산·집행액·가용예산·가용율·신호등 상태·예산통제 그룹을 계산해 ALV 출력용으로 가공하는 FORM이다.* + +> 이 unit 의 조각 2개가 100/130줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT/CSKS 조인으로 관리회계영역의 유효한 코스트센터 명칭(LT_CSKT)을, CSKU에서 GT_DATA의 원가요소 명칭(LT_CSKU)을 FOR ALL ENTRIES로 조회해 정렬한다. + +```abap + 525| SELECT B~KOSTL A~KTEXT + 526| FROM CSKT AS A INNER JOIN CSKS AS B + 527| ON A~KOSTL = B~KOSTL + 528| INTO CORRESPONDING FIELDS OF TABLE LT_CSKT + 529| WHERE A~KOKRS = P_KOKRS + 530| AND B~DATBI >= SY-DATUM + 531| AND B~DATAB <= SY-DATUM + 532| AND A~SPRAS = SY-LANGU + 533| AND A~DATBI >= SY-DATUM. + 534| + 535| SORT LT_CSKT BY KOSTL. + 536| + 537| "2. 원가요소 정보 + 538| SELECT KSTAR KTEXT + 539| FROM CSKU + 540| INTO CORRESPONDING FIELDS OF TABLE LT_CSKU + 541| FOR ALL ENTRIES IN GT_DATA + 542| WHERE KTOPL = GV_KTOPL + 543| AND KSTAR = GT_DATA-KSTAR + 544| AND SPRAS = SY-LANGU. + 545| + 546| SORT LT_CSKU BY KSTAR. +``` + +- **EN**: Read valid cost center texts from CSKT joined with CSKS and cost element texts from CSKU (FOR ALL ENTRIES on GT_DATA) for the ALV output. +- 테이블(파서): read [CSKT](/tables/CSKT.md), [CSKS](/tables/CSKS.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKT, CSKS, CSKU +- 업무 키워드: 코스트센터 명칭, 원가요소 명칭, 마스터 텍스트 조회 +- English: Cost Center Text, Cost Element Text, CSKT, CSKU +- 정의부(복사 시 함께 필요): [`CSKS`](#decl-zcor0030top-4-csks), [`LT_CSKT`](#decl-zcor0030f01-506-lt_cskt), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`LT_CSKU`](#decl-zcor0030f01-511-lt_csku), [`GT_DATA`](#decl-zcor0030top-40-gt_data), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L525-L546` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#EDIT_DATA#C1` + +#### [calculation] GT_DATA 각 행에 대해 OBJNR→코스트센터 매핑과 명칭을 채우고, 버전별 예산(B10~B15,B20) 합계 BG_ALL, 실적+임시 TOTAL_A, 가용예산 POSSIBLE_BG와 가용율 PER을 계산해 가용율 구간(0/≤10/≤50/>50)별 신호등 STATUS와 ZCOT0010 예산통제 그룹명을 부여한다. + +```abap + 548| LOOP AT GT_DATA ASSIGNING . + 549| + 550| READ TABLE GT_ONRKS WITH KEY OBJNR = -OBJNR + 551| BINARY SEARCH. + 552| + 553| IF SY-SUBRC EQ 0. + 554| -KOSTL = GT_ONRKS-KOSTL. + 555| ENDIF. + 556| + 557| READ TABLE LT_CSKT INTO LS_CSKT + 558| WITH KEY KOSTL = -KOSTL BINARY SEARCH. + 559| + 560| IF SY-SUBRC EQ 0. + 561| -KOSTL_T = LS_CSKT-KTEXT. + 562| ENDIF. + 563| + 564| READ TABLE LT_CSKU INTO LS_CSKU + 565| WITH KEY KSTAR = -KSTAR BINARY SEARCH. + 566| + 567| IF SY-SUBRC EQ 0. + 568| -KSTAR_T = LS_CSKU-KTEXT. + 569| ENDIF. + 570| + 571| * IF P_B00 NE 'X'. + 572| -BG_ALL = + 573| -BG_B10 + + 574| -BG_B11 + + 575| -BG_B12 + + 576| -BG_B13 + + 577| -BG_B14 + + 578| -BG_B15 + + 579| -BG_B20. + 580| * ELSE. + 581| * -BG_ALL = -BG_B00. + 582| * ENDIF. + 583| + 584| -TOTAL_A = -ACTUAL + 585| + -PARK. + 586| + 587| -POSSIBLE_BG = + 588| -BG_ALL - + 589| -TOTAL_A. + 590| * + 591| IF -POSSIBLE_BG <= 0 OR + 592| -BG_ALL = 0. + 593| -POSSIBLE_BG = 0. + 594| ENDIF. + 595| + 596| IF -BG_ALL NE 0. + 597| LV_PV = -POSSIBLE_BG / + 598| -BG_ALL. + 599| LV_PV = LV_PV * 100. + 600| ENDIF. + 601| + 602| IF LV_PV = 0. + 603| -STATUS = GC_STATUS_INIT. + 604| ELSEIF LV_PV <= 10. + 605| -STATUS = GC_STATUS_RED. + 606| ELSEIF LV_PV <= 50. + 607| -STATUS = GC_STATUS_YELLOW. + 608| ELSEIF LV_PV > 50. + 609| -STATUS = GC_STATUS_GREEN. + 610| ENDIF. + 611| + 612| -PER = LV_PV. + 613| + 614| READ TABLE GT_ZCOT0010 WITH KEY + 615| KOKRS = P_KOKRS + 616| KSTAR = -KSTAR + 617| BINARY SEARCH. + 618| + 619| IF SY-SUBRC EQ 0. + 620| -GROUPNAME = GT_ZCOT0010-GROUPNAME. + 621| -GRP_DESCRIPT = GT_ZCOT0010-GRP_DESCRIPT. + 622| ENDIF. + 623| + 624| CLEAR : GT_ONRKS, LV_PV, GT_ZCOT0010, GT_ONROR. + 625| ENDLOOP. +``` + +- **EN**: For each GT_DATA row map OBJNR to cost center, fill texts, sum budget versions B10-B20 into BG_ALL, compute actual+parked, available budget and availability %, set the traffic-light status and the budget control group from ZCOT0010. +- SAP 객체: ZCOT0010, CSKT, CSKU +- 업무 키워드: 총예산, 가용예산, 가용율, 신호등, 예산통제 그룹, 실적, 임시전표 +- English: Available Budget, Budget Version, Traffic Light, Actual, Parked Document +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0030top-40-gt_data), [``](#decl-zcor0030f01-502--fs_data-), [`GT_ONRKS`](#decl-zcor0030top-117-gt_onrks), [`LT_CSKT`](#decl-zcor0030f01-506-lt_cskt), [`LS_CSKT`](#decl-zcor0030f01-516-ls_cskt), [`LT_CSKU`](#decl-zcor0030f01-511-lt_csku), [`LS_CSKU`](#decl-zcor0030f01-517-ls_csku), [`LV_PV`](#decl-zcor0030f01-503-lv_pv), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_YELLOW`](#decl-zco_alv-129-gc_status_yellow), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green) 외 3건 +- 위치: `abap://ZCOR0030/ZCOR0030F01#L548-L625` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#EDIT_DATA#C2` + +### FORM CONVERT_CURR — `ZCOR0030F01` L639-L670 (32줄) + +*선택화면의 금액 단위 옵션(원/천원/백만원)에 따라 GT_DATA의 모든 통화(CURR) 필드를 1000 또는 1000000으로 나누어 표시 단위를 환산한다.* + +> 이 unit 의 조각 1개가 25/32줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 원 단위(P_WON1)가 아니면 천원(P_WON2)은 1000, 백만원(P_WON3)은 1000000을 나눗수로 정해 ALV 필드카탈로그(GT_MAIN_FIELDCAT)의 DATATYPE CURR 필드를 동적 ASSIGN으로 찾아 GT_DATA 금액을 단위 환산한다. + +```abap + 645| CHECK P_WON1 NE 'X'. + 646| + 647| IF P_WON2 = 'X'. + 648| LV_DIVIDE = 1000. + 649| ELSEIF P_WON3 = 'X'. + 650| LV_DIVIDE = 1000000. + 651| ENDIF. + 652| + 653| LOOP AT GT_DATA. + 654| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 655| WHERE DATATYPE = 'CURR'. + 656| + 657| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME + 658| INTO LV_FIELD. + 659| + 660| ASSIGN (LV_FIELD) TO . + 661| + 662| IF SY-SUBRC EQ 0 AND NE 0. + 663| = / LV_DIVIDE. + 664| ENDIF. + 665| CLEAR : LV_FIELD. + 666| ENDLOOP. + 667| + 668| MODIFY GT_DATA. CLEAR: GT_DATA. + 669| ENDLOOP. +``` + +- **EN**: Unless the amount unit is KRW (P_WON1), set divisor 1000 (thousand) or 1000000 (million) and divide every CURR-type field of GT_DATA found via the ALV field catalog with dynamic ASSIGN. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: GT_DATA, GT_MAIN_FIELDCAT, LVC_S_FCAT +- 업무 키워드: 금액 단위 환산, 천원, 백만원, 통화 필드, 동적 필드 할당 +- English: Amount Unit Conversion, Currency Field, Field Catalog, Dynamic Assign +- 정의부(복사 시 함께 필요): [`P_WON1`](#decl-zcor0030top-166-p_won1), [`P_WON2`](#decl-zcor0030top-168-p_won2), [`LV_DIVIDE`](#decl-zcor0030f01-643-lv_divide), [`P_WON3`](#decl-zcor0030top-170-p_won3), [`GT_DATA`](#decl-zcor0030top-40-gt_data), [`GT_MAIN_FIELDCAT`](#decl-zcor0030top-36-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcor0030f01-640-ls_fieldcat), [`LV_FIELD`](#decl-zcor0030f01-642-lv_field), [``](#decl-zcor0030f01-641--fs-) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L645-L669` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#CONVERT_CURR#C1` + +### EVENT END-OF-SELECTION — `ZCOR0030` L78-L89 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 79| IF SY-BATCH NE 'X'. + 80| IF GT_DATA[] IS NOT INITIAL. + 81| CALL SCREEN 100. + 82| ELSE. + 83| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 84| ENDIF. + 85| ELSE. + 86| IF GT_DATA[] IS NOT INITIAL. + 87| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 88| ENDIF. + 89| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0030top-40-gt_data) +- 위치: `abap://ZCOR0030/ZCOR0030#L79-L89` · confidence 0.85 · `ZCOR0030#ZCOR0030#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR0030/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR0030/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR0030/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR0030/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR0030/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR0030#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR0030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR0030/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR0030#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM CALL_REPORT — `ZCOR0030F01` L767-L824 (58줄) + +*ALV에서 실적(ACTUAL)/임시(PARK) 금액을 더블클릭하면 해당 코스트센터·원가요소·기간 조건으로 KSB1 라인아이템 리포트(RKAEP000)를 호출하는 드릴다운 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 클릭한 행(GT_DATA)과 컬럼(ACTUAL→WRTTP 04/11, PARK→60)에 따라 값유형·코스트센터·원가요소 범위를 만들고 회계연도·기간을 전기일자 범위(월초~GET_LAST_DAY 월말)로 변환한다. + +```abap + 779| CHECK P_ROW CO '0123456789 '. + 780| + 781| IF NOT ( P_COLUMN = 'ACTUAL' OR P_COLUMN = 'PARK' ). + 782| EXIT. + 783| ENDIF. + 784| READ TABLE GT_DATA INDEX P_ROW. + 785| + 786| CHECK SY-SUBRC EQ 0. + 787| + 788| SET PARAMETER ID 'CAC' FIELD P_KOKRS. + 789| + 790| IF P_COLUMN = 'ACTUAL'. + 791| ADD_RANGE_EQ : LR_WRTTP '04'. + 792| ADD_RANGE_EQ : LR_WRTTP '11'. + 793| ELSEIF P_COLUMN = 'PARK'. + 794| ADD_RANGE_EQ : LR_WRTTP '60'. + 795| ENDIF. + 796| + 797| ADD_RANGE_EQ : LR_KOSTL GT_DATA-KOSTL. + 798| ADD_RANGE_EQ : LR_KSTAR GT_DATA-KSTAR. + 799| CONCATENATE P_GJAHR S_PERBL-LOW+1(2) '01' INTO LV_S_DATE. + 800| + 801| IF S_PERBL-HIGH IS NOT INITIAL. + 802| CONCATENATE P_GJAHR S_PERBL-HIGH+1(2) '01' INTO LV_E_DATE. + 803| ELSE. + 804| LV_E_DATE = LV_S_DATE. + 805| ENDIF. + 806| + 807| PERFORM GET_LAST_DAY USING LV_E_DATE + 808| CHANGING LV_E_DATE. + 809| + 810| LR_BUDAT-LOW = LV_S_DATE. + 811| LR_BUDAT-HIGH = LV_E_DATE. + 812| LR_BUDAT-SIGN = 'I'. + 813| LR_BUDAT-OPTION = 'BT'. + 814| APPEND LR_BUDAT. +``` + +- **EN**: Derive value type (04/11 for actual, 60 for parked), cost center, cost element and posting date ranges (fiscal year/period converted to first/last day) from the clicked ALV row. +- 호출(파서): GET_LAST_DAY +- SAP 객체: GET_LAST_DAY, COEP, COBK +- 업무 키워드: 드릴다운, 값유형, 전기일자 범위, 기간 변환, 코스트센터 +- English: Value Type, Posting Date, Cost Center, Cost Element, Period +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor0030top-40-gt_data), [`P_KOKRS`](#decl-zcor0030top-132-p_kokrs), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcor0030f01-773-lr_wrttp), [`LR_KOSTL`](#decl-zcor0030f01-774-lr_kostl), [`LR_KSTAR`](#decl-zcor0030f01-776-lr_kstar), [`P_GJAHR`](#decl-zcor0030top-138-p_gjahr), [`S_PERBL`](#decl-zcor0030top-140-s_perbl), [`LV_S_DATE`](#decl-zcor0030f01-770-lv_s_date), [`LV_E_DATE`](#decl-zcor0030f01-771-lv_e_date), [`LR_BUDAT`](#decl-zcor0030f01-775-lr_budat) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L779-L814` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#CALL_REPORT#C1` + +#### [interface] 준비한 선택조건으로 KSB1 실제 라인아이템 리포트 RKAEP000을 SUBMIT AND RETURN으로 호출해 코스트센터 원가 라인아이템을 조회한다. + +```abap + 816| SUBMIT RKAEP000 WITH KOTSL IN LR_KOSTL + 817| WITH R_BUDAT IN LR_BUDAT + 818| WITH P_TCODE EQ 'KSB1' + 819| WITH KSTAR IN LR_KSTAR + 820| WITH KOSTL IN LR_KOSTL + 821| WITH GR_WRTTP IN LR_WRTTP + 822| AND RETURN. +``` + +- **EN**: Submit the cost center line item report RKAEP000 (transaction KSB1) with the prepared ranges and return. +- 호출(파서): RKAEP000 +- SAP 객체: RKAEP000, KSB1 +- 업무 키워드: 라인아이템 조회, 드릴다운, 실적 상세, 코스트센터 +- English: Line Item Report, KSB1, SUBMIT AND RETURN +- 정의부(복사 시 함께 필요): [`LR_KOSTL`](#decl-zcor0030f01-774-lr_kostl), [`LR_BUDAT`](#decl-zcor0030f01-775-lr_budat), [`LR_KSTAR`](#decl-zcor0030f01-776-lr_kstar), [`LR_WRTTP`](#decl-zcor0030f01-773-lr_wrttp) +- 선언을 못 찾은 이름: R_BUDAT, P_TCODE, GR_WRTTP (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L816-L822` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#CALL_REPORT#C2` + +### FORM DETERMINE_AUFNR — `ZCOR0030F01` L723-L758 (36줄) + +*투자오더 조건(S_AUFNR) 또는 투자오더 그룹(P_KOSET)을 전개해 ONROR/AUFK에서 오브젝트번호를 구하고 조회 대상 오브젝트 범위(GR_SELECT_OBJ)에 추가하는 FORM이다(ZCOR0030에서는 투자오더 블록이 숨겨져 실제로는 사용되지 않음).* + +> 이 unit 의 조각 2개가 26/36줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 투자오더 범위가 직접 입력되면 그대로 쓰고, 아니면 투자오더 그룹(P_KOSET)을 GET_SETLEAF_VALUES(SET CLASS 0103)로 전개해 오더 범위 LR_AUFNR를 만들며 비어 있으면 오류 메시지 후 종료한다. + +```abap + 728| IF S_AUFNR[] IS NOT INITIAL. + 729| LR_AUFNR[] = S_AUFNR[]. + 730| ELSEIF P_KOSET IS NOT INITIAL. + 731| PERFORM GET_SETLEAF_VALUES USING + 732| P_KOSET '0103'. + 733| MACRO_VALUE_TO_RANGE : LR_AUFNR GT_VALUE_SET. + 734| + 735| IF LR_AUFNR[] IS INITIAL. + 736| MESSAGE S000 DISPLAY LIKE 'E' + 737| WITH '투자오더 그룹에 데이터가 없습니다..'(F07). + 738| LEAVE LIST-PROCESSING. + 739| ENDIF. + 740| ENDIF. +``` + +- **EN**: Build the internal order range LR_AUFNR from S_AUFNR or by expanding the order group P_KOSET via GET_SETLEAF_VALUES (set class 0103); stop with an error if empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, SETLEAF, AUFK +- 업무 키워드: 투자오더, 오더 그룹, 그룹 전개, 입력 검증 +- English: Internal Order, Order Group, Set Leaf, SETLEAF +- 정의부(복사 시 함께 필요): [`S_AUFNR`](#decl-zcor0030top-161-s_aufnr), [`LR_AUFNR`](#decl-zcor0030f01-724-lr_aufnr), [`P_KOSET`](#decl-zcor0030top-160-p_koset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L728-L740` · confidence 0.85 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_AUFNR#C1` + +#### [sql_select] ONROR와 AUFK를 조인해 오더유형이 'I'로 시작하는 투자오더의 오브젝트번호(OBJNR)를 GT_ONROR에 조회하고 GR_SELECT_OBJ 범위에 추가해 COSP 조회 대상으로 삼는다. + +```abap + 742| SELECT A~OBJNR A~AUFNR + 743| FROM ONROR AS A INNER JOIN AUFK AS B + 744| ON A~AUFNR = B~AUFNR + 745| INTO CORRESPONDING FIELDS OF TABLE GT_ONROR + 746| WHERE A~AUFNR IN LR_AUFNR + 747| AND B~AUART LIKE 'I%'. + 748| + 749| SORT GT_ONROR BY OBJNR. + 750| + 751| " 실제조회 대상 투자오더 + 752| LOOP AT GT_ONROR. + 753| ADD_RANGE_EQ : GR_SELECT_OBJ GT_ONROR-OBJNR. + 754| ENDLOOP. +``` + +- **EN**: Select object numbers of investment orders (AUART like 'I%') from ONROR joined with AUFK and add them to the selection object range GR_SELECT_OBJ. +- 테이블(파서): read [ONROR](/tables/ONROR.md), [AUFK](/tables/AUFK.md) / write - +- SAP 객체: ONROR, AUFK +- 업무 키워드: 투자오더, 오브젝트번호, 오더유형, 조회 대상 +- English: Internal Order, Object Number, Order Type, ONROR +- 정의부(복사 시 함께 필요): [`AUFK`](#decl-zcor0030top-5-aufk), [`GT_ONROR`](#decl-zcor0030top-118-gt_onror), [`LR_AUFNR`](#decl-zcor0030f01-724-lr_aufnr), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_SELECT_OBJ`](#decl-zcor0030top-120-gr_select_obj) +- 위치: `abap://ZCOR0030/ZCOR0030F01#L742-L754` · confidence 0.9 · `ZCOR0030#ZCOR0030F01#FORM#DETERMINE_AUFNR#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOR0030I01` L6-L28 (23줄) + +*화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| + 24| WHEN OTHERS. + 25| * LEAVE PROGRAM. + 26| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제, 뒤로가기 +- English: OK code, PAI, ALV container, LEAVE TO SCREEN +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcor0030top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcor0030c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOR0030/ZCOR0030I01#L9-L26` · confidence 0.85 · `ZCOR0030#ZCOR0030I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (341건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR0030C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor0030c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR0030TOP` (46건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor0030top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor0030top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor0030top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor0030top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor0030top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor0030top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### CSKA — tables · L4-L4 {#decl-zcor0030top-4-cska} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### CSKS — tables · L4-L4 {#decl-zcor0030top-4-csks} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### DD03L — tables · L4-L4 {#decl-zcor0030top-4-dd03l} + +```abap +TABLES : DD03L, CSKS, CSKA. +``` + +#### AUFK — tables · L5-L5 {#decl-zcor0030top-5-aufk} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### COSP — tables · L5-L5 {#decl-zcor0030top-5-cosp} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### KMAS_D — tables · L5-L5 {#decl-zcor0030top-5-kmas_d} + +```abap +TABLES : KMAS_D, COSP, AUFK. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcor0030top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcor0030top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcor0030top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcor0030top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcor0030top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcor0030top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcor0030top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcor0030top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L36-L36 {#decl-zcor0030top-36-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L40-L72 {#decl-zcor0030top-40-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + OBJNR LIKE COSP-OBJNR, + KOSTL LIKE CSKS-KOSTL, + KOSTL_T LIKE CSKT-KTEXT, + AUFNR LIKE AUFK-AUFNR, + AUFNR_T LIKE AUFK-KTEXT, + KSTAR LIKE CSKA-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, + TOTAL_A LIKE COSP-WKG001, + ACTUAL LIKE COSP-WKG001, + PARK LIKE COSP-WKG001, + BG_B00 LIKE COSP-WKG001, + BG_B10 LIKE COSP-WKG001, + BG_B11 LIKE COSP-WKG001, + BG_B12 LIKE COSP-WKG001, + BG_B13 LIKE COSP-WKG001, + BG_B14 LIKE COSP-WKG001, + BG_B15 LIKE COSP-WKG001, + BG_B20 LIKE COSP-WKG001, + BG_ALL LIKE COSP-WKG001, + POSSIBLE_BG LIKE COSP-WKG001, + TWAER LIKE COSP-TWAER, + PER TYPE P DECIMALS 2, + GROUPNAME LIKE ZCOT0010-GROUPNAME, + GRP_DESCRIPT LIKE ZCOT0010-GRP_DESCRIPT, + KOSTV LIKE AUFK-KOSTV, + KOSTV_T LIKE CSKT-KTEXT, + AKSTL LIKE AUFK-AKSTL, + AKSTL_T LIKE CSKT-KTEXT, + + STATUS LIKE ICON-ID, + +END OF GT_DATA. +``` + +#### GS_DATA — data · L74-L74 {#decl-zcor0030top-74-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L76-L80 {#decl-zcor0030top-76-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L83-L83 {#decl-zcor0030top-83-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_COSP — data · L85-L108 {#decl-zcor0030top-85-gt_cosp} + +```abap +DATA : BEGIN OF GT_COSP OCCURS 0 , + OBJNR LIKE COSP-OBJNR, + GJAHR LIKE COSP-GJAHR, + KSTAR LIKE COSP-KSTAR, + BEKNZ LIKE COSP-BEKNZ, + TWAER LIKE COSP-TWAER, + VERSN LIKE COSP-VERSN, + WRTTP LIKE COSP-WRTTP, + WKG001 LIKE COSP-WKG001, + WKG002 LIKE COSP-WKG002, + WKG003 LIKE COSP-WKG003, + WKG004 LIKE COSP-WKG004, + WKG005 LIKE COSP-WKG005, + WKG006 LIKE COSP-WKG006, + WKG007 LIKE COSP-WKG007, + WKG008 LIKE COSP-WKG008, + WKG009 LIKE COSP-WKG009, + WKG010 LIKE COSP-WKG010, + WKG011 LIKE COSP-WKG011, + WKG012 LIKE COSP-WKG012, + + C_TYPE TYPE C, " B: 예산, A: 실제 + +END OF GT_COSP. +``` + +#### GR_KSTAR — ranges · L110-L110 {#decl-zcor0030top-110-gr_kstar} + +```abap +RANGES : GR_KSTAR FOR CSKA-KSTAR. +``` + +#### GT_KSTAR — data · L112-L115 {#decl-zcor0030top-112-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KTEXT LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GT_ONRKS — data · L117-L117 {#decl-zcor0030top-117-gt_onrks} + +```abap +DATA : GT_ONRKS LIKE ONRKS OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ONROR — data · L118-L118 {#decl-zcor0030top-118-gt_onror} + +```abap +DATA : GT_ONROR LIKE ONROR OCCURS 0 WITH HEADER LINE. +``` + +#### GR_SELECT_OBJ — ranges · L120-L120 {#decl-zcor0030top-120-gr_select_obj} + +```abap +RANGES : GR_SELECT_OBJ FOR COSP-OBJNR. +``` + +#### GT_ZCOT0010 — data · L122-L122 {#decl-zcor0030top-122-gt_zcot0010} + +```abap +DATA : GT_ZCOT0010 LIKE ZCOT0010 OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L132-L133 {#decl-zcor0030top-132-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L138-L139 {#decl-zcor0030top-138-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### S_PERBL — select-option · L140-L142 {#decl-zcor0030top-140-s_perbl} + +```abap +SELECT-OPTIONS : S_PERBL FOR COSP-PERBL NO-EXTENSION OBLIGATORY + DEFAULT SY-DATUM+4(2) + MODIF ID MG2. +``` + +#### P_KSSET — parameter · L147-L147 {#decl-zcor0030top-147-p_ksset} + +```abap +PARAMETER : P_KSSET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KOSTL — select-option · L148-L148 {#decl-zcor0030top-148-s_kostl} + +```abap +SELECT-OPTIONS : S_KOSTL FOR CSKS-KOSTL MODIF ID MG2. +``` + +#### P_KASET — parameter · L149-L149 {#decl-zcor0030top-149-p_kaset} + +```abap +PARAMETER : P_KASET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KSTAR — select-option · L150-L150 {#decl-zcor0030top-150-s_kstar} + +```abap +SELECT-OPTIONS : S_KSTAR FOR CSKA-KSTAR MODIF ID MG2. +``` + +#### P_CONT — parameter · L154-L154 {#decl-zcor0030top-154-p_cont} + +```abap +PARAMETER : P_CONT TYPE C AS CHECKBOX DEFAULT 'X' MODIF ID MG2. +``` + +#### P_B1X — parameter · L157-L157 {#decl-zcor0030top-157-p_b1x} + +```abap +PARAMETER : P_B1X TYPE C DEFAULT 'X' NO-DISPLAY. +``` + +#### P_KOSET — parameter · L160-L160 {#decl-zcor0030top-160-p_koset} + +```abap +PARAMETER : P_KOSET LIKE GRPDYNP-NAME_COALL MODIF ID MG3. +``` + +#### S_AUFNR — select-option · L161-L161 {#decl-zcor0030top-161-s_aufnr} + +```abap +SELECT-OPTIONS : S_AUFNR FOR AUFK-AUFNR MODIF ID MG3. +``` + +#### P_WON1 — parameter · L166-L166 {#decl-zcor0030top-166-p_won1} + +```abap +PARAMETER : P_WON1 TYPE C RADIOBUTTON GROUP RG3 . +``` + +#### P_WON2 — parameter · L168-L168 {#decl-zcor0030top-168-p_won2} + +```abap +PARAMETER : P_WON2 TYPE C RADIOBUTTON GROUP RG3 DEFAULT 'X' . +``` + +#### P_WON3 — parameter · L170-L170 {#decl-zcor0030top-170-p_won3} + +```abap +PARAMETER : P_WON3 TYPE C RADIOBUTTON GROUP RG3 . +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR0030F01` (39건) + +#### LT_CSKA — data · unit 로컬 · L115-L118 {#decl-zcor0030f01-115-lt_cska} + +```abap + DATA : BEGIN OF LT_CSKA OCCURS 0, + KSTAR LIKE CSKA-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKA. +``` + +#### LT_RETURN — data · unit 로컬 · L120-L120 {#decl-zcor0030f01-120-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L121-L121 {#decl-zcor0030f01-121-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FIELDNAME — data · unit 로컬 · L147-L147 {#decl-zcor0030f01-147-lv_fieldname} + +```abap + DATA : LV_FIELDNAME TYPE RGSBS-FIELD. +``` + +#### LV_CLASS — data · unit 로컬 · L148-L148 {#decl-zcor0030f01-148-lv_class} + +```abap + DATA : LV_CLASS TYPE RGSBS-CLASS. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L177-L177 {#decl-zcor0030f01-177-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +#### LT_ZCOT0010 — data · unit 로컬 · L178-L178 {#decl-zcor0030f01-178-lt_zcot0010} + +```abap + DATA : LT_ZCOT0010 LIKE ZCOT0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L247-L247 {#decl-zcor0030f01-247-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_WRTTP — ranges · unit 로컬 · L323-L323 {#decl-zcor0030f01-323-lr_wrttp} + +```abap + RANGES : LR_WRTTP FOR COSP-WRTTP. +``` + +#### LR_VERSN — ranges · unit 로컬 · L324-L324 {#decl-zcor0030f01-324-lr_versn} + +```abap + RANGES : LR_VERSN FOR COSP-VERSN. +``` + +#### LS_COSP — data · unit 로컬 · L325-L325 {#decl-zcor0030f01-325-ls_cosp} + +```abap + DATA : LS_COSP LIKE GT_COSP. +``` + +#### LV_START — data · unit 로컬 · L407-L407 {#decl-zcor0030f01-407-lv_start} + +```abap + DATA : LV_START LIKE COSP-PERBL. +``` + +#### LV_END — data · unit 로컬 · L408-L408 {#decl-zcor0030f01-408-lv_end} + +```abap + DATA : LV_END LIKE COSP-PERBL. +``` + +#### LV_DOCNT — data · unit 로컬 · L409-L409 {#decl-zcor0030f01-409-lv_docnt} + +```abap + DATA : LV_DOCNT TYPE I. +``` + +#### — field-symbol · unit 로컬 · L410-L410 {#decl-zcor0030f01-410--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L411-L411 {#decl-zcor0030f01-411-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_NC — data · unit 로컬 · L412-L412 {#decl-zcor0030f01-412-lv_nc} + +```abap + DATA : LV_NC(3) TYPE N. +``` + +#### — field-symbol · unit 로컬 · L463-L463 {#decl-zcor0030f01-463--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L464-L464 {#decl-zcor0030f01-464-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### — field-symbol · unit 로컬 · L502-L502 {#decl-zcor0030f01-502--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_PV — data · unit 로컬 · L503-L503 {#decl-zcor0030f01-503-lv_pv} + +```abap + DATA : LV_PV TYPE P DECIMALS 4. +``` + +#### LT_CSKT — data · unit 로컬 · L506-L509 {#decl-zcor0030f01-506-lt_cskt} + +```abap + DATA : BEGIN OF LT_CSKT OCCURS 0, + KOSTL LIKE CSKS-KOSTL, + KTEXT LIKE CSKT-KTEXT, + END OF LT_CSKT. +``` + +#### LT_CSKU — data · unit 로컬 · L511-L514 {#decl-zcor0030f01-511-lt_csku} + +```abap + DATA : BEGIN OF LT_CSKU OCCURS 0, + KSTAR LIKE CSKU-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKU. +``` + +#### LS_CSKT — data · unit 로컬 · L516-L516 {#decl-zcor0030f01-516-ls_cskt} + +```abap + DATA : LS_CSKT LIKE LINE OF LT_CSKT. +``` + +#### LS_CSKU — data · unit 로컬 · L517-L517 {#decl-zcor0030f01-517-ls_csku} + +```abap + DATA : LS_CSKU LIKE LINE OF LT_CSKU. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L640-L640 {#decl-zcor0030f01-640-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L641-L641 {#decl-zcor0030f01-641--fs-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_FIELD — data · unit 로컬 · L642-L642 {#decl-zcor0030f01-642-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_DIVIDE — data · unit 로컬 · L643-L643 {#decl-zcor0030f01-643-lv_divide} + +```abap + DATA : LV_DIVIDE TYPE I. +``` + +#### LT_AUFK — data · unit 로컬 · L697-L701 {#decl-zcor0030f01-697-lt_aufk} + +```abap + DATA : BEGIN OF LT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + AUART LIKE AUFK-AUART, + KTEXT LIKE AUFK-KTEXT, + END OF LT_AUFK. +``` + +#### LT_RETURN — data · unit 로컬 · L703-L703 {#decl-zcor0030f01-703-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L704-L704 {#decl-zcor0030f01-704-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LR_AUFNR — ranges · unit 로컬 · L724-L724 {#decl-zcor0030f01-724-lr_aufnr} + +```abap + RANGES : LR_AUFNR FOR AUFK-AUFNR. +``` + +#### LV_S_DATE — data · unit 로컬 · L770-L770 {#decl-zcor0030f01-770-lv_s_date} + +```abap + DATA : LV_S_DATE LIKE SY-DATUM. +``` + +#### LV_E_DATE — data · unit 로컬 · L771-L771 {#decl-zcor0030f01-771-lv_e_date} + +```abap + DATA : LV_E_DATE LIKE SY-DATUM. +``` + +#### LR_WRTTP — ranges · unit 로컬 · L773-L773 {#decl-zcor0030f01-773-lr_wrttp} + +```abap + RANGES : LR_WRTTP FOR COEP-WRTTP. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L774-L774 {#decl-zcor0030f01-774-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_BUDAT — ranges · unit 로컬 · L775-L775 {#decl-zcor0030f01-775-lr_budat} + +```abap + RANGES : LR_BUDAT FOR COBK-BUDAT. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L776-L776 {#decl-zcor0030f01-776-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR0030 L26-31 | 0 | INITIALIZATION에서 SET_DYNP를 호출해 선택화면 초기값을 설정하는 이벤트다. | +| AT SELECTION-SCREEN | EVENT | ZCOR0030 L32-33 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 로직이 없는 빈 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR0030 L34-42 | 0 | AT SELECTION-SCREEN OUTPUT에서 화면 속성 제어(LOOP_AT_SCREEN)와 신호등 범례 아이콘 설정(SET_SCREEN_ICON)을 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L43-45 | 0 | 원가요소 범위 하한(S_KSTAR-LOW)의 F4 도움말로 F4_KSTAR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L46-48 | 0 | 원가요소 범위 상한(S_KSTAR-HIGH)의 F4 도움말로 F4_KSTAR를 호출하는 이벤트다(필드명 'S_KSTAR-IGH' 오타 의심). | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L49-51 | 0 | 코스트센터 그룹(P_KSSET) 파라미터의 F4 도움말로 F4_GRP(K_GROUP_SELECT, SET CLASS 0101)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L52-54 | 0 | 원가요소 그룹(P_KASET) 파라미터의 F4 도움말로 F4_GRP(K_GROUP_SELECT, SET CLASS 0102)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L55-57 | 0 | 투자오더 범위 하한(S_AUFNR-LOW)의 F4 도움말로 F4_AUFNR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L58-60 | 0 | 투자오더 범위 상한(S_AUFNR-HIGH)의 F4 도움말로 F4_AUFNR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0030 L61-70 | 0 | 투자오더 그룹(P_KOSET) 파라미터의 F4 도움말로 F4_GRP(K_GROUP_SELECT, SET CLASS 0103)를 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOR0030 L71-77 | 0 | START-OF-SELECTION에서 INITIALIZE_DATA(초기화·검증)와 PROCESS_DATA(COSP 조회·집계)를 호출하는 메인 이벤트다. | +| END-OF-SELECTION | EVENT | ZCOR0030 L78-89 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR0030C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR0030C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR0030C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR0030C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR0030C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR0030C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR0030C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR0030C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR0030C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR0030C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR0030C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR0030C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR0030C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR0030C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR0030C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR0030C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOR0030C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOR0030C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR0030C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR0030C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR0030C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOR0030C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR0030C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR0030C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR0030C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR0030F01 L6-21 | 0 | 선택화면에서 투자오더 블록(MG3)을 숨기고 관리회계영역 그룹(MG1)을 입력 불가로 설정하는 LOOP AT SCREEN FORM이다. | +| SET_SCREEN_ICON | FORM | ZCOR0030F01 L30-39 | 0 | 선택화면에 가용율 구간별 신호등 아이콘(빨강 10% 이하, 노랑 50% 이하, 초록 50% 초과, 소등 통제 없음) 범례를 표시하는 FORM이다. | +| SET_DYNP | FORM | ZCOR0030F01 L45-57 | 0 | INITIALIZATION에서 SET_KOKRS_BASE로 관리회계영역 기준정보를 설정하고 명칭을 P_BEZEI에 표시하는 초기 화면 설정 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOR0030F01 L63-90 | 2 | 관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, 전역변수 초기화 후 입력 검증·코스트센터·원가요소·예산통제 마스터 결정 FORM들을 순서대로 호출하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOR0030F01 L96-105 | 1 | 예산(B)·실적(A) COSP 조회, 기간 집계, 명칭·가용예산 가공, 금액 단위 환산을 순서대로 호출하는 데이터 처리 메인 FORM이다. | +| F4_KSTAR | FORM | ZCOR0030F01 L114-137 | 1 | 관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다. | +| F4_GRP | FORM | ZCOR0030F01 L145-167 | 1 | K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다. | +| DETERMINE_KSTAR | FORM | ZCOR0030F01 L176-237 | 4 | 선택화면의 원가요소 또는 원가요소 그룹(SET CLASS 0102)을 전개해 CSKB/CSKU에서 유효한 원가요소(0050000000~0069999999)를 구하고, 예산통제 대상 옵션이면 ZCOT0010 등록 원가요소만 남겨 조회 범위 GR_KSTAR를 만든다. | +| DETERMINE_KOSTL | FORM | ZCOR0030F01 L246-284 | 2 | 코스트센터 조건(S_KOSTL) 또는 코스트센터 그룹(P_KSSET)을 전개해 ONRKS에서 오브젝트번호를 구하고 COSP 조회 대상 범위 GR_SELECT_OBJ를 만드는 FORM이다. | +| CHECK_INPUT | FORM | ZCOR0030F01 L293-313 | 1 | 코스트센터 그룹/코스트센터와 원가요소 그룹/원가요소가 동시에 입력되었거나 코스트센터 조건이 비었으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다. | +| SELECT_COSP | FORM | ZCOR0030F01 L321-397 | 2 | 구분(B: 예산 WRTTP 01·버전 B10~B15/B20, A: 실적 WRTTP 04/22/60·버전 000)에 따라 COSP에서 월별 금액을 오브젝트·원가요소별로 SUM 집계해 GT_COSP에 추가하는 FORM이다. | +| COLLECT_DATA | FORM | ZCOR0030F01 L406-453 | 1 | COSP 원본(GT_COSP)의 월별 금액(WKG001~012)을 선택 기간(S_PERBL) 범위만큼 순회해 오브젝트·원가요소별로 GT_DATA에 COLLECT 집계하는 FORM이다. | +| DISTIBUTE_FIELD | FORM | ZCOR0030F01 L462-492 | 1 | GT_COSP 한 행의 월별 금액을 구분(C_TYPE)과 버전/값유형에 따라 GT_DATA의 예산 버전 필드(BG_B00~BG_B20) 또는 실적(ACTUAL)/임시(PARK) 필드에 동적으로 배분한다. | +| EDIT_DATA | FORM | ZCOR0030F01 L501-630 | 2 | 집계된 GT_DATA에 코스트센터·원가요소 명칭을 붙이고 총예산·집행액·가용예산·가용율·신호등 상태·예산통제 그룹을 계산해 ALV 출력용으로 가공하는 FORM이다. | +| CONVERT_CURR | FORM | ZCOR0030F01 L639-670 | 1 | 선택화면의 금액 단위 옵션(원/천원/백만원)에 따라 GT_DATA의 모든 통화(CURR) 필드를 1000 또는 1000000으로 나누어 표시 단위를 환산한다. | +| GET_MASTER_ZCOT0010 | FORM | ZCOR0030F01 L679-688 | 1 | 관리회계영역별 원가요소-예산통제 그룹 매핑 마스터 ZCOT0010을 전체 조회해 GT_ZCOT0010에 담고 원가요소로 정렬한다. | +| F4_AUFNR | FORM | ZCOR0030F01 L696-714 | 1 | 오더유형이 I로 시작하는 투자오더 목록을 AUFK에서 읽어 F4IF_INT_TABLE_VALUE_REQUEST로 오더번호 검색도움을 제공한다. | +| DETERMINE_AUFNR | FORM | ZCOR0030F01 L723-758 | 2 | 투자오더 조건(S_AUFNR) 또는 투자오더 그룹(P_KOSET)을 전개해 ONROR/AUFK에서 오브젝트번호를 구하고 조회 대상 오브젝트 범위(GR_SELECT_OBJ)에 추가하는 FORM이다(ZCOR0030에서는 투자오더 블록이 숨겨져 실제로는 사용되지 않음). | +| CALL_REPORT | FORM | ZCOR0030F01 L767-824 | 2 | ALV에서 실적(ACTUAL)/임시(PARK) 금액을 더블클릭하면 해당 코스트센터·원가요소·기간 조건으로 KSB1 라인아이템 리포트(RKAEP000)를 호출하는 드릴다운 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR0030I01 L6-28 | 1 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOR0030O01 L6-11 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR0030O01 L17-60 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR0030O01 L70-114 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR0030O01 L122-127 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOR0030O01 L135-139 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR0030O01 L147-169 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR0030O01 L178-206 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR0030O01 L279-340 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR0030O01 L350-523 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR0030O01 L531-568 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR0040.md b/wiki/programs/ZCOR0040.md new file mode 100644 index 0000000..cf75e3a --- /dev/null +++ b/wiki/programs/ZCOR0040.md @@ -0,0 +1,4575 @@ +--- +type: abap-program +title: "ZCOR0040 — 예산 조정 내역 리포트" +description: "커스텀 테이블 ZCOT0020에 기록된 부서(코스트센터) 예산 조정 이력(예산 추경 B11, 전용 B12, 이체 B13, 환수 B14, 이월 B20, 판매운영비 B15)을 회계연도·조정 대상 월·코스트센터(그룹)·원가요소(그룹) 조건으로 조회하는 리포트다. 주는 부서/받는 부서, 주는 월/받는 월, 주는 원가요소/받는 원가요소, 조정금액(천원 단위), 조정내역 텍스트, 생성자·생성시간, 조정 시스템(BGSRC)을 ALV로 보여주며, 코스트센터명은 CSKT, 원가요소명은 CSKU, 조정항목·조정시스템 텍스트는 도메인 ZDBGTYPE/ZDBGSRC에서 가져온다." +resource: "abap://ZCOR0040" +tags: ["예산관리", "예산조정", "예산이력", "코스트센터", "관리회계", "CO-OM", "예산 조정 이력", "주는 부서", "받는 부서", "원가요소명", "조정항목", "조정시스템", "천원 단위", "조정 구분", "추경", "전용", "이체", "환수", "이월", "주는/받는 부서"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:17+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CSKB", "CSKT", "CSKU", "DD07T", "ONRKS", "T001", "TKA01", "TKT09", "ZCOT0020"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_GROUP_SELECT", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "0decde9e30223c63c2e33095150a75eda797f70d5d43d9b70753a43af895bb82" +x-unit-count: 140 +x-chunk-count: 63 +x-declaration-count: 218 +--- + +## 업무 목적 + +커스텀 테이블 ZCOT0020에 기록된 부서(코스트센터) 예산 조정 이력(예산 추경 B11, 전용 B12, 이체 B13, 환수 B14, 이월 B20, 판매운영비 B15)을 회계연도·조정 대상 월·코스트센터(그룹)·원가요소(그룹) 조건으로 조회하는 리포트다. 주는 부서/받는 부서, 주는 월/받는 월, 주는 원가요소/받는 원가요소, 조정금액(천원 단위), 조정내역 텍스트, 생성자·생성시간, 조정 시스템(BGSRC)을 ALV로 보여주며, 코스트센터명은 CSKT, 원가요소명은 CSKU, 조정항목·조정시스템 텍스트는 도메인 ZDBGTYPE/ZDBGSRC에서 가져온다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트를 TKA01에서 읽어 표시하고 입력을 잠근다 (SET_DYNP, LOOP_AT_SCREEN) +2. 원가요소 F4는 CSKB/CSKU(0050000000~0069999999) 조회로, 코스트센터/원가요소 그룹 F4는 K_GROUP_SELECT(SET CLASS 0101/0102)로 제공한다 (F4_KSTAR, F4_GRP) +3. 코스트센터 그룹과 코스트센터, 원가요소 그룹과 원가요소가 동시에 입력되었거나 코스트센터 조건이 비어 있으면 오류 처리한다 (CHECK_INPUT) +4. 코스트센터 그룹을 GET_SETLEAF_VALUES로 전개하여 ONRKS+CSKT에서 대상 코스트센터·명칭을 조회하고, 원가요소 그룹을 전개하여 CSKB+CSKU에서 대상 원가요소·명칭을 조회해 범위(GR_KOSTL, GR_KSTAR)를 만든다 (INITIALIZE_DATA, DETERMINE_KOSTL, DETERMINE_KSTAR) +5. 조정항목(ZDBGTYPE)·조정 시스템(ZDBGSRC) 도메인 고정값 텍스트를 읽어 둔다 (INITIALIZE_DATA, GET_DOM_TEXT_LIST) +6. ZCOT0020에서 관리회계영역·회계연도·(주는 월 또는 받는 월)·(주는 부서 또는 받는 부서)·(주는 원가요소 또는 받는 원가요소) 조건으로 조정 내역을 조회하고, 선택한 조정 구분(BGTYPE 10~60)만 남긴다 (PROCESS_DATA, SELECT_DATA) +7. 주는/받는 코스트센터명과 원가요소명, 조정항목·조정시스템 텍스트를 보완하고 조정금액을 천원 단위(TRANS_WKG_VIEW)로 변환한 뒤 조정일자 순으로 정렬한다 (EDIT_DATA, CONVERT_1000_D) +8. 화면 100의 ALV Grid에 예산 조정 내역을 표시한다 (END-OF-SELECTION CALL SCREEN 100) + +## 핵심 내부테이블 + +- `GT_KOSTL_OBJNR` — 조회 대상 코스트센터·오브젝트번호·코스트센터명(ONRKS+CSKT) (채움: DETERMINE_KOSTL / 소비: EDIT_DATA) +- `GT_KSTAR` — 조회 대상 원가요소·원가요소명(CSKB+CSKU) (채움: DETERMINE_KSTAR / 소비: EDIT_DATA) +- `GT_DOMAIN` — 도메인 ZDBGTYPE(조정항목), ZDBGSRC(조정 시스템) 고정값 텍스트 (ZCO_COMMON 공용) (채움: GET_DOM_TEXT_LIST / 소비: EDIT_DATA) +- `GT_DATA` — ZCOT0020 구조 + 주는/받는 부서명·원가요소명, 조정항목/조정시스템 텍스트, 천원 단위 조정금액(TRANS_WKG_VIEW) (채움: SELECT_DATA, EDIT_DATA / 소비: DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, CSKB, CSKT, CSKU, DD07T, ONRKS, T001, TKA01, TKT09, ZCOT0020 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_GROUP_SELECT, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START + +## 로직 조각 (63건 / unit 56개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM F4_KSTAR — `ZCOR0040F01` L198-L221 (24줄) + +*관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다.* + +> 이 unit 의 조각 1개가 13/24줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKB와 CSKU를 조인해 P_KOKRS의 원가요소 50000000~69999999 중 현재 유효한 원가요소와 명칭을 조회하고 F4IF_INT_TABLE_VALUE_REQUEST로 선택화면 필드에 F4 목록을 띄운다. + +```abap + 207| SELECT A~KSTAR B~KTEXT + 208| FROM CSKB AS A INNER JOIN CSKU AS B + 209| ON A~KSTAR = B~KSTAR + 210| INTO CORRESPONDING FIELDS OF TABLE LT_CSKA + 211| WHERE A~KOKRS = P_KOKRS + 212| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 213| AND SPRAS = SY-LANGU + 214| AND A~DATBI >= SY-DATUM + 215| AND A~DATAB <= SY-DATUM. + 216| + 217| PERFORM F4IF_INT_TABLE_VALUE_REQUEST + 218| TABLES LT_CSKA LT_FIELDTAB LT_RETURN + 219| USING 'KSTAR' P_FIELD. +``` + +- **EN**: Select valid cost elements in range 50000000-69999999 with texts from CSKB joined CSKU for the controlling area and present them as an F4 value list via F4IF_INT_TABLE_VALUE_REQUEST. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- 호출(파서): F4IF_INT_TABLE_VALUE_REQUEST +- SAP 객체: CSKB, CSKU, F4IF_INT_TABLE_VALUE_REQUEST +- 업무 키워드: 원가요소 검색도움, 원가요소 명칭, 유효기간, F4 +- English: Cost Element, Search Help, F4 Help, Controlling Area +- 정의부(복사 시 함께 필요): [`LT_CSKA`](#decl-zcor0040f01-199-lt_cska), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs), [`LT_FIELDTAB`](#decl-zcor0040f01-205-lt_fieldtab), [`LT_RETURN`](#decl-zcor0040f01-204-lt_return) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L207-L219` · confidence 0.85 · `ZCOR0040#ZCOR0040F01#FORM#F4_KSTAR#C1` + +### FORM F4_GRP — `ZCOR0040F01` L231-L253 (23줄) + +*K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다.* + +> 이 unit 의 조각 1개가 12/23줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터 그룹/0102 원가요소 그룹)·필드명·관리회계영역·계정과목표 GV_KTOPL을 넘겨 K_GROUP_SELECT로 그룹 선택 대화상자를 띄우고 선택된 세트명을 선택화면 파라미터에 반환한다. + +```abap + 240| CALL FUNCTION 'K_GROUP_SELECT' + 241| EXPORTING + 242| CLASS = LV_CLASS + 243| FIELD_NAME = LV_FIELDNAME + 244| KOKRS = P_KOKRS + 245| KTOPL = GV_KTOPL + 246| IMPORTING + 247| SET_NAME = P_DYN_FIELD + 248| SET_TITLE = KMAS_D-SETTXT_KST + 249| EXCEPTIONS + 250| NO_SET_PICKED = 1 + 251| OTHERS = 2. +``` + +- **EN**: Call K_GROUP_SELECT with set class (0101 cost center group / 0102 cost element group), field name, controlling area and chart of accounts to let the user pick a group and return the set name. +- 호출(파서): K_GROUP_SELECT +- SAP 객체: K_GROUP_SELECT, RGSBS +- 업무 키워드: 그룹 선택, 코스트센터 그룹, 원가요소 그룹, 검색도움 +- English: Cost Center Group, Cost Element Group, Set, F4 Help, Chart of Accounts +- 정의부(복사 시 함께 필요): [`LV_CLASS`](#decl-zcor0040f01-234-lv_class), [`LV_FIELDNAME`](#decl-zcor0040f01-233-lv_fieldname), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`KMAS_D`](#decl-zcor0040top-4-kmas_d) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L240-L251` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#F4_GRP#C1` + +### EVENT START-OF-SELECTION — `ZCOR0040` L54-L61 (8줄) + +*입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. + +```abap + 55| PERFORM CHECK_INPUT. + 56| PERFORM INITIALIZE_DATA. + 57| PERFORM PROCESS_DATA. +``` + +- **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. +- 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA +- 업무 키워드: 메인 처리 순서 +- English: START-OF-SELECTION, Processing Flow +- 위치: `abap://ZCOR0040/ZCOR0040#L55-L57` · confidence 0.8 · `ZCOR0040#ZCOR0040#EVENT#START-OF-SELECTION#C1` + +### FORM CHECK_INPUT — `ZCOR0040F01` L47-L67 (21줄) + +*코스트센터 그룹/코스트센터와 원가요소 그룹/원가요소가 동시에 입력되었거나 코스트센터 조건이 비었으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다.* + +> 이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 코스트센터 그룹(P_KSSET)과 코스트센터(S_KOSTL) 중 하나만, 그리고 반드시 하나는 입력되어야 하며 원가요소 그룹(P_KASET)과 원가요소(S_KSTAR)도 동시 입력을 금지하고 위반 시 MESSAGE S000 E 표시 후 LEAVE LIST-PROCESSING 한다. + +```abap + 49| IF P_KSSET IS NOT INITIAL AND S_KOSTL[] IS NOT INITIAL. + 50| MESSAGE S000 DISPLAY LIKE 'E' + 51| WITH '코스트센터 그룹 혹은 코스트센터 필드 하나만 입력하여 주십시오.'(F05). + 52| LEAVE LIST-PROCESSING. + 53| ENDIF. + 54| + 55| IF P_KSSET IS INITIAL AND S_KOSTL[] IS INITIAL. + 56| MESSAGE S000 DISPLAY LIKE 'E' + 57| WITH '코스트센터 그룹 혹은 코스트센터 필드를 입력하여 주십시오.'(F09). + 58| LEAVE LIST-PROCESSING. + 59| ENDIF. + 60| + 61| IF P_KASET IS NOT INITIAL AND S_KSTAR[] IS NOT INITIAL. + 62| MESSAGE S000 DISPLAY LIKE 'E' + 63| WITH '원가요소 그룹 혹은 원가요소 필드 하나만 입력하여 주십시오.'(F06). + 64| LEAVE LIST-PROCESSING. + 65| ENDIF. +``` + +- **EN**: Validate selection input: cost center group and cost center are mutually exclusive but one is mandatory, and cost element group and cost element are mutually exclusive; otherwise show an error and stop. +- 업무 키워드: 입력 검증, 코스트센터 그룹, 원가요소 그룹, 필수 입력, 상호 배타 +- English: Input Validation, Cost Center Group, Cost Element Group, Selection Screen +- 정의부(복사 시 함께 필요): [`P_KSSET`](#decl-zcor0040top-110-p_ksset), [`S_KOSTL`](#decl-zcor0040top-111-s_kostl), [`P_KASET`](#decl-zcor0040top-114-p_kaset), [`S_KSTAR`](#decl-zcor0040top-115-s_kstar) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L49-L65` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#CHECK_INPUT#C1` + +### FORM INITIALIZE_DATA — `ZCOR0040F01` L73-L105 (33줄) + +*관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, 플래그 초기화 후 코스트센터·원가요소 결정과 조정항목(ZDBGTYPE)·조정시스템(ZDBGSRC) 도메인 텍스트 조회를 호출하는 초기화 FORM이다.* + +> 이 unit 의 조각 1개가 5/33줄(15%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] DETERMINE_KOSTL·DETERMINE_KSTAR로 조회 대상 코스트센터·원가요소 범위를 만들고 GET_DOM_TEXT_LIST로 도메인 ZDBGTYPE(조정항목)·ZDBGSRC(조정시스템) 고정값 텍스트를 GT_DOMAIN에 적재한다. + +```abap + 99| PERFORM DETERMINE_KOSTL. + 100| PERFORM DETERMINE_KSTAR. + 101| + 102| PERFORM GET_DOM_TEXT_LIST USING 'ZDBGTYPE'. + 103| PERFORM GET_DOM_TEXT_LIST USING 'ZDBGSRC'. +``` + +- **EN**: Determine the cost center and cost element ranges and load fixed-value texts of domains ZDBGTYPE (adjustment type) and ZDBGSRC (adjustment source) via GET_DOM_TEXT_LIST. +- 호출(파서): DETERMINE_KOSTL, DETERMINE_KSTAR, GET_DOM_TEXT_LIST, GET_DOM_TEXT_LIST +- SAP 객체: ZDBGTYPE, ZDBGSRC, GET_DOM_TEXT_LIST +- 업무 키워드: 코스트센터 결정, 원가요소 결정, 도메인 텍스트, 조정항목, 조정시스템 +- English: Cost Center, Cost Element, Domain Fixed Values +- 위치: `abap://ZCOR0040/ZCOR0040F01#L99-L103` · confidence 0.8 · `ZCOR0040#ZCOR0040F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM DETERMINE_KOSTL — `ZCOR0040F01` L262-L300 (39줄) + +*코스트센터 조건(S_KOSTL) 또는 코스트센터 그룹(P_KSSET)을 전개해 ONRKS/CSKT에서 대상 코스트센터·오브젝트번호·명칭을 GT_KOSTL_OBJNR로 구하고 GR_KOSTL 범위를 만드는 FORM이다.* + +> 이 unit 의 조각 2개가 32/39줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 코스트센터 범위가 직접 입력되면 그대로 쓰고 아니면 코스트센터 그룹(P_KSSET)을 GET_SETLEAF_VALUES(SET CLASS 0101)로 전개해 LR_KOSTL 범위를 만들며 비어 있으면 오류 후 종료한다. + +```abap + 267| IF S_KOSTL[] IS NOT INITIAL. + 268| LR_KOSTL[] = S_KOSTL[]. + 269| ELSEIF P_KSSET IS NOT INITIAL. + 270| PERFORM GET_SETLEAF_VALUES USING + 271| P_KSSET '0101'. + 272| MACRO_VALUE_TO_RANGE : LR_KOSTL GT_VALUE_SET. + 273| + 274| IF LR_KOSTL[] IS INITIAL. + 275| MESSAGE S000 DISPLAY LIKE 'E' + 276| WITH '코스트센터 그룹에 데이터가 없습니다.'(F09). + 277| LEAVE LIST-PROCESSING. + 278| ENDIF. + 279| ENDIF. +``` + +- **EN**: Build the cost center range from S_KOSTL or by expanding the cost center group P_KSSET via GET_SETLEAF_VALUES (set class 0101); stop with an error if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: GET_SETLEAF_VALUES, SETLEAF +- 업무 키워드: 코스트센터 그룹, 그룹 전개, 입력 검증 +- English: Cost Center Group, Set Leaf, SETLEAF +- 정의부(복사 시 함께 필요): [`S_KOSTL`](#decl-zcor0040top-111-s_kostl), [`LR_KOSTL`](#decl-zcor0040f01-263-lr_kostl), [`P_KSSET`](#decl-zcor0040top-110-p_ksset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L267-L279` · confidence 0.85 · `ZCOR0040#ZCOR0040F01#FORM#DETERMINE_KOSTL#C1` + +#### [sql_select] ONRKS와 CSKT를 조인해 관리회계영역·코스트센터 범위의 오브젝트번호·코스트센터·명칭을 GT_KOSTL_OBJNR로 조회하고 GR_KOSTL 범위에 추가하며, 대상이 없으면 '대상 코스트센터가 없습니다' 오류로 종료한다. + +```abap + 281| SELECT A~OBJNR A~KOSTL B~KTEXT AS KOSTL_T + 282| FROM ONRKS AS A INNER JOIN CSKT AS B + 283| ON A~KOSTL = B~KOSTL + 284| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_OBJNR + 285| WHERE A~KOKRS = P_KOKRS + 286| AND A~KOSTL IN LR_KOSTL + 287| AND B~DATBI >= SY-DATUM + 288| AND SPRAS = SY-LANGU. + 289| + 290| SORT GT_KOSTL_OBJNR BY OBJNR. + 291| + 292| LOOP AT GT_KOSTL_OBJNR. + 293| ADD_RANGE_EQ : GR_KOSTL GT_KOSTL_OBJNR-KOSTL. + 294| ENDLOOP. + 295| + 296| IF GR_KOSTL[] IS INITIAL. + 297| MESSAGE S000 DISPLAY LIKE 'E' WITH '대상 코스트센터가 없습니다.'(F13). + 298| LEAVE LIST-PROCESSING. + 299| ENDIF. +``` + +- **EN**: Read object number, cost center and text from ONRKS joined with CSKT for the cost center range, add them to GR_KOSTL and abort with an error when no cost center is found. +- 테이블(파서): read [ONRKS](/tables/ONRKS.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: ONRKS, CSKT +- 업무 키워드: 코스트센터, 오브젝트번호, 코스트센터명, 존재 검증 +- English: Cost Center, Object Number, ONRKS, CSKT +- 정의부(복사 시 함께 필요): [`GT_KOSTL_OBJNR`](#decl-zcor0040top-76-gt_kostl_objnr), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs), [`LR_KOSTL`](#decl-zcor0040f01-263-lr_kostl), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KOSTL`](#decl-zcor0040top-88-gr_kostl) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L281-L299` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#DETERMINE_KOSTL#C2` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DETERMINE_KSTAR — `ZCOR0040F01` L309-L350 (42줄) + +*원가요소 범위(S_KSTAR) 또는 원가요소 그룹(P_KASET, SETLEAF 클래스 0102)으로 대상 원가요소를 결정하고 CSKB/CSKU에서 유효한 원가요소(50000000~69999999)와 명칭을 GT_KSTAR·GR_KSTAR에 담는다.* + +> 이 unit 의 조각 2개가 30/42줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 원가요소 범위가 입력되면 그대로 쓰고, 아니면 원가요소 그룹 P_KASET을 GET_SETLEAF_VALUES(클래스 0102)로 SETLEAF 값을 풀어 범위 LR_KSTAR로 만들며 그룹에 값이 없으면 오류로 중단한다. + +```abap + 318| IF S_KSTAR[] IS NOT INITIAL. + 319| LR_KSTAR[] = S_KSTAR[]. + 320| ELSEIF P_KASET IS NOT INITIAL. + 321| PERFORM GET_SETLEAF_VALUES USING + 322| P_KASET '0102'. + 323| MACRO_VALUE_TO_RANGE : LR_KSTAR GT_VALUE_SET. + 324| + 325| IF LR_KSTAR[] IS INITIAL. + 326| MESSAGE S000 DISPLAY LIKE 'E' + 327| WITH '원가요소 그룹에 데이터가 없습니다.'(F10). + 328| LEAVE LIST-PROCESSING. + 329| ENDIF. + 330| ENDIF. +``` + +- **EN**: Use the entered cost element range, or resolve cost element group P_KASET via GET_SETLEAF_VALUES (set class 0102) into range LR_KSTAR; abort with error if the group is empty. +- 호출(파서): GET_SETLEAF_VALUES +- SAP 객체: SETLEAF, GET_SETLEAF_VALUES +- 업무 키워드: 원가요소 그룹, 그룹 값 전개, 범위 생성, 입력 검증 +- English: Cost Element Group, Set Leaf, Range, Validation +- 정의부(복사 시 함께 필요): [`S_KSTAR`](#decl-zcor0040top-115-s_kstar), [`LR_KSTAR`](#decl-zcor0040f01-310-lr_kstar), [`P_KASET`](#decl-zcor0040top-114-p_kaset), [`MACRO_VALUE_TO_RANGE`](#decl-zco_common-103-macro_value_to_range), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L318-L330` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#DETERMINE_KSTAR#C1` + +#### [sql_select] CSKB(원가요소 마스터)와 CSKU(명칭)를 조인하여 관리회계영역 P_KOKRS, 원가요소 50000000~69999999, 현재 유효기간 내, LR_KSTAR 범위에 해당하는 원가요소와 명칭을 GT_KSTAR에 조회하고 실조회용 범위 GR_KSTAR를 구성한다. + +```abap + 333| SELECT A~KSTAR B~KTEXT AS KSTAR_T + 334| FROM CSKB AS A INNER JOIN CSKU AS B + 335| ON A~KSTAR = B~KSTAR + 336| INTO CORRESPONDING FIELDS OF TABLE GT_KSTAR + 337| WHERE A~KOKRS = P_KOKRS + 338| AND A~KSTAR BETWEEN '0050000000' AND '0069999999' + 339| AND SPRAS = SY-LANGU + 340| AND A~DATBI >= SY-DATUM + 341| AND A~DATAB <= SY-DATUM + 342| AND A~KSTAR IN LR_KSTAR. + 343| + 344| SORT GT_KSTAR BY KSTAR. + 345| + 346| " 실 제조회 대상 원가요소 + 347| LOOP AT GT_KSTAR. + 348| ADD_RANGE_EQ : GR_KSTAR GT_KSTAR-KSTAR. + 349| ENDLOOP. +``` + +- **EN**: Select valid cost elements (50000000-69999999, current validity) with texts from CSKB joined CSKU for the controlling area and range into GT_KSTAR, then build range GR_KSTAR for the actual selection. +- 테이블(파서): read [CSKB](/tables/CSKB.md), [CSKU](/tables/CSKU.md) / write - +- SAP 객체: CSKB, CSKU, CSKA +- 업무 키워드: 원가요소 조회, 원가요소 명칭, 유효기간, 대상 원가요소 범위 +- English: Cost Element, Cost Element Text, Validity Period, Controlling Area +- 정의부(복사 시 함께 필요): [`GT_KSTAR`](#decl-zcor0040top-82-gt_kstar), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs), [`LR_KSTAR`](#decl-zcor0040f01-310-lr_kstar), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`GR_KSTAR`](#decl-zcor0040top-87-gr_kstar) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L333-L349` · confidence 0.95 · `ZCOR0040#ZCOR0040F01#FORM#DETERMINE_KSTAR#C2` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM SELECT_DATA — `ZCOR0040F01` L123-L169 (47줄) + +*ZCOT0020에서 관리회계영역·회계연도·조정 월·코스트센터·원가요소(주는/받는 측 어느 쪽이든) 조건으로 예산 조정 이력을 조회하고 선택한 조정 구분(BGTYPE)만 남기는 FORM이다.* + +> 이 unit 의 조각 1개가 24/47줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] ZCOT0020에서 KOKRS·GJAHR와 주는/받는 월(S_PERBL), 주는/받는 코스트센터(GR_KOSTL), 주는/받는 원가요소(GR_KSTAR) 중 하나라도 해당하는 조정 이력을 GT_DATA로 조회한 뒤, 라디오버튼 P_C2~P_C7에 따라 조정 구분 BGTYPE 10/20/30/40/50/60 하나만 남기고 삭제한다. + +```abap + 144| SELECT * FROM ZCOT0020 + 145| INTO CORRESPONDING FIELDS OF TABLE GT_DATA + 146| WHERE KOKRS = P_KOKRS + 147| AND GJAHR = P_GJAHR + 148| AND ( SEND_PERBL IN S_PERBL OR RECV_PERBL IN S_PERBL ) + 149| AND ( SEND_KOSTL IN GR_KOSTL OR RECV_KOSTL IN GR_KOSTL ) + 150| AND ( SEND_KSTAR IN GR_KSTAR OR RECV_KSTAR IN GR_KSTAR ). + 151| + 152| " 선택한 조정 구분만 보여줌. + 153| CASE 'X'. + 154| WHEN P_C2. + 155| DELETE GT_DATA WHERE BGTYPE NE '10'. + 156| WHEN P_C3. + 157| DELETE GT_DATA WHERE BGTYPE NE '20'. + 158| WHEN P_C4. + 159| DELETE GT_DATA WHERE BGTYPE NE '30'. + 160| WHEN P_C5. + 161| DELETE GT_DATA WHERE BGTYPE NE '40'. + 162| WHEN P_C6. + 163| DELETE GT_DATA WHERE BGTYPE NE '50'. + 164| WHEN P_C7. + 165| DELETE GT_DATA WHERE BGTYPE NE '60'. + 166| WHEN OTHERS. + 167| ENDCASE. +``` + +- **EN**: Select budget adjustment history from ZCOT0020 for the controlling area and fiscal year where sender or receiver period, cost center and cost element match the ranges, then keep only the adjustment type (BGTYPE 10-60) chosen by radio buttons P_C2-P_C7. +- 테이블(파서): read [ZCOT0020](/tables/ZCOT0020.md) / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0020 +- 업무 키워드: 예산 조정 이력, 조정 구분, 추경, 전용, 이체, 환수, 이월, 주는/받는 부서 +- English: Budget Adjustment, Adjustment Type, Sender/Receiver, ZCOT0020 +- 정의부(복사 시 함께 필요): [`ZCOT0020`](#decl-zcor0040top-5-zcot0020), [`GT_DATA`](#decl-zcor0040top-44-gt_data), [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs), [`P_GJAHR`](#decl-zcor0040top-104-p_gjahr), [`S_PERBL`](#decl-zcor0040top-106-s_perbl), [`GR_KOSTL`](#decl-zcor0040top-88-gr_kostl), [`GR_KSTAR`](#decl-zcor0040top-87-gr_kstar), [`P_C2`](#decl-zcor0040top-120-p_c2), [`P_C3`](#decl-zcor0040top-121-p_c3), [`P_C4`](#decl-zcor0040top-122-p_c4), [`P_C5`](#decl-zcor0040top-123-p_c5), [`P_C6`](#decl-zcor0040top-124-p_c6) 외 1건 +- 위치: `abap://ZCOR0040/ZCOR0040F01#L144-L167` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#SELECT_DATA#C1` + +### FORM EDIT_DATA — `ZCOR0040F01` L359-L428 (70줄) + +*ZCOT0020 예산 조정 이력 각 행에 주는/받는 코스트센터명·원가요소명, 조정항목(ZDBGTYPE)·조정시스템(ZDBGSRC) 텍스트를 붙이고 조정금액을 천원 단위 표시값으로 변환하는 FORM이다.* + +> 이 unit 의 조각 1개가 65/70줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_DATA를 조정일자순으로 정렬하고 각 행에서 GT_KOSTL_OBJNR(CSKT)로 주는/받는 코스트센터명, GT_KSTAR(CSKU)로 주는/받는 원가요소명, GT_DOMAIN으로 조정항목(ZDBGTYPE)·조정시스템(ZDBGSRC) 텍스트를 채운 뒤 조정금액 TRANS_WKG을 CONVERT_1000_D로 천원 단위 TRANS_WKG_VIEW에 반영한다. + +```abap + 363| SORT GT_DATA BY KOKRS GJAHR ADJUST_DATE. + 364| + 365| LOOP AT GT_DATA. + 366| + 367| " SENDER KOSTL. + 368| CLEAR : GT_KOSTL_OBJNR. + 369| READ TABLE GT_KOSTL_OBJNR WITH KEY + 370| KOSTL = GT_DATA-SEND_KOSTL BINARY SEARCH. + 371| + 372| IF SY-SUBRC EQ 0. + 373| GT_DATA-SEND_KOSTL_T = GT_KOSTL_OBJNR-KOSTL_T. + 374| ENDIF. + 375| + 376| " RECV KOSTL. + 377| CLEAR : GT_KOSTL_OBJNR. + 378| READ TABLE GT_KOSTL_OBJNR WITH KEY + 379| KOSTL = GT_DATA-RECV_KOSTL BINARY SEARCH. + 380| + 381| IF SY-SUBRC EQ 0. + 382| GT_DATA-RECV_KOSTL_T = GT_KOSTL_OBJNR-KOSTL_T. + 383| ENDIF. + 384| + 385| " SENDER KSTAR + 386| CLEAR : GT_KSTAR. + 387| READ TABLE GT_KSTAR WITH KEY + 388| KSTAR = GT_DATA-SEND_KSTAR BINARY SEARCH. + 389| + 390| IF SY-SUBRC EQ 0. + 391| GT_DATA-SEND_KSTAR_T = GT_KSTAR-KSTAR_T. + 392| ENDIF. + 393| + 394| " RECV KSTAR + 395| CLEAR : GT_KSTAR. + 396| READ TABLE GT_KSTAR WITH KEY + 397| KSTAR = GT_DATA-RECV_KSTAR BINARY SEARCH. + 398| + 399| IF SY-SUBRC EQ 0. + 400| GT_DATA-RECV_KSTAR_T = GT_KSTAR-KSTAR_T. + 401| ENDIF. + 402| + 403| CLEAR : GS_DOMAIN. + 404| READ TABLE GT_DOMAIN INTO GS_DOMAIN + 405| WITH KEY DOMAIN = 'ZDBGTYPE' + 406| VALUE = GT_DATA-BGTYPE BINARY SEARCH. + 407| + 408| IF SY-SUBRC EQ 0. + 409| GT_DATA-BGTYPE_T = GS_DOMAIN-DDTEXT. + 410| ENDIF. + 411| + 412| CLEAR : GS_DOMAIN. + 413| READ TABLE GT_DOMAIN INTO GS_DOMAIN + 414| WITH KEY DOMAIN = 'ZDBGSRC' + 415| VALUE = GT_DATA-BGSRC BINARY SEARCH. + 416| + 417| IF SY-SUBRC EQ 0. + 418| GT_DATA-BGSRC_T = GS_DOMAIN-DDTEXT. + 419| ENDIF. + 420| + 421| GT_DATA-TRANS_WKG_VIEW = GT_DATA-TRANS_WKG. + 422| + 423| PERFORM CONVERT_1000_D USING GT_DATA-TRANS_WKG_VIEW + 424| CHANGING GT_DATA-TRANS_WKG_VIEW. + 425| + 426| MODIFY GT_DATA. CLEAR : GT_DATA. + 427| ENDLOOP. +``` + +- **EN**: Sort the adjustment rows by date and enrich each with sender/receiver cost center texts, sender/receiver cost element texts, domain texts for adjustment type (ZDBGTYPE) and source system (ZDBGSRC), and a thousand-unit display amount via CONVERT_1000_D. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): CONVERT_1000_D +- SAP 객체: ZCOT0020, ZDBGTYPE, ZDBGSRC, CONVERT_1000_D +- 업무 키워드: 예산 조정 이력, 주는 부서, 받는 부서, 원가요소명, 조정항목, 조정시스템, 천원 단위 +- English: Budget Adjustment, Sender Cost Center, Receiver Cost Center, Domain Text, Cost Element +- 정의부(복사 시 함께 필요): [`ZCOT0020`](#decl-zcor0040top-5-zcot0020), [`GT_DATA`](#decl-zcor0040top-44-gt_data), [`GT_KOSTL_OBJNR`](#decl-zcor0040top-76-gt_kostl_objnr), [`GT_KSTAR`](#decl-zcor0040top-82-gt_kstar), [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L363-L427` · confidence 0.9 · `ZCOR0040#ZCOR0040F01#FORM#EDIT_DATA#C1` + +### EVENT END-OF-SELECTION — `ZCOR0040` L62-L73 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 63| IF SY-BATCH NE 'X'. + 64| IF GT_DATA[] IS NOT INITIAL. + 65| CALL SCREEN 100. + 66| ELSE. + 67| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 68| ENDIF. + 69| ELSE. + 70| IF GT_DATA[] IS NOT INITIAL. + 71| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 72| ENDIF. + 73| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`ZCOT0020`](#decl-zcor0040top-5-zcot0020), [`GT_DATA`](#decl-zcor0040top-44-gt_data) +- 위치: `abap://ZCOR0040/ZCOR0040#L63-L73` · confidence 0.85 · `ZCOR0040#ZCOR0040#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR0040/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR0040/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR0040/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR0040/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR0040/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR0040#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor0040top-98-p_kokrs) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR0040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR0040/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR0040#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### FORM ADD_DATA_MESSAGE — `ZCOR0040F01` L178-L190 (13줄) + +*오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_MAIN_FIELDCAT에서 필드의 긴 텍스트(SCRTEXT_L)를 찾아 '필드명 : 메시지' 형태로 만들어 GT_DATA-MSG_LIST에 삽입해 오류 팝업에 보여줄 메시지를 누적한다. + +```abap + 183| READ TABLE GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 184| WITH KEY FIELDNAME = P_FIELD. + 185| + 186| CONCATENATE LS_FIELDCAT-SCRTEXT_L ` : ` P_MESSAGE + 187| INTO LV_MESSAGE. + 188| + 189| INSERT LV_MESSAGE INTO TABLE GT_DATA-MSG_LIST. +``` + +- **EN**: Look up the field label in the ALV field catalog and insert a 'label : message' line into GT_DATA-MSG_LIST for the error log popup. +- SAP 객체: GT_MAIN_FIELDCAT, GT_DATA +- 업무 키워드: 오류 메시지 누적, 필드 텍스트 +- English: Error Message, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcor0040top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcor0040f01-181-ls_fieldcat), [`LV_MESSAGE`](#decl-zcor0040f01-180-lv_message), [`ZCOT0020`](#decl-zcor0040top-5-zcot0020), [`GT_DATA`](#decl-zcor0040top-44-gt_data) +- 위치: `abap://ZCOR0040/ZCOR0040F01#L183-L189` · confidence 0.8 · `ZCOR0040#ZCOR0040F01#FORM#ADD_DATA_MESSAGE#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOR0040I01` L6-L28 (23줄) + +*화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| + 24| WHEN OTHERS. + 25| * LEAVE PROGRAM. + 26| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제, 뒤로가기 +- English: OK code, PAI, ALV container, LEAVE TO SCREEN +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcor0040top-16-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcor0040c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOR0040/ZCOR0040I01#L9-L26` · confidence 0.85 · `ZCOR0040#ZCOR0040I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (309건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR0040C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor0040c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR0040TOP` (44건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor0040top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor0040top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor0040top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor0040top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor0040top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor0040top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcor0040top-4-dd03l} + +```abap +TABLES : DD03L, KMAS_D. +``` + +#### KMAS_D — tables · L4-L4 {#decl-zcor0040top-4-kmas_d} + +```abap +TABLES : DD03L, KMAS_D. +``` + +#### COSP — tables · L5-L5 {#decl-zcor0040top-5-cosp} + +```abap +TABLES : ZCOT0020, CSKS, CSKA, COSP. +``` + +#### CSKA — tables · L5-L5 {#decl-zcor0040top-5-cska} + +```abap +TABLES : ZCOT0020, CSKS, CSKA, COSP. +``` + +#### CSKS — tables · L5-L5 {#decl-zcor0040top-5-csks} + +```abap +TABLES : ZCOT0020, CSKS, CSKA, COSP. +``` + +#### ZCOT0020 — tables · L5-L5 {#decl-zcor0040top-5-zcot0020} + +```abap +TABLES : ZCOT0020, CSKS, CSKA, COSP. +``` + +#### GV_OK_CODE — data · L15-L15 {#decl-zcor0040top-15-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L16-L16 {#decl-zcor0040top-16-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L18-L18 {#decl-zcor0040top-18-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L22-L22 {#decl-zcor0040top-22-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L23-L23 {#decl-zcor0040top-23-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L24-L24 {#decl-zcor0040top-24-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L25-L25 {#decl-zcor0040top-25-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L27-L27 {#decl-zcor0040top-27-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L32-L33 {#decl-zcor0040top-32-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcor0040top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L44-L62 {#decl-zcor0040top-44-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZCOT0020. + +DATA : + SEND_KOSTL_T LIKE CSKT-KTEXT, + SEND_KSTAR_T LIKE CSKU-KTEXT, + RECV_KOSTL_T LIKE CSKT-KTEXT, + RECV_KSTAR_T LIKE CSKU-KTEXT, + BGTYPE_T LIKE DD07T-DDTEXT, + TRANS_WKG_VIEW LIKE ZCOT0020-TRANS_WKG, + BGSRC_T LIKE DD07T-DDTEXT, + +EXCEL_LINE TYPE I, +MARK TYPE C , +STATUS LIKE ICON-ID, +F_COL TYPE LVC_T_SCOL, +MESSAGE LIKE BDCMSGCOLL-MSGV1, +MSG_LIST TYPE ZMSG_T_LIST, +END OF GT_DATA. +``` + +#### GS_DATA — data · L64-L64 {#decl-zcor0040top-64-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L66-L71 {#decl-zcor0040top-66-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L74-L74 {#decl-zcor0040top-74-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GT_KOSTL_OBJNR — data · L76-L80 {#decl-zcor0040top-76-gt_kostl_objnr} + +```abap +DATA : BEGIN OF GT_KOSTL_OBJNR OCCURS 0 , + KOSTL LIKE CSKS-KOSTL, + OBJNR LIKE ONRKS-OBJNR, + KOSTL_T LIKE CSKT-KTEXT, +END OF GT_KOSTL_OBJNR. +``` + +#### GT_KSTAR — data · L82-L85 {#decl-zcor0040top-82-gt_kstar} + +```abap +DATA : BEGIN OF GT_KSTAR OCCURS 0, + KSTAR LIKE CSKB-KSTAR, + KSTAR_T LIKE CSKU-KTEXT, +END OF GT_KSTAR. +``` + +#### GR_KSTAR — ranges · L87-L87 {#decl-zcor0040top-87-gr_kstar} + +```abap +RANGES : GR_KSTAR FOR CSKA-KSTAR. +``` + +#### GR_KOSTL — ranges · L88-L88 {#decl-zcor0040top-88-gr_kostl} + +```abap +RANGES : GR_KOSTL FOR CSKS-KOSTL. +``` + +#### P_KOKRS — parameter · L98-L99 {#decl-zcor0040top-98-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L104-L105 {#decl-zcor0040top-104-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### S_PERBL — select-option · L106-L107 {#decl-zcor0040top-106-s_perbl} + +```abap +SELECT-OPTIONS : S_PERBL FOR COSP-PERBL OBLIGATORY + DEFAULT SY-DATUM+4(2) NO-EXTENSION. +``` + +#### P_KSSET — parameter · L110-L110 {#decl-zcor0040top-110-p_ksset} + +```abap +PARAMETER : P_KSSET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KOSTL — select-option · L111-L111 {#decl-zcor0040top-111-s_kostl} + +```abap +SELECT-OPTIONS : S_KOSTL FOR CSKS-KOSTL MODIF ID MG2. +``` + +#### P_KASET — parameter · L114-L114 {#decl-zcor0040top-114-p_kaset} + +```abap +PARAMETER : P_KASET LIKE GRPDYNP-NAME_COALL MODIF ID MG2. +``` + +#### S_KSTAR — select-option · L115-L115 {#decl-zcor0040top-115-s_kstar} + +```abap +SELECT-OPTIONS : S_KSTAR FOR CSKA-KSTAR MODIF ID MG2. +``` + +#### P_C1 — parameter · L119-L119 {#decl-zcor0040top-119-p_c1} + +```abap +PARAMETER : P_C1 TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X'. +``` + +#### P_C2 — parameter · L120-L120 {#decl-zcor0040top-120-p_c2} + +```abap +PARAMETER : P_C2 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_C3 — parameter · L121-L121 {#decl-zcor0040top-121-p_c3} + +```abap +PARAMETER : P_C3 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_C4 — parameter · L122-L122 {#decl-zcor0040top-122-p_c4} + +```abap +PARAMETER : P_C4 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_C5 — parameter · L123-L123 {#decl-zcor0040top-123-p_c5} + +```abap +PARAMETER : P_C5 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_C6 — parameter · L124-L124 {#decl-zcor0040top-124-p_c6} + +```abap +PARAMETER : P_C6 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_C7 — parameter · L125-L125 {#decl-zcor0040top-125-p_c7} + +```abap +PARAMETER : P_C7 TYPE C RADIOBUTTON GROUP RG1. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR0040F01` (9건) + +#### LV_MESSAGE — data · unit 로컬 · L180-L180 {#decl-zcor0040f01-180-lv_message} + +```abap + DATA : LV_MESSAGE(255) TYPE C. +``` + +#### LS_FIELDCAT — data · unit 로컬 · L181-L181 {#decl-zcor0040f01-181-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### LT_CSKA — data · unit 로컬 · L199-L202 {#decl-zcor0040f01-199-lt_cska} + +```abap + DATA : BEGIN OF LT_CSKA OCCURS 0, + KSTAR LIKE CSKA-KSTAR, + KTEXT LIKE CSKU-KTEXT, + END OF LT_CSKA. +``` + +#### LT_RETURN — data · unit 로컬 · L204-L204 {#decl-zcor0040f01-204-lt_return} + +```abap + DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDTAB — data · unit 로컬 · L205-L205 {#decl-zcor0040f01-205-lt_fieldtab} + +```abap + DATA : LT_FIELDTAB TYPE DFIES OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FIELDNAME — data · unit 로컬 · L233-L233 {#decl-zcor0040f01-233-lv_fieldname} + +```abap + DATA : LV_FIELDNAME TYPE RGSBS-FIELD. +``` + +#### LV_CLASS — data · unit 로컬 · L234-L234 {#decl-zcor0040f01-234-lv_class} + +```abap + DATA : LV_CLASS TYPE RGSBS-CLASS. +``` + +#### LR_KOSTL — ranges · unit 로컬 · L263-L263 {#decl-zcor0040f01-263-lr_kostl} + +```abap + RANGES : LR_KOSTL FOR CSKS-KOSTL. +``` + +#### LR_KSTAR — ranges · unit 로컬 · L310-L310 {#decl-zcor0040f01-310-lr_kstar} + +```abap + RANGES : LR_KSTAR FOR CSKA-KSTAR. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR0040 L25-30 | 0 | INITIALIZATION에서 SET_DYNP를 호출해 선택화면 초기값을 설정하는 이벤트다. | +| AT SELECTION-SCREEN | EVENT | ZCOR0040 L31-32 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 로직이 없는 빈 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR0040 L33-38 | 0 | AT SELECTION-SCREEN OUTPUT에서 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0040 L39-41 | 0 | 원가요소 범위 하한(S_KSTAR-LOW)의 F4 도움말로 F4_KSTAR를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0040 L42-44 | 0 | 원가요소 범위 상한(S_KSTAR-HIGH)의 F4 도움말로 F4_KSTAR를 호출하는 이벤트다(필드명 'S_KSTAR-IGH' 오타 의심). | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0040 L45-47 | 0 | 코스트센터 그룹(P_KSSET) 파라미터의 F4 도움말로 F4_GRP(K_GROUP_SELECT, SET CLASS 0101)를 호출하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOR0040 L48-53 | 0 | 원가요소 그룹(P_KASET) 파라미터의 F4 도움말로 F4_GRP(K_GROUP_SELECT, SET CLASS 0102)를 호출하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOR0040 L54-61 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOR0040 L62-73 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR0040C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR0040C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR0040C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR0040C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR0040C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR0040C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR0040C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR0040C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR0040C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR0040C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR0040C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR0040C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR0040C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR0040C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR0040C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR0040C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOR0040C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOR0040C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR0040C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR0040C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR0040C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOR0040C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR0040C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR0040C01 L629-687 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR0040C01 L697-707 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR0040F01 L6-17 | 0 | 회사코드 권한 조직(GV_BUKRS_O)이 비어 있으면 선택화면 MG1 그룹 필드를 입력 불가로 만드는 LOOP AT SCREEN FORM이다. | +| SET_DYNP | FORM | ZCOR0040F01 L24-38 | 0 | INITIALIZATION에서 SET_KOKRS_BASE로 관리회계영역 기준정보를 설정하고 명칭을 P_BEZEI에 표시하는 초기 화면 설정 FORM이다. | +| CHECK_INPUT | FORM | ZCOR0040F01 L47-67 | 1 | 코스트센터 그룹/코스트센터와 원가요소 그룹/원가요소가 동시에 입력되었거나 코스트센터 조건이 비었으면 오류 메시지를 내고 종료하는 입력 검증 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOR0040F01 L73-105 | 1 | 관리회계영역 기준정보 설정, ALV 필드카탈로그 취득, 플래그 초기화 후 코스트센터·원가요소 결정과 조정항목(ZDBGTYPE)·조정시스템(ZDBGSRC) 도메인 텍스트 조회를 호출하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOR0040F01 L111-114 | 0 | SELECT_DATA(ZCOT0020 조회)와 EDIT_DATA(명칭·텍스트·단위 가공)를 순서대로 호출하는 데이터 처리 FORM이다. | +| SELECT_DATA | FORM | ZCOR0040F01 L123-169 | 1 | ZCOT0020에서 관리회계영역·회계연도·조정 월·코스트센터·원가요소(주는/받는 측 어느 쪽이든) 조건으로 예산 조정 이력을 조회하고 선택한 조정 구분(BGTYPE)만 남기는 FORM이다. | +| ADD_DATA_MESSAGE | FORM | ZCOR0040F01 L178-190 | 1 | 오류 필드의 ALV 컬럼 텍스트와 메시지를 합쳐 현재 GT_DATA 라인의 메시지 목록(MSG_LIST)에 추가하는 FORM이다. | +| F4_KSTAR | FORM | ZCOR0040F01 L198-221 | 1 | 관리회계영역의 유효한 원가요소(50000000~69999999)를 CSKB/CSKU에서 조회해 F4 검색도움 목록으로 제공한다. | +| F4_GRP | FORM | ZCOR0040F01 L231-253 | 1 | K_GROUP_SELECT를 호출해 코스트센터 그룹(0101) 또는 원가요소 그룹(0102) 세트를 선택하는 F4 검색도움을 제공한다. | +| DETERMINE_KOSTL | FORM | ZCOR0040F01 L262-300 | 2 | 코스트센터 조건(S_KOSTL) 또는 코스트센터 그룹(P_KSSET)을 전개해 ONRKS/CSKT에서 대상 코스트센터·오브젝트번호·명칭을 GT_KOSTL_OBJNR로 구하고 GR_KOSTL 범위를 만드는 FORM이다. | +| DETERMINE_KSTAR | FORM | ZCOR0040F01 L309-350 | 2 | 원가요소 범위(S_KSTAR) 또는 원가요소 그룹(P_KASET, SETLEAF 클래스 0102)으로 대상 원가요소를 결정하고 CSKB/CSKU에서 유효한 원가요소(50000000~69999999)와 명칭을 GT_KSTAR·GR_KSTAR에 담는다. | +| EDIT_DATA | FORM | ZCOR0040F01 L359-428 | 1 | ZCOT0020 예산 조정 이력 각 행에 주는/받는 코스트센터명·원가요소명, 조정항목(ZDBGTYPE)·조정시스템(ZDBGSRC) 텍스트를 붙이고 조정금액을 천원 단위 표시값으로 변환하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR0040I01 L6-28 | 1 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOR0040O01 L6-10 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR0040O01 L16-59 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR0040O01 L69-113 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR0040O01 L121-141 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOR0040O01 L149-158 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR0040O01 L166-188 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR0040O01 L197-225 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR0040O01 L234-249 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR0040O01 L259-390 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR0040O01 L398-425 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR1010.md b/wiki/programs/ZCOR1010.md new file mode 100644 index 0000000..1ebafe8 --- /dev/null +++ b/wiki/programs/ZCOR1010.md @@ -0,0 +1,4504 @@ +--- +type: abap-program +title: "ZCOR1010 — 매출액 기표 검증 - FI/Hisis 인터페이스/CO-PA 대사" +description: "월별 매출액이 FI 일별 매출 인터페이스(ZFIT0060), 하이시스(Hisis) CO 인터페이스(ZCOT0140), CO-PA 기표(CE31000/CE41000, 경영단위 특성 WW120 지점) 세 곳에서 서로 일치하는지 지점(WW120)별로 대사(Reconciliation)하는 검증 리포트다. FI 금액(A)은 ZFIT0060에서 결재유형 90(매출)·처리상태 S 건의 공급가(DMBTR_C − MWSTS_C, 취소건 R은 음수)로 집계하고, CO-CBO 금액(B)은 ZCOT0140의 VV100 합계, CO-PA 금액(C)은 CE31000(PALEDGER 01, VRGAR F, PLIKZ 0)의 VV100001 합계로 집계하여 차이(A−B, B−C)와 일치 여부 신호등을 ALV에 표시한다. 지점의 손익센터(ZFIT0040 GSBER2→PRCTR, CEPCT 명칭)도 함께 보여준다." +resource: "abap://ZCOR1010" +tags: ["매출대사", "CO-PA", "인터페이스 검증", "수익성분석", "결산검증", "손익센터", "기능코드", "화면 종료", "컨테이너 해제", "매출 대사", "일치 여부", "차이 금액", "지점", "신호등", "CO-PA 매출", "경영단위 특성", "실적 원장", "값필드 합계", "하이시스 인터페이스", "CO 인터페이스 매출"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:18+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "CE31000", "CE41000", "CEPCT", "DD07T", "T001", "T2500", "T2501", "T2502", "T2503", "T2504", "T2505", "T2506", "T2507", "T2508", "TKA01", "TKA02", "TKT09", "ZCOT0080", "ZCOT0090", "ZCOT0110", "ZCOT0140", "ZFIT0040", "ZFIT0060"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "d05500a4d7b1be54c5419e9b902fc5fb6d7b3e7d8ad10a0c311ca6427d39b474" +x-unit-count: 134 +x-chunk-count: 60 +x-declaration-count: 231 +--- + +## 업무 목적 + +월별 매출액이 FI 일별 매출 인터페이스(ZFIT0060), 하이시스(Hisis) CO 인터페이스(ZCOT0140), CO-PA 기표(CE31000/CE41000, 경영단위 특성 WW120 지점) 세 곳에서 서로 일치하는지 지점(WW120)별로 대사(Reconciliation)하는 검증 리포트다. FI 금액(A)은 ZFIT0060에서 결재유형 90(매출)·처리상태 S 건의 공급가(DMBTR_C − MWSTS_C, 취소건 R은 음수)로 집계하고, CO-CBO 금액(B)은 ZCOT0140의 VV100 합계, CO-PA 금액(C)은 CE31000(PALEDGER 01, VRGAR F, PLIKZ 0)의 VV100001 합계로 집계하여 차이(A−B, B−C)와 일치 여부 신호등을 ALV에 표시한다. 지점의 손익센터(ZFIT0040 GSBER2→PRCTR, CEPCT 명칭)도 함께 보여준다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트를 설정하고 입력을 잠근다 (SET_DYNP, LOOP_AT_SCREEN) +2. 전역 변수와 메인 ALV 필드카탈로그를 초기화한다 (INITIALIZE_DATA) +3. CO-PA 특성 마스터(T2500~T2508 판매조직·품목·메이커, ZCOT0080/ZCOT0090/ZCOT0110 지점·품목·메이커 매핑), 관리회계영역의 회사코드(TKA02), 지점-손익센터 매핑(ZFIT0040)을 읽어 둔다 (PROCESS_DATA, SET_CHARACTER_MASTER) +4. FI 일별 매출 인터페이스 ZFIT0060에서 해당 월(PRC_DT), 결재유형 90, 처리상태 S 건을 읽어 지점(GSBER2)별 공급가액(DMBTR_C−MWSTS_C, GUBUN R은 음수)을 집계한다 (SELECT_DATA, GET_FI_DAILY_SALES) +5. 하이시스 CO 인터페이스 테이블 ZCOT0140에서 관리회계영역·연도·월의 지점별 VV100 합계를 집계한다 (GET_HISIS_IF_SALES) +6. CO-PA 실적 CE31000과 세그먼트 CE41000을 조인해 기간(PERBL)·PALEDGER 01·VRGAR F·PLIKZ 0 조건으로 지점(WW120)별 VV100001 합계를 집계한다 (GET_CO_PA_SALES) +7. 세 소스를 지점(WW120)·통화 단위로 COLLECT하여 GT_DATA에 FI/IF/CO-PA 금액 컬럼으로 합친다 (SELECT_DATA) +8. 세 금액이 모두 같으면 초록, 아니면 빨강 상태를 부여하고 지점명(ZCOT0090), 차이(A−B, B−C), 손익센터(ZFIT0040)·손익센터명(CEPCT)을 보완한다 (EDIT_DATA) +9. 화면 100의 ALV Grid에 대사 결과를 표시한다 (END-OF-SELECTION CALL SCREEN 100) + +## 핵심 내부테이블 + +- `GT_ZFIT0060` — FI 일별 매출 인터페이스 원본 (PTYPE 90, STATS S) (채움: GET_FI_DAILY_SALES / 소비: GET_FI_DAILY_SALES) +- `GT_FI_SALES` — 지점(WW120=GSBER2)별 FI 매출 공급가액 집계 (A) (채움: GET_FI_DAILY_SALES / 소비: SELECT_DATA) +- `GT_ZCOT0140` — 하이시스→CO 인터페이스 테이블의 지점별 VV100 합계 (B, CO-CBO 금액) (채움: GET_HISIS_IF_SALES / 소비: SELECT_DATA) +- `GT_CE01000` — CO-PA(CE31000+CE41000) 지점별 VV100001 합계 (C) (채움: GET_CO_PA_SALES / 소비: SELECT_DATA) +- `GT_ZCOT0090` — 지점(WW120) 특성 마스터·지점명 (채움: SET_CHARACTER_MASTER / 소비: EDIT_DATA) +- `GT_ZFIT0040` — 지점(GSBER2)-손익센터(PRCTR) 매핑 (채움: SET_CHARACTER_MASTER / 소비: EDIT_DATA) +- `GT_DATA` — 지점별 FI 금액(A), CO-CBO 금액(B), CO-PA 금액(C), 차이(A−B, B−C), 손익센터, 상태 아이콘 (채움: SELECT_DATA, EDIT_DATA / 소비: DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, CE31000, CE41000, CEPCT, DD07T, T001, T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, TKA01, TKA02, TKT09, ZCOT0080, ZCOT0090, ZCOT0110, ZCOT0140, ZFIT0040, ZFIT0060 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (60건 / unit 52개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SET_CHARACTER_MASTER — `ZCOR1010F01` L167-L228 (62줄) + +*CO-PA 특성 마스터(T2500~T2508), 지점·품목·메이커 매핑(ZCOT0080/ZCOT0090/ZCOT0110), 관리회계영역의 회사코드(TKA02), 지점-손익센터 매핑(ZFIT0040)을 내부테이블로 적재하는 FORM이다.* + +> 이 unit 의 조각 2개가 44/62줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CO-PA 특성 체크테이블 T2500~T2508 전체와 관리회계영역별 커스텀 특성 매핑 ZCOT0080(WW300 메이커)·ZCOT0090(WW120 지점)·ZCOT0110(WW240 품목)을 조회해 정렬해 둔다. + +```abap + 181| SELECT * FROM T2500 INTO TABLE GT_T2500. + 182| SORT GT_T2500. + 183| SELECT * FROM T2501 INTO TABLE GT_T2501. + 184| SORT GT_T2501. + 185| SELECT * FROM T2502 INTO TABLE GT_T2502. + 186| SORT GT_T2502. + 187| SELECT * FROM T2503 INTO TABLE GT_T2503. + 188| SORT GT_T2503. + 189| SELECT * FROM T2504 INTO TABLE GT_T2504. + 190| SORT GT_T2504. + 191| SELECT * FROM T2505 INTO TABLE GT_T2505. + 192| SORT GT_T2505. + 193| SELECT * FROM T2506 INTO TABLE GT_T2506. + 194| SORT GT_T2506. + 195| SELECT * FROM T2507 INTO TABLE GT_T2507. + 196| SORT GT_T2507. + 197| SELECT * FROM T2508 INTO TABLE GT_T2508. + 198| SORT GT_T2508. + 199| + 200| SELECT * FROM ZCOT0080 + 201| INTO TABLE GT_ZCOT0080 + 202| WHERE KOKRS = P_KOKRS. + 203| + 204| SORT GT_ZCOT0080 BY WW300. + 205| + 206| SELECT * FROM ZCOT0090 + 207| INTO TABLE GT_ZCOT0090 + 208| WHERE KOKRS = P_KOKRS. + 209| + 210| SORT GT_ZCOT0090 BY WW120. + 211| + 212| SELECT * FROM ZCOT0110 + 213| INTO TABLE GT_ZCOT0110 + 214| WHERE KOKRS = P_KOKRS. + 215| + 216| SORT GT_ZCOT0110 BY WW240. +``` + +- **EN**: Load CO-PA characteristic check tables T2500-T2508 and the custom characteristic mappings ZCOT0080 (WW300), ZCOT0090 (WW120 branch) and ZCOT0110 (WW240) for the controlling area. +- 테이블(파서): read [T2500](/tables/T2500.md), [T2501](/tables/T2501.md), [T2502](/tables/T2502.md), [T2503](/tables/T2503.md), [T2504](/tables/T2504.md), [T2505](/tables/T2505.md), [T2506](/tables/T2506.md), [T2507](/tables/T2507.md), [T2508](/tables/T2508.md), [ZCOT0080](/tables/ZCOT0080.md), [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: T2500, T2501, T2502, T2503, T2504, T2505, T2506, T2507, T2508, ZCOT0080, ZCOT0090, ZCOT0110 +- 업무 키워드: CO-PA 특성 마스터, 지점 마스터, 품목, 메이커, 특성 매핑 +- English: CO-PA Characteristic, Check Table, Branch WW120 +- 정의부(복사 시 함께 필요): [`GT_T2500`](#decl-zcor1010top-115-gt_t2500), [`GT_T2501`](#decl-zcor1010top-116-gt_t2501), [`GT_T2502`](#decl-zcor1010top-117-gt_t2502), [`GT_T2503`](#decl-zcor1010top-120-gt_t2503), [`GT_T2504`](#decl-zcor1010top-121-gt_t2504), [`GT_T2505`](#decl-zcor1010top-122-gt_t2505), [`GT_T2506`](#decl-zcor1010top-123-gt_t2506), [`GT_T2507`](#decl-zcor1010top-124-gt_t2507), [`GT_T2508`](#decl-zcor1010top-111-gt_t2508), [`GT_ZCOT0080`](#decl-zcor1010top-112-gt_zcot0080), [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs), [`GT_ZCOT0090`](#decl-zcor1010top-118-gt_zcot0090) 외 1건 +- 위치: `abap://ZCOR1010/ZCOR1010F01#L181-L216` · confidence 0.85 · `ZCOR1010#ZCOR1010F01#FORM#SET_CHARACTER_MASTER#C1` + +#### [sql_select] 관리회계영역과 회사코드가 1:1이라는 전제로 TKA02에서 회사코드(GV_BUKRS)를 구하고 지점(GSBER2)-손익센터(PRCTR) 매핑 ZFIT0040 전체를 조회해 정렬한다. + +```abap + 220| SELECT SINGLE BUKRS FROM TKA02 + 221| INTO GV_BUKRS + 222| WHERE KOKRS = P_KOKRS. + 223| + 224| SELECT * FROM ZFIT0040 + 225| INTO TABLE GT_ZFIT0040. + 226| + 227| SORT GT_ZFIT0040 BY GSBER2. +``` + +- **EN**: Get the company code assigned to the controlling area from TKA02 (assumed 1:1) and load the branch-to-profit-center mapping ZFIT0040. +- 테이블(파서): read [TKA02](/tables/TKA02.md), [ZFIT0040](/tables/ZFIT0040.md) / write - +- SAP 객체: TKA02, ZFIT0040 +- 업무 키워드: 회사코드 결정, 지점-손익센터 매핑 +- English: Company Code, Controlling Area, Profit Center, TKA02 +- 정의부(복사 시 함께 필요): [`GV_BUKRS`](#decl-zcor1010top-90-gv_bukrs), [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs), [`GT_ZFIT0040`](#decl-zcor1010top-127-gt_zfit0040) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L220-L227` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#SET_CHARACTER_MASTER#C2` + +### FORM SELECT_DATA — `ZCOR1010F01` L66-L101 (36줄) + +*FI 일별 매출·하이시스 IF·CO-PA 세 소스의 지점별 매출 집계를 호출하고 지점(WW120)·통화 키로 GT_DATA에 A/B/C 금액 컬럼으로 병합하는 FORM이다.* + +> 이 unit 의 조각 2개가 26/36줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_FI_DAILY_SALES(ZFIT0060), GET_HISIS_IF_SALES(ZCOT0140), GET_CO_PA_SALES(CE31000/CE41000)를 호출해 세 소스의 지점별 매출 합계를 각각 조회한다. + +```abap + 72| PERFORM GET_FI_DAILY_SALES. + 73| PERFORM GET_HISIS_IF_SALES. + 74| PERFORM GET_CO_PA_SALES. +``` + +- **EN**: Call the three source aggregations: FI daily sales (ZFIT0060), Hisis interface (ZCOT0140) and CO-PA (CE31000/CE41000). +- 호출(파서): GET_FI_DAILY_SALES, GET_HISIS_IF_SALES, GET_CO_PA_SALES +- SAP 객체: ZFIT0060, ZCOT0140, CE31000 +- 업무 키워드: 매출 소스 조회, FI, 하이시스, CO-PA +- English: Sales Reconciliation, CO-PA, FI Interface +- 위치: `abap://ZCOR1010/ZCOR1010F01#L72-L74` · confidence 0.8 · `ZCOR1010#ZCOR1010F01#FORM#SELECT_DATA#C1` + +#### [aggregation] GT_ZCOT0140(IF 금액→VV100_IF), GT_CE01000(CO-PA 금액→VV100_CO), GT_FI_SALES(FI 금액→VV100_FI)를 지점 WW120·통화 키로 GT_DATA에 COLLECT해 한 행에 A/B/C 금액을 병합한다. + +```abap + 77| LOOP AT GT_ZCOT0140. + 78| GT_DATA-WW120 = GT_ZCOT0140-WW120. + 79| GT_DATA-VV100_IF = GT_ZCOT0140-VV100. + 80| GT_DATA-REC_WAERS = GT_ZCOT0140-REC_WAERS. + 81| COLLECT GT_DATA. + 82| CLEAR : GT_DATA, GT_ZCOT0140. + 83| ENDLOOP. + 84| + 85| LOOP AT GT_CE01000. + 86| GT_DATA-WW120 = GT_CE01000-WW120. + 87| GT_DATA-VV100_CO = GT_CE01000-VV100. + 88| GT_DATA-REC_WAERS = GT_CE01000-REC_WAERS. + 89| COLLECT GT_DATA. + 90| CLEAR : GT_DATA, GT_CE01000. + 91| ENDLOOP. + 92| + 93| LOOP AT GT_FI_SALES. + 94| GT_DATA-WW120 = GT_FI_SALES-WW120. + 95| GT_DATA-VV100_FI = GT_FI_SALES-VV100. + 96| GT_DATA-REC_WAERS = GT_FI_SALES-REC_WAERS. + 97| COLLECT GT_DATA. + 98| CLEAR : GT_DATA, GT_FI_SALES. + 99| ENDLOOP. +``` + +- **EN**: COLLECT the Hisis interface, CO-PA and FI totals into GT_DATA keyed by branch WW120 and currency so each row holds the three amounts side by side. +- SAP 객체: ZCOT0140, CE31000, ZFIT0060 +- 업무 키워드: 지점별 병합, 세 소스 매출, COLLECT, 대사 준비 +- English: Reconciliation, Branch WW120, Aggregation +- 정의부(복사 시 함께 필요): [`GT_ZCOT0140`](#decl-zcor1010top-97-gt_zcot0140), [`GT_DATA`](#decl-zcor1010top-63-gt_data), [`GT_CE01000`](#decl-zcor1010top-99-gt_ce01000), [`GT_FI_SALES`](#decl-zcor1010top-106-gt_fi_sales) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L77-L99` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#SELECT_DATA#C2` + +### FORM GET_FI_DAILY_SALES — `ZCOR1010F01` L237-L276 (40줄) + +*FI 일별 매출 인터페이스 ZFIT0060에서 해당 월의 결재유형 90(매출)·처리상태 S 건을 읽어 지점(GSBER2)별 공급가액(DMBTR_C−MWSTS_C, 취소 R은 음수)을 GT_FI_SALES로 집계(A 금액)하는 FORM이다.* + +> 이 unit 의 조각 2개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회계연도·기간으로 월초~월말(GET_LAST_DAY) 일자 범위를 만들고 ZFIT0060에서 회사코드·처리일자(PRC_DT) 범위·결재유형 PTYPE '90'(매출)·처리상태 STATS 'S' 건을 GT_ZFIT0060으로 조회한다. + +```abap + 244| CONCATENATE P_GJAHR P_PERDE+1(2) '01' + 245| INTO LV_S_DATE. + 246| PERFORM GET_LAST_DAY USING LV_S_DATE + 247| CHANGING LV_E_DATE. + 248| + 249| * 결재유형 (PTYPE) = 90 + 250| * 처리상태 (STATS) = S + 251| * 발생취소구분 (GUBUN) = N +, R - + 252| * VV100 = 금액(LC) DMBTR_C - LC세금 MWSTS_C + 253| *일자는 PRC_DT 내 해당월 + 254| SELECT * + 255| INTO TABLE GT_ZFIT0060 + 256| FROM ZFIT0060 + 257| WHERE BUKRS = GV_BUKRS + 258| AND PRC_DT BETWEEN LV_S_DATE AND LV_E_DATE + 259| AND PTYPE = '90' "90은 매출 + 260| * AND GUBUN IN ('N', 'R') + 261| AND STATS = 'S'. +``` + +- **EN**: Derive the first and last day of the period and select FI daily sales interface rows from ZFIT0060 for the company code, processing date range, payment type 90 (sales) and status S. +- 테이블(파서): read [ZFIT0060](/tables/ZFIT0060.md) / write - +- 호출(파서): GET_LAST_DAY +- SAP 객체: ZFIT0060, GET_LAST_DAY +- 업무 키워드: FI 일별 매출, 인터페이스 조회, 결재유형, 처리상태, 월 기간 +- English: FI Interface, Sales, Processing Date, ZFIT0060 +- 정의부(복사 시 함께 필요): [`P_GJAHR`](#decl-zcor1010top-142-p_gjahr), [`P_PERDE`](#decl-zcor1010top-143-p_perde), [`LV_S_DATE`](#decl-zcor1010f01-238-lv_s_date), [`LV_E_DATE`](#decl-zcor1010f01-239-lv_e_date), [`GT_ZFIT0060`](#decl-zcor1010top-105-gt_zfit0060), [`GV_BUKRS`](#decl-zcor1010top-90-gv_bukrs) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L244-L261` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#GET_FI_DAILY_SALES#C1` + +#### [aggregation] 조회된 각 건의 공급가액(DMBTR_C − MWSTS_C)을 계산하고 발생취소구분 GUBUN 'R'이면 부호를 반전해 지점(GSBER2→WW120)·통화별로 GT_FI_SALES에 COLLECT 집계한다. + +```abap + 263| LOOP AT GT_ZFIT0060. + 264| GT_FI_SALES-WW120 = GT_ZFIT0060-GSBER2. + 265| GT_FI_SALES-VV100 = GT_ZFIT0060-DMBTR_C - GT_ZFIT0060-MWSTS_C. + 266| IF GT_ZFIT0060-GUBUN = 'R'. + 267| GT_FI_SALES-VV100 = GT_FI_SALES-VV100 * -1. + 268| ENDIF. + 269| GT_FI_SALES-REC_WAERS = GT_ZFIT0060-WAERS. + 270| COLLECT GT_FI_SALES. + 271| CLEAR : GT_ZFIT0060, GT_FI_SALES. + 272| ENDLOOP. + 273| + 274| SORT GT_FI_SALES BY WW120. +``` + +- **EN**: Compute net sales (local amount minus tax) per row, negate cancellations (GUBUN 'R') and COLLECT by branch (GSBER2 as WW120) and currency into GT_FI_SALES. +- SAP 객체: ZFIT0060 +- 업무 키워드: 공급가액, 세금 차감, 취소 건 음수, 지점별 집계, COLLECT +- English: Net Amount, Tax, Cancellation, Aggregation +- 정의부(복사 시 함께 필요): [`GT_ZFIT0060`](#decl-zcor1010top-105-gt_zfit0060), [`GT_CE01000`](#decl-zcor1010top-99-gt_ce01000), [`GT_FI_SALES`](#decl-zcor1010top-106-gt_fi_sales) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L263-L274` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#GET_FI_DAILY_SALES#C2` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM GET_HISIS_IF_SALES — `ZCOR1010F01` L285-L297 (13줄) + +*하이시스(Hisis) CO 인터페이스 테이블 ZCOT0140에서 관리회계영역·회계연도·기간의 지점(WW120)·통화별 VV100 매출 합계(B 금액)를 GT_ZCOT0140으로 집계하는 FORM이다.* + +> 이 unit 의 조각 1개가 10/13줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] ZCOT0140에서 KOKRS·GJAHR·PERDE 조건으로 지점(WW120)·통화(REC_WAERS)별 VV100 합계를 GROUP BY로 집계해 GT_ZCOT0140에 넣고 정렬한다. + +```abap + 287| SELECT WW120 REC_WAERS + 288| SUM( VV100 ) AS VV100 + 289| FROM ZCOT0140 + 290| INTO CORRESPONDING FIELDS OF TABLE GT_ZCOT0140 + 291| WHERE KOKRS = P_KOKRS + 292| AND GJAHR = P_GJAHR + 293| AND PERDE = P_PERDE + 294| GROUP BY WW120 REC_WAERS. + 295| + 296| SORT GT_ZCOT0140 BY WW120 WW240 WW300. +``` + +- **EN**: Aggregate the Hisis-to-CO interface table ZCOT0140 for the controlling area, year and period into VV100 totals per branch WW120 and currency. +- 테이블(파서): read [ZCOT0140](/tables/ZCOT0140.md) / write - +- SAP 객체: ZCOT0140 +- 업무 키워드: 하이시스 인터페이스, CO 인터페이스 매출, 지점별 합계 +- English: Interface Table, Sales Amount, Branch WW120 +- 정의부(복사 시 함께 필요): [`GT_ZCOT0140`](#decl-zcor1010top-97-gt_zcot0140), [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs), [`P_GJAHR`](#decl-zcor1010top-142-p_gjahr), [`P_PERDE`](#decl-zcor1010top-143-p_perde) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L287-L296` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#GET_HISIS_IF_SALES#C1` + +### FORM GET_CO_PA_SALES — `ZCOR1010F01` L306-L325 (20줄) + +*CO-PA 실적 라인(CE31000)과 세그먼트(CE41000)를 조인해 해당 기간의 지점(WW120)·통화별 매출 값필드 VV100001 합계(C 금액)를 GT_CE01000으로 집계하는 FORM이다.* + +> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회계연도+기간으로 PERBL을 만들고 CE31000(PALEDGER 01, 실적 PLIKZ 0, 레코드유형 VRGAR F)과 CE41000을 PAOBJNR/PASUBNR로 조인해 지점(WW120)·통화별 VV100001 합계를 GT_CE01000에 조회·정렬한다. + +```abap + 309| CONCATENATE P_GJAHR P_PERDE INTO LV_PERBL. + 310| + 311| SELECT B~WW120 A~REC_WAERS + 312| SUM( VV100001 ) AS VV100 + 313| FROM CE31000 AS A INNER JOIN CE41000 AS B + 314| ON A~PAOBJNR = B~PAOBJNR + 315| AND A~PASUBNR = B~PASUBNR + 316| INTO CORRESPONDING FIELDS OF TABLE GT_CE01000 + 317| WHERE A~PERBL = LV_PERBL + 318| AND A~PLIKZ = '0' + 319| AND A~PALEDGER = '01' + 320| AND A~VRGAR = 'F' + 321| AND A~GJAHR = P_GJAHR + 322| GROUP BY B~WW120 A~REC_WAERS. + 323| + 324| SORT GT_CE01000 BY WW120. +``` + +- **EN**: Build the period key and select the sum of value field VV100001 per branch WW120 and currency from CE31000 (ledger 01, actual PLIKZ 0, record type F) joined with segment table CE41000, then sort by branch. +- 테이블(파서): read [CE31000](/tables/CE31000.md), [CE41000](/tables/CE41000.md) / write - +- SAP 객체: CE31000, CE41000 +- 업무 키워드: CO-PA 매출, 경영단위 특성, 지점, 실적 원장, 값필드 합계 +- English: CO-PA, Profitability Segment, CE31000, CE41000, Value Field +- 정의부(복사 시 함께 필요): [`P_GJAHR`](#decl-zcor1010top-142-p_gjahr), [`P_PERDE`](#decl-zcor1010top-143-p_perde), [`LV_PERBL`](#decl-zcor1010f01-307-lv_perbl), [`GT_CE01000`](#decl-zcor1010top-99-gt_ce01000) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L309-L324` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#GET_CO_PA_SALES#C1` + +### FORM EDIT_DATA — `ZCOR1010F01` L110-L158 (49줄) + +*지점(WW120)별 FI·하이시스 IF·CO-PA 매출액을 비교해 일치 여부 신호등과 차이(A−B, B−C)를 계산하고 지점명(ZCOT0090)·손익센터(ZFIT0040)·손익센터명(CEPCT)을 채우는 FORM이다.* + +> 이 unit 의 조각 1개가 42/49줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 각 지점 행에서 FI 금액(VV100_FI)=IF 금액(VV100_IF)=CO-PA 금액(VV100_CO)이면 초록, 아니면 빨강 상태를 주고 차이 VV100_FI_IF(A−B)·VV100_IF_CO(B−C)를 계산하며, GT_ZCOT0090에서 지점명, GT_ZFIT0040(GSBER2→PRCTR)에서 손익센터를 찾아 CEPCT에서 손익센터명을 SELECT SINGLE로 보강한다. + +```abap + 113| LOOP AT GT_DATA. + 114| + 115| IF ( GT_DATA-VV100_IF EQ GT_DATA-VV100_CO ) AND + 116| ( GT_DATA-VV100_FI EQ GT_DATA-VV100_IF ). + 117| GT_DATA-STATUS = GC_STATUS_GREEN. + 118| ELSE. + 119| GT_DATA-STATUS = GC_STATUS_RED. + 120| ENDIF. + 121| + 122| READ TABLE GT_ZCOT0090 WITH KEY + 123| KOKRS = P_KOKRS + 124| WW120 = GT_DATA-WW120 + 125| BINARY SEARCH. + 126| + 127| IF SY-SUBRC EQ 0. + 128| GT_DATA-WW120_TEXT = GT_ZCOT0090-WW120_TEXT. + 129| ENDIF. + 130| + 131| GT_DATA-VV100_FI_IF = GT_DATA-VV100_FI - + 132| GT_DATA-VV100_IF. + 133| GT_DATA-VV100_IF_CO = GT_DATA-VV100_IF - + 134| GT_DATA-VV100_CO. + 135| + 136| READ TABLE GT_ZFIT0040 WITH KEY GSBER2 = GT_DATA-WW120 + 137| BINARY SEARCH. + 138| + 139| IF SY-SUBRC EQ 0. + 140| GT_DATA-PRCTR = GT_ZFIT0040-PRCTR. + 141| + 142| SELECT SINGLE KTEXT + 143| FROM CEPCT + 144| INTO GT_DATA-PRCTR_TEXT + 145| WHERE KOKRS = P_KOKRS + 146| AND PRCTR = GT_DATA-PRCTR + 147| AND DATBI >= SY-DATUM + 148| AND SPRAS = SY-LANGU. + 149| ENDIF. + 150| + 151| MODIFY GT_DATA. + 152| + 153| CLEAR : GT_ZCOT0090, GT_ZCOT0110. + 154| ENDLOOP. +``` + +- **EN**: For each branch row set green/red status depending on whether FI, Hisis interface and CO-PA amounts all match, compute the differences A-B and B-C, and enrich with branch text (ZCOT0090), profit center (ZFIT0040) and profit center text from CEPCT. +- 테이블(파서): read [CEPCT](/tables/CEPCT.md) / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0090, ZFIT0040, CEPCT +- 업무 키워드: 매출 대사, 일치 여부, 차이 금액, 지점, 손익센터, 신호등 +- English: Reconciliation, CO-PA, Profit Center, Branch WW120, Traffic Light +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor1010top-63-gt_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GT_ZCOT0090`](#decl-zcor1010top-118-gt_zcot0090), [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs), [`GT_ZFIT0040`](#decl-zcor1010top-127-gt_zfit0040), [`GT_ZCOT0110`](#decl-zcor1010top-125-gt_zcot0110) +- 위치: `abap://ZCOR1010/ZCOR1010F01#L113-L154` · confidence 0.9 · `ZCOR1010#ZCOR1010F01#FORM#EDIT_DATA#C1` + +### EVENT END-OF-SELECTION — `ZCOR1010` L51-L62 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 52| IF SY-BATCH NE 'X'. + 53| IF GT_DATA[] IS NOT INITIAL. + 54| CALL SCREEN 100. + 55| ELSE. + 56| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 57| ENDIF. + 58| ELSE. + 59| IF GT_DATA[] IS NOT INITIAL. + 60| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 61| ENDIF. + 62| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor1010top-63-gt_data) +- 위치: `abap://ZCOR1010/ZCOR1010#L52-L62` · confidence 0.85 · `ZCOR1010#ZCOR1010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR1010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR1010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR1010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR1010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR1010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR1010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor1010top-136-p_kokrs) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR1010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR1010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR1010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOR1010I01` L6-L32 (27줄) + +*화면 100 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다(CO-PA 기표/역분개 버튼은 주석 처리).* + +> 이 unit 의 조각 1개가 22/27줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| * WHEN '&COPA'. + 23| * PERFORM EXECUTE_COPA. + 24| "Function Code 맵핑 + 25| * WHEN '&REV'. + 26| * PERFORM EXECUTE_REVERSE. + 27| + 28| WHEN OTHERS. + 29| * LEAVE PROGRAM. + 30| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제 +- English: OK code, PAI, ALV container +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcor1010top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcor1010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOR1010/ZCOR1010I01#L9-L30` · confidence 0.85 · `ZCOR1010#ZCOR1010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (316건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR1010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor1010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR1010TOP` (57건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor1010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor1010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor1010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor1010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor1010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor1010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### DD03L — tables · L4-L4 {#decl-zcor1010top-4-dd03l} + +```abap +TABLES : DD03L. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zcor1010top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zcor1010top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zcor1010top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zcor1010top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcor1010top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zcor1010top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zcor1010top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L28-L29 {#decl-zcor1010top-28-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L30-L31 {#decl-zcor1010top-30-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCO_STRUC1'. +``` + +#### GC_VRGAR — constants · L34-L34 {#decl-zcor1010top-34-gc_vrgar} + +```abap +CONSTANTS : GC_VRGAR LIKE CE01000-VRGAR VALUE 'F'. +``` + +#### GC_PALEDGER — constants · L37-L37 {#decl-zcor1010top-37-gc_paledger} + +```abap +CONSTANTS : GC_PALEDGER LIKE CE01000-PALEDGER VALUE '01'. +``` + +#### GC_COPA_AWTYP — constants · L38-L39 {#decl-zcor1010top-38-gc_copa_awtyp} + +```abap +CONSTANTS : GC_COPA_AWTYP LIKE CE01000-COPA_AWTYP + VALUE 'Z1010'. +``` + +#### GC_ERKRS — constants · L40-L40 {#decl-zcor1010top-40-gc_erkrs} + +```abap +CONSTANTS : GC_ERKRS TYPE RKE_TERKRS VALUE '1000'. +``` + +#### GT_MAIN_FIELDCAT — data · L46-L46 {#decl-zcor1010top-46-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L51-L51 {#decl-zcor1010top-51--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L52-L52 {#decl-zcor1010top-52--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L54-L54 {#decl-zcor1010top-54-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L55-L55 {#decl-zcor1010top-55-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L57-L57 {#decl-zcor1010top-57-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L58-L58 {#decl-zcor1010top-58-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L63-L76 {#decl-zcor1010top-63-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. +DATA : + WW120 LIKE ZCOT0140-WW120, + WW120_TEXT LIKE ZCOT0090-WW120_TEXT, + VV100_FI LIKE ZCOT0140-VV100, + VV100_IF LIKE ZCOT0140-VV100, + VV100_CO LIKE ZCOT0140-VV100, + VV100_FI_IF LIKE ZCOT0140-VV100, + VV100_IF_CO LIKE ZCOT0140-VV100, + REC_WAERS LIKE ZCOT0140-REC_WAERS, + PRCTR LIKE ZFIT0040-PRCTR, + PRCTR_TEXT LIKE CEPCT-KTEXT, +STATUS LIKE ICON-ID, +END OF GT_DATA. +``` + +#### GS_DATA — data · L78-L78 {#decl-zcor1010top-78-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L80-L83 {#decl-zcor1010top-80-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L86-L86 {#decl-zcor1010top-86-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L88-L88 {#decl-zcor1010top-88-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GV_BUKRS — data · L90-L90 {#decl-zcor1010top-90-gv_bukrs} + +```abap +DATA : GV_BUKRS LIKE TKA02-BUKRS. +``` + +#### GV_BUDAT — data · L91-L91 {#decl-zcor1010top-91-gv_budat} + +```abap +DATA : GV_BUDAT LIKE CE01000-BUDAT. +``` + +#### GV_ALREADY_POSTED — data · L92-L92 {#decl-zcor1010top-92-gv_already_posted} + +```abap +DATA : GV_ALREADY_POSTED TYPE C. +``` + +#### GV_ITEMCNT — data · L93-L93 {#decl-zcor1010top-93-gv_itemcnt} + +```abap +DATA : GV_ITEMCNT TYPE I. +``` + +#### GV_SEL_FIELDS — data · L94-L94 {#decl-zcor1010top-94-gv_sel_fields} + +```abap +DATA : GV_SEL_FIELDS TYPE STRING. +``` + +#### GT_ZCOT0140 — data · L97-L97 {#decl-zcor1010top-97-gt_zcot0140} + +```abap +DATA : GT_ZCOT0140 LIKE ZCOT0140 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_CE01000 — data · L99-L103 {#decl-zcor1010top-99-gt_ce01000} + +```abap +DATA : BEGIN OF GT_CE01000 OCCURS 0, + WW120 LIKE CE01000-WW120, + VV100 LIKE CE01000-VV100, + REC_WAERS LIKE CE01000-WW120, +END OF GT_CE01000. +``` + +#### GT_ZFIT0060 — data · L105-L105 {#decl-zcor1010top-105-gt_zfit0060} + +```abap +DATA : GT_ZFIT0060 LIKE ZFIT0060 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FI_SALES — data · L106-L106 {#decl-zcor1010top-106-gt_fi_sales} + +```abap +DATA : GT_FI_SALES LIKE GT_CE01000 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2508 — data · L111-L111 {#decl-zcor1010top-111-gt_t2508} + +```abap +DATA : GT_T2508 LIKE T2508 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0080 — data · L112-L112 {#decl-zcor1010top-112-gt_zcot0080} + +```abap +DATA : GT_ZCOT0080 LIKE ZCOT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2500 — data · L115-L115 {#decl-zcor1010top-115-gt_t2500} + +```abap +DATA : GT_T2500 LIKE T2500 OCCURS 0 WITH HEADER LINE. " 사업부 +``` + +#### GT_T2501 — data · L116-L116 {#decl-zcor1010top-116-gt_t2501} + +```abap +DATA : GT_T2501 LIKE T2501 OCCURS 0 WITH HEADER LINE. " 지사 +``` + +#### GT_T2502 — data · L117-L117 {#decl-zcor1010top-117-gt_t2502} + +```abap +DATA : GT_T2502 LIKE T2502 OCCURS 0 WITH HEADER LINE. " 지점 +``` + +#### GT_ZCOT0090 — data · L118-L118 {#decl-zcor1010top-118-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_T2503 — data · L120-L120 {#decl-zcor1010top-120-gt_t2503} + +```abap +DATA : GT_T2503 LIKE T2503 OCCURS 0 WITH HEADER LINE. " 품목 +``` + +#### GT_T2504 — data · L121-L121 {#decl-zcor1010top-121-gt_t2504} + +```abap +DATA : GT_T2504 LIKE T2504 OCCURS 0 WITH HEADER LINE. " 품목(대) +``` + +#### GT_T2505 — data · L122-L122 {#decl-zcor1010top-122-gt_t2505} + +```abap +DATA : GT_T2505 LIKE T2505 OCCURS 0 WITH HEADER LINE. " 품목(중) +``` + +#### GT_T2506 — data · L123-L123 {#decl-zcor1010top-123-gt_t2506} + +```abap +DATA : GT_T2506 LIKE T2506 OCCURS 0 WITH HEADER LINE. " 품목(소) +``` + +#### GT_T2507 — data · L124-L124 {#decl-zcor1010top-124-gt_t2507} + +```abap +DATA : GT_T2507 LIKE T2507 OCCURS 0 WITH HEADER LINE. " 품목상세. +``` + +#### GT_ZCOT0110 — data · L125-L125 {#decl-zcor1010top-125-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZFIT0040 — data · L127-L127 {#decl-zcor1010top-127-gt_zfit0040} + +```abap +DATA : GT_ZFIT0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### P_KOKRS — parameter · L136-L137 {#decl-zcor1010top-136-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L142-L142 {#decl-zcor1010top-142-p_gjahr} + +```abap +PARAMETERS : P_GJAHR LIKE CE01000-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4). +``` + +#### P_PERDE — parameter · L143-L143 {#decl-zcor1010top-143-p_perde} + +```abap +PARAMETERS : P_PERDE LIKE CE01000-PERDE OBLIGATORY DEFAULT SY-DATUM+4(2). +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR1010F01` (3건) + +#### LV_S_DATE — data · unit 로컬 · L238-L238 {#decl-zcor1010f01-238-lv_s_date} + +```abap + DATA : LV_S_DATE LIKE SY-DATUM. +``` + +#### LV_E_DATE — data · unit 로컬 · L239-L239 {#decl-zcor1010f01-239-lv_e_date} + +```abap + DATA : LV_E_DATE LIKE SY-DATUM. +``` + +#### LV_PERBL — data · unit 로컬 · L307-L307 {#decl-zcor1010f01-307-lv_perbl} + +```abap + DATA : LV_PERBL LIKE CE01000-PERIO. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR1010 L26-31 | 0 | INITIALIZATION에서 SET_DYNP를 호출해 선택화면 초기값을 설정하는 이벤트다. | +| AT SELECTION-SCREEN | EVENT | ZCOR1010 L32-33 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 로직이 없는 빈 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR1010 L34-43 | 0 | AT SELECTION-SCREEN OUTPUT에서 LOOP_AT_SCREEN으로 화면 필드 속성을 제어하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZCOR1010 L44-50 | 0 | START-OF-SELECTION에서 INITIALIZE_DATA(초기화)와 PROCESS_DATA(매출 대사 처리)를 호출하는 메인 이벤트다. | +| END-OF-SELECTION | EVENT | ZCOR1010 L51-62 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR1010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR1010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR1010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR1010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR1010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR1010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR1010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR1010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR1010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR1010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR1010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR1010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR1010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR1010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR1010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR1010C01 L210-216 | 0 | | +| ON_F4 | FORM | ZCOR1010C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZCOR1010C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR1010C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR1010C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR1010C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZCOR1010C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR1010C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR1010C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR1010C01 L699-722 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR1010F01 L6-15 | 0 | 선택화면 MG1 그룹(관리회계영역) 필드를 입력 불가로 설정하는 LOOP AT SCREEN FORM이다. | +| SET_DYNP | FORM | ZCOR1010F01 L21-24 | 0 | INITIALIZATION에서 SET_KOKRS_BASE로 관리회계영역 기준정보를 설정하고 명칭을 P_BEZEI에 표시하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZCOR1010F01 L30-47 | 0 | SET_KOKRS_BASE로 관리회계영역 기준정보를 설정하고 메인 ALV 필드카탈로그를 취득하며 전역 플래그를 초기화하는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZCOR1010F01 L53-57 | 0 | SET_CHARACTER_MASTER(특성 마스터 적재) → SELECT_DATA(세 소스 매출 집계·병합) → EDIT_DATA(대사·보강)를 순서대로 호출하는 데이터 처리 FORM이다. | +| SELECT_DATA | FORM | ZCOR1010F01 L66-101 | 2 | FI 일별 매출·하이시스 IF·CO-PA 세 소스의 지점별 매출 집계를 호출하고 지점(WW120)·통화 키로 GT_DATA에 A/B/C 금액 컬럼으로 병합하는 FORM이다. | +| EDIT_DATA | FORM | ZCOR1010F01 L110-158 | 1 | 지점(WW120)별 FI·하이시스 IF·CO-PA 매출액을 비교해 일치 여부 신호등과 차이(A−B, B−C)를 계산하고 지점명(ZCOT0090)·손익센터(ZFIT0040)·손익센터명(CEPCT)을 채우는 FORM이다. | +| SET_CHARACTER_MASTER | FORM | ZCOR1010F01 L167-228 | 2 | CO-PA 특성 마스터(T2500~T2508), 지점·품목·메이커 매핑(ZCOT0080/ZCOT0090/ZCOT0110), 관리회계영역의 회사코드(TKA02), 지점-손익센터 매핑(ZFIT0040)을 내부테이블로 적재하는 FORM이다. | +| GET_FI_DAILY_SALES | FORM | ZCOR1010F01 L237-276 | 2 | FI 일별 매출 인터페이스 ZFIT0060에서 해당 월의 결재유형 90(매출)·처리상태 S 건을 읽어 지점(GSBER2)별 공급가액(DMBTR_C−MWSTS_C, 취소 R은 음수)을 GT_FI_SALES로 집계(A 금액)하는 FORM이다. | +| GET_HISIS_IF_SALES | FORM | ZCOR1010F01 L285-297 | 1 | 하이시스(Hisis) CO 인터페이스 테이블 ZCOT0140에서 관리회계영역·회계연도·기간의 지점(WW120)·통화별 VV100 매출 합계(B 금액)를 GT_ZCOT0140으로 집계하는 FORM이다. | +| GET_CO_PA_SALES | FORM | ZCOR1010F01 L306-325 | 1 | CO-PA 실적 라인(CE31000)과 세그먼트(CE41000)를 조인해 해당 기간의 지점(WW120)·통화별 매출 값필드 VV100001 합계(C 금액)를 GT_CE01000으로 집계하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR1010I01 L6-32 | 1 | 화면 100 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다(CO-PA 기표/역분개 버튼은 주석 처리). | +| STATUS_0100 OUTPUT | MODULE | ZCOR1010O01 L6-18 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR1010O01 L24-67 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR1010O01 L77-121 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR1010O01 L129-133 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZCOR1010O01 L141-147 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR1010O01 L155-168 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR1010O01 L177-205 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR1010O01 L214-237 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR1010O01 L247-332 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR1010O01 L340-367 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZCOR2010.md b/wiki/programs/ZCOR2010.md new file mode 100644 index 0000000..227ed17 --- /dev/null +++ b/wiki/programs/ZCOR2010.md @@ -0,0 +1,4560 @@ +--- +type: abap-program +title: "ZCOR2010 — 판매계획 조회 리포트" +description: "엑셀로 업로드된 판매계획(Sales Plan) 커스텀 테이블을 지점별(ZCOT0160 금액, ZCOT0170 수량, ZCOT0200 매출원가/장려금/수수료) 또는 품목(중)별(ZCOT0180, ZCOT0190, ZCOT0210)로 읽어 회계연도·선택 월 구간의 매출액, 매출원가, 판매장려금, 수입수수료, 매출이익과 각 비율(%), 판매수량, 객단가를 계산해 ALV로 보여주는 조회 리포트다. 지점 특성(ZCOT0090: 사업부/지사/지점)과 품목 특성(ZCOT0110: 품목군/품목대/품목중) 텍스트를 보완하고 금액은 천원 단위로 표시한다." +resource: "abap://ZCOR2010" +tags: ["판매계획", "사업계획", "CO-PA", "수익성분석", "매출이익", "지점별 계획", "천원 단위", "금액 환산", "동적 필드", "지점 마스터", "품목 마스터", "특성 텍스트", "매출액", "매출원가", "판매장려금", "수입수수료", "월 구간 합산", "COLLECT", "판매수량", "원가율"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:18+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD07T", "T001", "TKA01", "TKT09", "ZCOT0090", "ZCOT0110"] +x-tables-write: ["GT_DATA"] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "b57c06aff2abbd013173e92a3bdb0bb27dba82a701ffc2c88f693e7e8ddf95de" +x-unit-count: 133 +x-chunk-count: 59 +x-declaration-count: 221 +--- + +## 업무 목적 + +엑셀로 업로드된 판매계획(Sales Plan) 커스텀 테이블을 지점별(ZCOT0160 금액, ZCOT0170 수량, ZCOT0200 매출원가/장려금/수수료) 또는 품목(중)별(ZCOT0180, ZCOT0190, ZCOT0210)로 읽어 회계연도·선택 월 구간의 매출액, 매출원가, 판매장려금, 수입수수료, 매출이익과 각 비율(%), 판매수량, 객단가를 계산해 ALV로 보여주는 조회 리포트다. 지점 특성(ZCOT0090: 사업부/지사/지점)과 품목 특성(ZCOT0110: 품목군/품목대/품목중) 텍스트를 보완하고 금액은 천원 단위로 표시한다. + +## 주 흐름 + +1. 선택화면 초기화: 관리회계영역 텍스트를 설정하고 입력을 잠근다 (SET_DYNP, LOOP_AT_SCREEN) +2. 전역 변수와 메인 ALV 필드카탈로그를 초기화한다 (INITIALIZE_DATA) +3. 지점별 조회(PR_120)면 ZCOT0160(금액)·ZCOT0170(수량)·ZCOT0200(원가/장려금/수수료)을, 품목(중)별 조회(PR_220)면 ZCOT0180·ZCOT0190·ZCOT0210을 관리회계영역·회계연도 조건으로 동적 SELECT하여 금액 테이블(GT_SEL_VV100)과 수량 테이블(GT_SEL_VVQ01)에 적재한다 (PROCESS_DATA, SELECT_DATA, SELECT_TABLE) +4. 지점(ZCOT0090)·품목(ZCOT0110) 특성 마스터를 읽고, 금액 레코드의 MONTH01~MONTH12 중 선택 월 구간(S_PERDE)만 합산해 COST_GUBUN(40 매출액, 10 매출원가, 20 장려금, 30 수수료)별 컬럼으로 COLLECT한다 (EDIT_DATA) +5. 수량 레코드(COST_GUBUN 50/60)도 같은 방식으로 합산해 판매수량 컬럼으로 COLLECT한다 (EDIT_DATA) +6. 지점별 사업부/지사/지점명, 품목군/품목(대)/품목(중)명을 보완하고 매출원가율·장려금율·수수료율·매출이익·매출이익율·객단가(매출액/수량)를 계산한다 (EDIT_DATA) +7. 전체 합계(GS_SUM)와 합계 비율을 계산하고 CURR 필드를 천원 단위로 변환한다 (EDIT_DATA, CONVERT_1000_DOWN, CONVERT_1000_D) +8. 화면 100의 ALV Grid에 판매계획 조회 결과를 표시한다 (END-OF-SELECTION CALL SCREEN 100) + +## 핵심 내부테이블 + +- `GT_SEL_VV100` — 판매계획 금액 원본 (ZCOT0160/0180 매출액, ZCOT0200/0210 원가·장려금·수수료; MONTH01~12, COST_GUBUN) (채움: SELECT_TABLE / 소비: EDIT_DATA) +- `GT_SEL_VVQ01` — 판매계획 수량 원본 (ZCOT0170/0190; MONTH01~12, COST_GUBUN 50/60) (채움: SELECT_TABLE / 소비: EDIT_DATA) +- `GT_ZCOT0090` — 지점(WW120) 특성 마스터: 사업부(WW100)/지사(WW110)/지점명 (채움: EDIT_DATA / 소비: EDIT_DATA) +- `GT_ZCOT0110` — 품목(WW220) 특성 마스터: 품목군(WW200)/품목대(WW210)/품목중명 (채움: EDIT_DATA / 소비: EDIT_DATA) +- `GT_DATA` — ALV 출력용 지점/품목별 매출액, 매출원가, 장려금, 수수료, 매출이익, 각 비율(%), 수량, 객단가, 통화, 단위 (채움: EDIT_DATA, CONVERT_1000_DOWN / 소비: DISPLAY_ALV_LIST) +- `GS_SUM` — 전체 합계 및 합계 비율 (상단 표시용으로 추정) (채움: EDIT_DATA / 소비: SET_TOP_OF_PAGE_TEXT_0100) + +## 테이블 / 외부 호출 + +- read: AENR, DD07T, T001, TKA01, TKT09, ZCOT0090, ZCOT0110 +- write: GT_DATA +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (59건 / unit 50개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) + +*TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 2096| SELECT SINGLE BEZEI WAERS KTOPL + 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) + 2098| FROM TKA01 + 2099| WHERE KOKRS = P_KOKRS. +``` + +- **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. +- 테이블(파서): read [TKA01](/tables/TKA01.md) / write - +- SAP 객체: TKA01 +- 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 +- English: Controlling Area, TKA01, Chart of Accounts, Currency +- 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcor2010top-193-p_kokrs) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 174| EXPORTING + 175| I_PROGRAM_NAME = SY-REPID + 176| I_INTERNAL_TABNAME = P_ITAB_NAME + 177| I_INCLNAME = SY-REPID + 178| I_STRUCTURE_NAME = '' + 179| I_BYPASSING_BUFFER = 'X' + 180| CHANGING + 181| CT_FIELDCAT = LT_FIELDCAT[] + 182| EXCEPTIONS + 183| INCONSISTENT_INTERFACE = 1 + 184| PROGRAM_ERROR = 2. + 185| + 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 187| EXPORTING + 188| IT_FIELDCAT_ALV = LT_FIELDCAT + 189| IMPORTING + 190| ET_FIELDCAT_LVC = LT_ALV_CAT + 191| TABLES + 192| IT_DATA = LT_TABLE[]. + 193| + 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 195| CHANGING + 196| CT_FIELDCAT = LT_ALV_CAT. + 197| + 198| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM SELECT_DATA — `ZCOR2010F01` L66-L80 (15줄) + +*지점별(PR_120) 또는 품목(중)별(PR_220) 조회 옵션에 따라 대응하는 판매계획 테이블 세트를 SELECT_TABLE로 읽어 금액·수량 원본 테이블을 채운다.* + +> 이 unit 의 조각 1개가 9/15줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 지점별이면 ZCOT0160(금액)·ZCOT0170(수량)·ZCOT0200(원가/장려금/수수료)을, 품목(중)별이면 ZCOT0180·ZCOT0190·ZCOT0210을 SELECT_TABLE로 조회한다. + +```abap + 70| IF PR_120 = 'X'. + 71| PERFORM SELECT_TABLE USING 'ZCOT0160' 'X'. + 72| PERFORM SELECT_TABLE USING 'ZCOT0170' ' '. + 73| PERFORM SELECT_TABLE USING 'ZCOT0200' 'X'. + 74| ELSEIF PR_220 = 'X'. + 75| PERFORM SELECT_TABLE USING 'ZCOT0180' 'X'. + 76| PERFORM SELECT_TABLE USING 'ZCOT0190' ' '. + 77| PERFORM SELECT_TABLE USING 'ZCOT0210' 'X'. + 78| ENDIF. +``` + +- **EN**: Choose the branch-level tables ZCOT0160/0170/0200 or the item-group tables ZCOT0180/0190/0210 and load them via SELECT_TABLE. +- 호출(파서): SELECT_TABLE, SELECT_TABLE, SELECT_TABLE, SELECT_TABLE, SELECT_TABLE, SELECT_TABLE +- SAP 객체: ZCOT0160, ZCOT0170, ZCOT0200, ZCOT0180, ZCOT0190, ZCOT0210 +- 업무 키워드: 지점별 조회, 품목별 조회, 판매계획 테이블 +- English: Branch level, Item group level, Sales Plan +- 정의부(복사 시 함께 필요): [`PR_120`](#decl-zcor2010top-180-pr_120), [`PR_220`](#decl-zcor2010top-183-pr_220) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L70-L78` · confidence 0.9 · `ZCOR2010#ZCOR2010F01#FORM#SELECT_DATA#C1` + +### FORM SELECT_TABLE — `ZCOR2010F01` L323-L337 (15줄) + +*테이블명을 동적으로 받아 관리회계영역·회계연도 조건으로 판매계획 테이블을 조회해 금액(GT_SEL_VV100) 또는 수량(GT_SEL_VVQ01) 테이블에 APPENDING한다.* + +> 이 unit 의 조각 1개가 11/15줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] P_SEL_VV100 플래그에 따라 동적 테이블(P_TABLENM: ZCOT0160/0180/0200/0210 또는 ZCOT0170/0190)에서 KOKRS·GJAHR 조건으로 SELECT하여 금액 테이블 또는 수량 테이블에 누적 적재한다. + +```abap + 325| IF P_SEL_VV100 = 'X'. + 326| SELECT * FROM (P_TABLENM) + 327| APPENDING CORRESPONDING FIELDS OF TABLE GT_SEL_VV100 + 328| WHERE KOKRS = P_KOKRS + 329| AND GJAHR = P_GJAHR. + 330| ELSE. + 331| SELECT * FROM (P_TABLENM) + 332| APPENDING CORRESPONDING FIELDS OF TABLE GT_SEL_VVQ01 + 333| WHERE KOKRS = P_KOKRS + 334| AND GJAHR = P_GJAHR. + 335| ENDIF. +``` + +- **EN**: Dynamic SELECT from the given plan table for controlling area and fiscal year, appending into the amount table GT_SEL_VV100 or the quantity table GT_SEL_VVQ01. +- SAP 객체: ZCOT0160, ZCOT0170, ZCOT0180, ZCOT0190, ZCOT0200, ZCOT0210 +- 업무 키워드: 판매계획 조회, 동적 테이블, 금액, 수량 +- English: Dynamic SELECT, Sales Plan, Fiscal year +- 정의부(복사 시 함께 필요): [`GT_SEL_VV100`](#decl-zcor2010top-126-gt_sel_vv100), [`P_KOKRS`](#decl-zcor2010top-193-p_kokrs), [`P_GJAHR`](#decl-zcor2010top-199-p_gjahr), [`GT_SEL_VVQ01`](#decl-zcor2010top-148-gt_sel_vvq01) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L325-L335` · confidence 0.9 · `ZCOR2010#ZCOR2010F01#FORM#SELECT_TABLE#C1` + +### FORM EDIT_DATA — `ZCOR2010F01` L117-L314 (198줄) + +*지점/품목 특성 마스터를 읽고 판매계획 금액·수량 원본을 선택 월 구간으로 합산해 COST_GUBUN별 컬럼으로 COLLECT한 뒤 특성 텍스트, 원가·장려금·수수료 비율, 매출이익, 객단가와 전체 합계를 계산하고 천원 단위로 변환한다.* + +> 이 unit 의 조각 5개가 171/198줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 관리회계영역 기준으로 지점 특성 마스터 ZCOT0090(WW120)과 품목 특성 마스터 ZCOT0110(WW220)을 조회하고 키 기준 정렬·중복 제거한다. + +```abap + 136| SELECT * FROM ZCOT0090 INTO TABLE GT_ZCOT0090 + 137| WHERE KOKRS = P_KOKRS. + 138| SORT GT_ZCOT0090 BY WW120. + 139| DELETE ADJACENT DUPLICATES FROM GT_ZCOT0090 + 140| COMPARING WW120. + 141| + 142| SELECT * FROM ZCOT0110 INTO TABLE GT_ZCOT0110 + 143| WHERE KOKRS = P_KOKRS. + 144| SORT GT_ZCOT0110 BY WW220. + 145| DELETE ADJACENT DUPLICATES FROM GT_ZCOT0110 + 146| COMPARING WW220. +``` + +- **EN**: Select branch characteristic master ZCOT0090 and item characteristic master ZCOT0110 for the controlling area, sort and de-duplicate by key. +- 테이블(파서): read [ZCOT0090](/tables/ZCOT0090.md), [ZCOT0110](/tables/ZCOT0110.md) / write - +- SAP 객체: ZCOT0090, ZCOT0110 +- 업무 키워드: 지점 마스터, 품목 마스터, 특성 텍스트 +- English: Branch master, Item group master, Characteristic +- 정의부(복사 시 함께 필요): [`GT_ZCOT0090`](#decl-zcor2010top-169-gt_zcot0090), [`P_KOKRS`](#decl-zcor2010top-193-p_kokrs), [`GT_ZCOT0110`](#decl-zcor2010top-170-gt_zcot0110) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L136-L146` · confidence 0.95 · `ZCOR2010#ZCOR2010F01#FORM#EDIT_DATA#C1` + +#### [aggregation] 금액 원본 GT_SEL_VV100의 MONTH01~12 중 S_PERDE 월 구간만 합산하고 COST_GUBUN 10(매출원가)/20(장려금)/30(수수료)/40(매출액)별 컬럼에 넣어 GT_DATA에 COLLECT한다. + +```abap + 148| LOOP AT GT_SEL_VV100. + 149| MOVE-CORRESPONDING GT_SEL_VV100 TO GT_DATA. + 150| + 151| DO 12 TIMES VARYING LV_BUFFER1 FROM GT_SEL_VV100-MONTH01 + 152| NEXT GT_SEL_VV100-MONTH02. + 153| CHECK SY-INDEX BETWEEN LV_START AND LV_END. + 154| LV_VV100 = LV_VV100 + LV_BUFFER1. + 155| CLEAR : LV_BUFFER1. + 156| ENDDO. + 157| + 158| CASE GT_SEL_VV100-COST_GUBUN. + 159| WHEN '10'. + 160| GT_DATA-VV220_10 = LV_VV100. + 161| WHEN '20'. + 162| GT_DATA-VV220_20 = LV_VV100. + 163| WHEN '30'. + 164| GT_DATA-VV220_30 = LV_VV100. + 165| WHEN '40'. + 166| GT_DATA-VV100_40 = LV_VV100. + 167| WHEN OTHERS. + 168| ENDCASE. + 169| + 170| GT_DATA-REC_WAERS = GV_WAERS. + 171| GT_DATA-MEINS = GC_MEINS. + 172| + 173| COLLECT GT_DATA. + 174| CLEAR : GT_DATA. + 175| + 176| CLEAR : LV_VV100, LV_BUFFER1. + 177| ENDLOOP. +``` + +- **EN**: Sum the selected month range of each amount record and COLLECT it into GT_DATA columns by COST_GUBUN (10 cost of sales, 20 incentive, 30 commission, 40 sales). +- SAP 객체: ZCOT0160, ZCOT0180, ZCOT0200, ZCOT0210 +- 업무 키워드: 매출액, 매출원가, 판매장려금, 수입수수료, 월 구간 합산, COLLECT +- English: Sales Plan, Cost of sales, Incentive, Commission, Period range +- 정의부(복사 시 함께 필요): [`GT_SEL_VV100`](#decl-zcor2010top-126-gt_sel_vv100), [`GT_DATA`](#decl-zcor2010top-56-gt_data), [`LV_BUFFER1`](#decl-zcor2010f01-118-lv_buffer1), [`LV_START`](#decl-zcor2010f01-122-lv_start), [`LV_END`](#decl-zcor2010f01-123-lv_end), [`LV_VV100`](#decl-zcor2010f01-119-lv_vv100), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcor2010top-33-gc_meins) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L148-L177` · confidence 0.95 · `ZCOR2010#ZCOR2010F01#FORM#EDIT_DATA#C2` + +#### [aggregation] 수량 원본 GT_SEL_VVQ01의 선택 월 구간을 합산해 COST_GUBUN 50/60을 판매수량 컬럼(VVQ01_50)으로 GT_DATA에 COLLECT한다. + +```abap + 179| LOOP AT GT_SEL_VVQ01. + 180| MOVE-CORRESPONDING GT_SEL_VVQ01 TO GT_DATA. + 181| + 182| DO 12 TIMES VARYING LV_BUFFER2 FROM GT_SEL_VVQ01-MONTH01 + 183| NEXT GT_SEL_VVQ01-MONTH02. + 184| CHECK SY-INDEX BETWEEN LV_START AND LV_END. + 185| LV_VVQ01 = LV_VVQ01 + LV_BUFFER2. + 186| CLEAR : LV_BUFFER2. + 187| ENDDO. + 188| + 189| CASE GT_SEL_VVQ01-COST_GUBUN. + 190| WHEN '50' OR '60'. + 191| GT_DATA-VVQ01_50 = LV_VVQ01. + 192| ENDCASE. + 193| + 194| GT_DATA-REC_WAERS = GV_WAERS. + 195| GT_DATA-MEINS = GC_MEINS. + 196| + 197| COLLECT GT_DATA. + 198| CLEAR : GT_DATA. + 199| + 200| CLEAR : LV_VV100, LV_BUFFER1, LV_BUFFER2, LV_VVQ01. + 201| ENDLOOP. +``` + +- **EN**: Sum the selected month range of each quantity record (COST_GUBUN 50/60) and COLLECT it into the sales quantity column of GT_DATA. +- SAP 객체: ZCOT0170, ZCOT0190 +- 업무 키워드: 판매수량, 월 구간 합산, COLLECT +- English: Sales quantity, Period range, COLLECT +- 정의부(복사 시 함께 필요): [`GT_SEL_VVQ01`](#decl-zcor2010top-148-gt_sel_vvq01), [`GT_DATA`](#decl-zcor2010top-56-gt_data), [`LV_BUFFER2`](#decl-zcor2010f01-121-lv_buffer2), [`LV_START`](#decl-zcor2010f01-122-lv_start), [`LV_END`](#decl-zcor2010f01-123-lv_end), [`LV_VVQ01`](#decl-zcor2010f01-120-lv_vvq01), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcor2010top-33-gc_meins), [`LV_VV100`](#decl-zcor2010f01-119-lv_vv100), [`LV_BUFFER1`](#decl-zcor2010f01-118-lv_buffer1) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L179-L201` · confidence 0.95 · `ZCOR2010#ZCOR2010F01#FORM#EDIT_DATA#C3` + +#### [calculation] 행별로 지점(사업부/지사/지점명)·품목(품목군/품목대/품목중명) 텍스트를 보강하고 매출액 대비 원가·장려금·수수료 비율(%), 매출이익(매출액-원가+장려금+수수료)과 이익률, 객단가(매출액/수량)를 계산한다. + +```abap + 203| LOOP AT GT_DATA. + 204| READ TABLE GT_ZCOT0090 WITH KEY WW120 = GT_DATA-WW120 + 205| BINARY SEARCH. + 206| + 207| IF SY-SUBRC EQ 0. + 208| GT_DATA-WW120_TEXT = GT_ZCOT0090-WW120_TEXT. + 209| GT_DATA-WW100 = GT_ZCOT0090-WW100. + 210| GT_DATA-WW100_TEXT = GT_ZCOT0090-WW100_TEXT. + 211| GT_DATA-WW110 = GT_ZCOT0090-WW110. + 212| GT_DATA-WW110_TEXT = GT_ZCOT0090-WW110_TEXT. + 213| ENDIF. + 214| + 215| READ TABLE GT_ZCOT0110 WITH KEY WW220 = GT_DATA-WW220 + 216| BINARY SEARCH. + 217| + 218| IF SY-SUBRC EQ 0. + 219| GT_DATA-WW200 = GT_ZCOT0110-WW200. + 220| GT_DATA-WW200_TEXT = GT_ZCOT0110-WW200_TEXT. + 221| GT_DATA-WW210 = GT_ZCOT0110-WW210. + 222| GT_DATA-WW210_TEXT = GT_ZCOT0110-WW210_TEXT. + 223| GT_DATA-WW220_TEXT = GT_ZCOT0110-WW220_TEXT. + 224| ENDIF. + 225| + 226| CLEAR : LV_PER. + 227| IF GT_DATA-VV100_40 NE 0. + 228| LV_PER = GT_DATA-VV220_10 / GT_DATA-VV100_40. + 229| LV_PER = LV_PER * 100. + 230| ENDIF. + 231| WRITE LV_PER TO GT_DATA-10_PER LEFT-JUSTIFIED NO-GAP + 232| DECIMALS 2. + 233| + 234| CLEAR : LV_PER. + 235| IF GT_DATA-VV100_40 NE 0. + 236| LV_PER = GT_DATA-VV220_20 / GT_DATA-VV100_40. + 237| LV_PER = LV_PER * 100. + 238| ENDIF. + 239| WRITE LV_PER TO GT_DATA-20_PER LEFT-JUSTIFIED NO-GAP + 240| DECIMALS 2. + 241| + 242| CLEAR : LV_PER. + 243| IF GT_DATA-VV100_40 NE 0. + 244| LV_PER = GT_DATA-VV220_30 / GT_DATA-VV100_40. + 245| LV_PER = LV_PER * 100. + 246| ENDIF. + 247| WRITE LV_PER TO GT_DATA-30_PER LEFT-JUSTIFIED NO-GAP + 248| DECIMALS 2. + 249| + 250| GT_DATA-VVPROFIT = GT_DATA-VV100_40 - + 251| GT_DATA-VV220_10 + GT_DATA-VV220_20 + GT_DATA-VV220_30 . + 252| + 253| CLEAR : LV_PER. + 254| IF GT_DATA-VV100_40 NE 0. + 255| LV_PER = GT_DATA-VVPROFIT / GT_DATA-VV100_40. + 256| LV_PER = LV_PER * 100. + 257| ENDIF. + 258| WRITE LV_PER TO GT_DATA-PRF_PER LEFT-JUSTIFIED NO-GAP + 259| DECIMALS 2. + 260| + 261| IF GT_DATA-VVQ01_50 NE 0. + 262| GT_DATA-50_UNIT = GT_DATA-VV100_40 / GT_DATA-VVQ01_50. + 263| ENDIF. + 264| + 265| MODIFY GT_DATA. + 266| CLEAR : GT_DATA, GT_ZCOT0090, GT_ZCOT0110. + 267| ENDLOOP. +``` + +- **EN**: Enrich branch and item hierarchy texts, then compute cost/incentive/commission ratios to sales, gross profit and profit ratio, and unit price (sales / quantity) per row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- SAP 객체: ZCOT0090, ZCOT0110 +- 업무 키워드: 매출이익, 원가율, 장려금율, 수수료율, 객단가, 사업부, 지사, 품목군 +- English: Gross profit, Ratio, Unit price, Branch hierarchy, Item hierarchy +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor2010top-56-gt_data), [`GT_ZCOT0090`](#decl-zcor2010top-169-gt_zcot0090), [`GT_ZCOT0110`](#decl-zcor2010top-170-gt_zcot0110), [`LV_PER`](#decl-zcor2010f01-124-lv_per) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L203-L267` · confidence 0.9 · `ZCOR2010#ZCOR2010F01#FORM#EDIT_DATA#C4` + +#### [aggregation] GT_DATA 전체를 누적해 GS_SUM(총 매출액·원가·장려금·수수료·매출이익)과 각 비율(%)을 계산한다. + +```abap + 269| LOOP AT GT_DATA. + 270| GS_SUM-VV100_40 = GS_SUM-VV100_40 + GT_DATA-VV100_40. + 271| GS_SUM-VV220_10 = GS_SUM-VV220_10 + GT_DATA-VV220_10. + 272| GS_SUM-VV220_20 = GS_SUM-VV220_20 + GT_DATA-VV220_20. + 273| GS_SUM-VV220_30 = GS_SUM-VV220_30 + GT_DATA-VV220_30. + 274| GS_SUM-VVPROFIT = GS_SUM-VVPROFIT + GT_DATA-VVPROFIT. + 275| + 276| CLEAR : LV_PER. + 277| IF GS_SUM-VV100_40 NE 0. + 278| LV_PER = GS_SUM-VV220_10 / GS_SUM-VV100_40. + 279| LV_PER = LV_PER * 100. + 280| ENDIF. + 281| WRITE LV_PER TO GS_SUM-10_PER LEFT-JUSTIFIED NO-GAP + 282| DECIMALS 2. + 283| + 284| CLEAR : LV_PER. + 285| IF GS_SUM-VV100_40 NE 0. + 286| LV_PER = GS_SUM-VV220_20 / GS_SUM-VV100_40. + 287| LV_PER = LV_PER * 100. + 288| ENDIF. + 289| WRITE LV_PER TO GS_SUM-20_PER LEFT-JUSTIFIED NO-GAP + 290| DECIMALS 2. + 291| + 292| CLEAR : LV_PER. + 293| IF GS_SUM-VV100_40 NE 0. + 294| LV_PER = GS_SUM-VV220_30 / GS_SUM-VV100_40. + 295| LV_PER = LV_PER * 100. + 296| ENDIF. + 297| WRITE LV_PER TO GS_SUM-30_PER LEFT-JUSTIFIED NO-GAP + 298| DECIMALS 2. + 299| + 300| GS_SUM-VVPROFIT = GS_SUM-VV100_40 - + 301| GS_SUM-VV220_10 + GS_SUM-VV220_20 + GS_SUM-VV220_30 . + 302| + 303| CLEAR : LV_PER. + 304| IF GS_SUM-VV100_40 NE 0. + 305| LV_PER = GS_SUM-VVPROFIT / GS_SUM-VV100_40. + 306| LV_PER = LV_PER * 100. + 307| ENDIF. + 308| WRITE LV_PER TO GS_SUM-PRF_PER LEFT-JUSTIFIED NO-GAP + 309| DECIMALS 2. + 310| ENDLOOP. +``` + +- **EN**: Accumulate all rows into GS_SUM grand totals and recompute the cost/incentive/commission/profit ratios on the totals. +- 업무 키워드: 전체 합계, 합계 비율, 매출이익 +- English: Grand total, Ratio, Gross profit +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor2010top-56-gt_data), [`GS_SUM`](#decl-zcor2010top-96-gs_sum), [`LV_PER`](#decl-zcor2010f01-124-lv_per) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L269-L310` · confidence 0.85 · `ZCOR2010#ZCOR2010F01#FORM#EDIT_DATA#C5` + +### FORM CONVERT_1000_DOWN — `ZCOR2010F01` L86-L108 (23줄) + +*필드카탈로그의 통화(CURR) 타입 필드마다 GT_DATA 금액을 CONVERT_1000_D로 천원 단위로 낮춰 표시용으로 변환한다.* + +> 이 unit 의 조각 1개가 15/23줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GT_MAIN_FIELDCAT의 CURR 타입 필드마다 GT_DATA 행에 동적 ASSIGN하여 CONVERT_1000_D로 원 단위 금액을 천원 단위로 환산한다. + +```abap + 92| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT + 93| WHERE DATATYPE = 'CURR'. + 94| + 95| CONCATENATE '-' LS_FIELDCAT-FIELDNAME + 96| INTO LV_FIELD. + 97| + 98| LOOP AT GT_DATA ASSIGNING . + 99| ASSIGN (LV_FIELD) TO . + 100| + 101| IF SY-SUBRC EQ 0. + 102| PERFORM CONVERT_1000_D USING + 103| CHANGING . + 104| ENDIF. + 105| ENDLOOP. + 106| ENDLOOP. +``` + +- **EN**: For every CURR field in the field catalog dynamically assign the GT_DATA amount and scale it down to thousand KRW via CONVERT_1000_D. +- 호출(파서): CONVERT_1000_D +- SAP 객체: LVC_S_FCAT +- 업무 키워드: 천원 단위, 금액 환산, 동적 필드 +- English: Amount scaling, Thousand KRW, Field symbol +- 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcor2010top-39-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcor2010f01-87-ls_fieldcat), [`LV_FIELD`](#decl-zcor2010f01-90-lv_field), [`GT_DATA`](#decl-zcor2010top-56-gt_data), [``](#decl-zcor2010f01-89--fs_data-), [``](#decl-zcor2010f01-88--fs_field-) +- 위치: `abap://ZCOR2010/ZCOR2010F01#L92-L106` · confidence 0.85 · `ZCOR2010#ZCOR2010F01#FORM#CONVERT_1000_DOWN#C1` + +### EVENT END-OF-SELECTION — `ZCOR2010` L51-L62 (12줄) + +*온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* + +> 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. + +```abap + 52| IF SY-BATCH NE 'X'. + 53| IF GT_DATA[] IS NOT INITIAL. + 54| CALL SCREEN 100. + 55| ELSE. + 56| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. + 57| ENDIF. + 58| ELSE. + 59| IF GT_DATA[] IS NOT INITIAL. + 60| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. + 61| ENDIF. + 62| ENDIF... +``` + +- **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. +- 호출(파서): 100 +- SAP 객체: GT_DATA +- 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 +- English: CALL SCREEN, ALV, Batch Mode +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcor2010top-56-gt_data) +- 위치: `abap://ZCOR2010/ZCOR2010#L52-L62` · confidence 0.85 · `ZCOR2010#ZCOR2010#EVENT#END-OF-SELECTION#C1` + +### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 214| SELECT SINGLE * + 215| FROM T001 + 216| INTO L_T001 + 217| WHERE BUKRS = P_BUKRS. + 218| + 219| IF SY-SUBRC EQ 0. + 220| GV_WAERS = L_T001-WAERS. + 221| GV_KTOPL = L_T001-KTOPL. + 222| GV_SPRAS = L_T001-SPRAS. + 223| GV_WAERS = L_T001-WAERS. + 224| GV_BUKRS_TXT = L_T001-BUTXT. + 225| GV_LAND1 = L_T001-LAND1. + 226| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) + +*세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. + +```abap + 249| L_CLASS = PV_CLASS. + 250| + 251| CASE PV_CLASS. + 252| WHEN '0101'. " 코스트센터 + 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 254| WHEN '0102'. " 원가요소 + 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 256| WHEN '0103'. " 오더 + 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment + 259| WHEN '0106'. " 손익센터 + 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 261| WHEN '0109'. " 계정과목 + 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 263| ENDCASE. + 264| + 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 266| EXPORTING + 267| E_CLASS = L_CLASS + 268| E_SETID = L_SETID + 269| E_KOKRS = GC_KOKRS + 270| E_MANDT = SY-MANDT + 271| TABLES + 272| T_NODES = LT_NODE + 273| T_VALUES = GT_VALUE_SET + 274| CHANGING + 275| C_INFO = LT_GRPHINFO + 276| C_OVERWRITE = SY-DATAR + 277| EXCEPTIONS + 278| NO_CONTROLLING_AREA = 1 + 279| NO_CHART_OF_ACCOUNT = 2 + 280| DIFFERENT_CONTROLLING_AREAS = 3 + 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 282| SET_NOT_FOUND = 5 + 283| ILLEGAL_FIELD_REPLACEMENT = 6 + 284| ILLEGAL_TABLE_REPLACEMENT = 7 + 285| FM_RAISE = 8 + 286| CONVERT_ERROR = 9 + 287| NO_OVERWRITE_STANDARD_HIER = 10 + 288| NO_BUKRS_FOR_KOKRS = 11 + 289| OTHERS = 12. + 290| + 291| IF SY-SUBRC <> 0. + 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 293| * WITH P_SETNAME INTO L_MESSAGE. + 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. + 295| * LEAVE LIST-PROCESSING. + 296| ENDIF. +``` + +- **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 +- English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ +- 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 315| IF PV_DYNBEGIN = 'X'. + 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 319| + 320| APPEND LS_BDCTAB TO PT_BDCTAB. + 321| ELSE. + 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 324| + 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 326| EXIT. + 327| ENDIF. + 328| + 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 331| + 332| APPEND LS_BDCTAB TO PT_BDCTAB. + 333| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 448| EXPORTING + 449| DATE = P_IN_DATE + 450| EXCEPTIONS + 451| PLAUSIBILITY_CHECK_FAILED = 1 + 452| OTHERS = 2. + 453| + 454| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZCOR2010/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 498| L_NCNT1 = P_CNT1. + 499| L_NCNT2 = P_CNT2. + 500| + 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 502| GV_CALC_C0 = GV_CALC_I. + 503| + 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 505| GV_PROGRESS_MSG = P_TEXT. + 506| ELSE. + 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 509| CONDENSE GV_PROGRESS_MSG. + 510| ENDIF. + 511| + 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 513| EXPORTING + 514| PERCENTAGE = GV_CALC_I + 515| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 528| CL_SALV_TABLE=>FACTORY( + 529| IMPORTING + 530| R_SALV_TABLE = GR_TABLE + 531| CHANGING + 532| T_TABLE = PT_TABLE[] ). + 533| + 534| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 607| ASSIGN: (PT_EXCEL_TABLE) TO , + 608| (PS_EXCEL_STRUC) TO . + 609| + 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 611| EXPORTING + 612| FILENAME = PV_EXCEL_FILENAME + 613| I_BEGIN_COL = PV_BEGIN_COL + 614| I_BEGIN_ROW = PV_BEGIN_ROW + 615| I_END_COL = PV_END_COL + 616| I_END_ROW = PV_END_ROW + 617| TABLES + 618| INTERN = LT_INTERN + 619| EXCEPTIONS + 620| INCONSISTENT_PARAMETERS = 1 + 621| UPLOAD_OLE = 2 + 622| OTHERS = 3. + 623| + 624| IF SY-SUBRC <> 0. + 625| IF SY-MSGID IS INITIAL. + 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 627| LEAVE LIST-PROCESSING. + 628| ELSE. + 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 631| ENDIF. + 632| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 634| LOOP AT LT_INTERN. + 635| AT NEW ROW. + 636| CLEAR : . + 637| ENDAT. + 638| + 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 640| + 641| IF LT_INTERN-VALUE CO '0123456789,.- '. + 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 643| ENDIF. + 644| + 645| MOVE LT_INTERN-VALUE TO . + 646| + 647| AT END OF ROW. + 648| APPEND TO . + 649| ENDAT. + 650| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 707| EXPORTING + 708| MSGID = PS_MESSAGE-MSGID + 709| MSGNR = PS_MESSAGE-MSGNR + 710| MSGV1 = PS_MESSAGE-MSGV1 + 711| MSGV2 = PS_MESSAGE-MSGV2 + 712| MSGV3 = PS_MESSAGE-MSGV3 + 713| MSGV4 = PS_MESSAGE-MSGV4 + 714| IMPORTING + 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 716| + 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZCOR2010/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) + +*BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. + +```abap + 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 738| EXPORTING + 739| MSGID = PS_MESSAGE-ID + 740| MSGNR = PS_MESSAGE-NUMBER + 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 + 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 + 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 + 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 + 745| IMPORTING + 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 747| + 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 +- 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 +- English: BAPIRET2, Message Text +- 위치: `abap://ZCOR2010/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 803| + 804| LOOP AT PT_EXCEL_EXPORT. + 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 806| ENDLOOP. + 807| + 808| " 동적 테이블 생성 + 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 810| EXPORTING + 811| IT_FIELDCATALOG = LT_FCAT + 812| IMPORTING + 813| EP_TABLE = LF_DATA. + 814| + 815| ASSIGN LF_DATA->* TO . + 816| + 817| " 테이블 라인 생성 + 818| CREATE DATA LL_DATA LIKE LINE OF . + 819| ASSIGN LL_DATA->* TO . + 820| + 821| " 템플릿 내용 단 한라인만 등록 + 822| LOOP AT LT_FCAT INTO LS_FCAT. + 823| ASSIGN COMPONENT LS_FCAT-COL_POS + 824| OF STRUCTURE TO . + 825| + 826| IF SY-SUBRC EQ 0. + 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 828| ENDIF. + 829| ENDLOOP. + 830| + 831| " 테이블에 담기. + 832| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 837| + 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 839| EXPORTING + 840| DEFAULT_EXTENSION = 'XLS' + 841| DEFAULT_FILE_NAME = L_FNAME + 842| FILE_FILTER = '*.XLS' + 843| CHANGING + 844| FILENAME = L_EXT_FILENAME + 845| PATH = L_PATH + 846| FULLPATH = L_FULLPATH + 847| USER_ACTION = L_USR_ACT. + 848| + 849| IF L_USR_ACT = '0'. + 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 851| EXPORTING + 852| FILENAME = L_FULLPATH + 853| WRITE_FIELD_SEPARATOR = 'X' + 854| IMPORTING + 855| FILELENGTH = L_FILE_LEN + 856| CHANGING + 857| DATA_TAB = + 858| EXCEPTIONS + 859| FILE_WRITE_ERROR = 1 + 860| NO_BATCH = 2 + 861| GUI_REFUSE_FILETRANSFER = 3 + 862| INVALID_TYPE = 4 + 863| NO_AUTHORITY = 5 + 864| UNKNOWN_ERROR = 6 + 865| HEADER_NOT_ALLOWED = 7 + 866| SEPARATOR_NOT_ALLOWED = 8 + 867| FILESIZE_NOT_ALLOWED = 9 + 868| HEADER_TOO_LONG = 10 + 869| DP_ERROR_CREATE = 11 + 870| DP_ERROR_SEND = 12 + 871| DP_ERROR_WRITE = 13 + 872| UNKNOWN_DP_ERROR = 14 + 873| ACCESS_DENIED = 15 + 874| DP_OUT_OF_MEMORY = 16 + 875| DISK_FULL = 17 + 876| DP_TIMEOUT = 18 + 877| FILE_NOT_FOUND = 19 + 878| DATAPROVIDER_EXCEPTION = 20 + 879| CONTROL_FLUSH_ERROR = 21 + 880| OTHERS = 22. + 881| + 882| IF SY-SUBRC = 0. + 883| MESSAGE S000 WITH 'Success.'. + 884| ELSE. + 885| MESSAGE I000 WITH 'Failure'. + 886| ENDIF. + 887| ELSE. + 888| MESSAGE I000 WITH 'Cancled'. + 889| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 906| IF P_FCURR = P_LCURR. + 907| P_LAMT = P_FAMT. + 908| ELSE. + 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 910| EXPORTING + 911| CLIENT = SY-MANDT + 912| DATE = P_BUDAT + 913| FOREIGN_CURRENCY = P_FCURR + 914| FOREIGN_AMOUNT = P_FAMT + 915| LOCAL_CURRENCY = P_LCURR + 916| IMPORTING + 917| LOCAL_AMOUNT = P_LAMT + 918| EXCEPTIONS + 919| NO_RATE_FOUND = 01. + 920| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZCOR2010/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 936| CALL FUNCTION 'STRING_REPLACE' + 937| EXPORTING + 938| PATTERN = ',' + 939| SUBSTITUTE = '' + 940| CHANGING + 941| TEXT = P_VALUE. + 942| + 943| IF SY-SUBRC NE 0. + 944| + 945| ENDIF. + 946| + 947| LV_EXT = P_VALUE. + 948| + 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 950| EXPORTING + 951| CURRENCY = P_WAERS + 952| AMOUNT_EXTERNAL = LV_EXT + 953| MAX_NUMBER_OF_DIGITS = '11' + 954| IMPORTING + 955| AMOUNT_INTERNAL = LV_AMT. + 956| + 957| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 1016| EXPORTING + 1017| TEXTLINE1 = PV_QUESTION1 + 1018| TEXTLINE2 = PV_QUESTION2 + 1019| TITEL = PV_TITLE + 1020| IMPORTING + 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' + 1042| EXPORTING + 1043| TITLEBAR = P_TITLE + 1044| TEXT_QUESTION = P_TEXT + 1045| TEXT_BUTTON_1 = 'Yes' + 1046| TEXT_BUTTON_2 = 'No' + 1047| DEFAULT_BUTTON = P_DEFAULT + 1048| DISPLAY_CANCEL_BUTTON = P_CANC + 1049| IMPORTING + 1050| ANSWER = P_ANSWER + 1051| EXCEPTIONS + 1052| TEXT_NOT_FOUND = 1 + 1053| OTHERS = 2. + 1054| IF SY-SUBRC <> 0. + 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1057| CLEAR P_ANSWER. + 1058| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) + +*RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. + +```abap + 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1074| EXPORTING + 1075| DAY_IN = P_DATE + 1076| IMPORTING + 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월 말일 계산, 날짜 계산 +- English: Last Day of Month, Date +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1088| TRANSLATE PA_DSMOD TO UPPER CASE. + 1089| + 1090| IF PA_DSMOD NA 'AEN'. + 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1092| LEAVE LIST-PROCESSING. + 1093| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1113| CHECK P_FNAME IS NOT INITIAL. + 1114| + 1115| L_FILENM = P_FNAME. + 1116| + 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1118| EXPORTING + 1119| FILE = L_FILENM + 1120| RECEIVING + 1121| RESULT = L_RESULT + 1122| EXCEPTIONS + 1123| CNTL_ERROR = 1 + 1124| ERROR_NO_GUI = 2 + 1125| WRONG_PARAMETER = 3 + 1126| NOT_SUPPORTED_BY_GUI = 4 + 1127| OTHERS = 5. + 1128| IF SY-SUBRC <> 0. + 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1131| ENDIF. + 1132| + 1133| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1149| L_INTERNAL = P_AMOUNT. + 1150| + 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1152| EXPORTING + 1153| CURRENCY = P_WAERS + 1154| AMOUNT_EXTERNAL = L_INTERNAL + 1155| MAX_NUMBER_OF_DIGITS = 22 + 1156| IMPORTING + 1157| AMOUNT_INTERNAL = L_INTERNAL. + 1158| + 1159| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1179| LV_NRRANG = P_NRRANG. + 1180| LV_OBJECT = P_OBJECT. + 1181| + 1182| CALL FUNCTION 'NUMBER_GET_NEXT' + 1183| EXPORTING + 1184| NR_RANGE_NR = LV_NRRANG + 1185| OBJECT = LV_OBJECT + 1186| IMPORTING + 1187| NUMBER = P_DOCNO + 1188| EXCEPTIONS + 1189| INTERVAL_NOT_FOUND = 1 + 1190| NUMBER_RANGE_NOT_INTERN = 2 + 1191| OBJECT_NOT_FOUND = 3 + 1192| QUANTITY_IS_0 = 4 + 1193| QUANTITY_IS_NOT_1 = 5 + 1194| INTERVAL_OVERFLOW = 6 + 1195| BUFFER_OVERFLOW = 7 + 1196| OTHERS = 8. + 1197| IF SY-SUBRC <> 0. + 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1200| CLEAR P_DOCNO. + 1201| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1223| LV_NRRANG = P_NRRANG. + 1224| LV_OBJECT = P_OBJECT. + 1225| IF P_YEAR IS NOT INITIAL. + 1226| LV_YEAR = P_YEAR. + 1227| ELSE. + 1228| LV_YEAR = '0000'. + 1229| + 1230| ENDIF. + 1231| + 1232| CALL FUNCTION 'NUMBER_GET_NEXT' + 1233| EXPORTING + 1234| NR_RANGE_NR = LV_NRRANG + 1235| OBJECT = LV_OBJECT + 1236| TOYEAR = LV_YEAR + 1237| IMPORTING + 1238| NUMBER = P_DOCNO + 1239| EXCEPTIONS + 1240| INTERVAL_NOT_FOUND = 1 + 1241| NUMBER_RANGE_NOT_INTERN = 2 + 1242| OBJECT_NOT_FOUND = 3 + 1243| QUANTITY_IS_0 = 4 + 1244| QUANTITY_IS_NOT_1 = 5 + 1245| INTERVAL_OVERFLOW = 6 + 1246| BUFFER_OVERFLOW = 7 + 1247| OTHERS = 8. + 1248| IF SY-SUBRC <> 0. + 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1251| CLEAR P_DOCNO. + 1252| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1266| SELECT DOMVALUE_L DDTEXT + 1267| INTO TABLE P_TAB + 1268| FROM DD07T + 1269| WHERE DOMNAME EQ P_DOMAIN + 1270| AND DDLANGUAGE EQ SY-LANGU + 1271| AND AS4LOCAL EQ 'A'. + 1272| IF SY-SUBRC EQ 0. + 1273| SORT P_TAB. + 1274| ELSE. + 1275| REFRESH P_TAB. + 1276| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1289| SELECT DOMNAME DOMVALUE_L DDTEXT + 1290| APPENDING TABLE GT_DOMAIN + 1291| FROM DD07T + 1292| WHERE DOMNAME = P_DOMNA + 1293| AND DDLANGUAGE = SY-LANGU + 1294| AND AS4LOCAL = 'A'. + 1295| + 1296| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1317| IF P_MENGE IS INITIAL. + 1318| CLEAR PV_MENGE. + 1319| EXIT. + 1320| ELSEIF P_IN_ME EQ P_OUT_ME. + 1321| PV_MENGE = P_MENGE. + 1322| EXIT. + 1323| ENDIF. + 1324| + 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1326| EXPORTING + 1327| I_MATNR = P_MATNR + 1328| I_IN_ME = P_IN_ME + 1329| I_OUT_ME = P_OUT_ME + 1330| I_MENGE = P_MENGE + 1331| IMPORTING + 1332| E_MENGE = PV_MENGE + 1333| EXCEPTIONS + 1334| ERROR_IN_APPLICATION = 1 + 1335| ERROR = 2 + 1336| OTHERS = 3. + 1337| IF SY-SUBRC <> 0. + 1338| CLEAR PV_MENGE. + 1339| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1352| EXPORTING + 1353| TITLE_TEXT = P_TITLE + 1354| SORT_BY_LEVEL = ' ' + 1355| SHOW_IDS = 'X' + 1356| MESSAGE_LIST = GT_HEAMSG + 1357| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1377| EXPORTING + 1378| WINDOW_TITLE = 'Upload' + 1379| MULTISELECTION = ' ' + 1380| DEFAULT_EXTENSION = 'XLS' + 1381| DEFAULT_FILENAME = ' ' + 1382| FILE_FILTER = '*.XLS' + 1383| CHANGING + 1384| FILE_TABLE = LT_FILETABLE + 1385| RC = RTN_CODE + 1386| USER_ACTION = USER_ACTION. + 1387| + 1388| CALL METHOD CL_GUI_CFW=>FLUSH. + 1389| + 1390| CASE USER_ACTION. + 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1393| CHECK SY-SUBRC IS INITIAL. + 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1395| + 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1397| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1416| EXPORTING + 1417| FILE = LV_FILE + 1418| RECEIVING + 1419| RESULT = LV_RESULT. + 1420| + 1421| IF NOT SY-SUBRC IS INITIAL. + 1422| + 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1425| + 1426| ELSEIF LV_RESULT IS INITIAL. + 1427| + 1428| MESSAGE S001(00) WITH 'Please check your file path'. + 1429| LEAVE LIST-PROCESSING. + 1430| + 1431| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1550| SELECT SINGLE AENNR + 1551| INTO P_AENNR + 1552| FROM AENR + 1553| WHERE AENNR EQ P_AENNR. + 1554| IF SY-SUBRC EQ 0. + 1555| P_MSGTY = 'S'. + 1556| EXIT. + 1557| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1560| CLEAR : GS_BDC_OPTION. + 1561| + 1562| GS_BDC_OPTION-DISMODE = 'N'. + 1563| GS_BDC_OPTION-UPDMODE = 'S'. + 1564| + 1565| PERFORM DYNPRO TABLES PT_TABLES USING: + 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1567| ' ' 'BDC_OKCODE' '/00', + 1568| ' ' 'RC29A-AENNR' P_AENNR, + 1569| + 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1571| ' ' 'BDC_OKCODE' '/00', + 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1576| + 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1578| ' ' 'BDC_OKCODE' '=ENT1', + 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1580| + 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1582| ' ' 'BDC_OKCODE' '=ENT1', + 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1584| + 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1586| ' ' 'BDC_OKCODE' '=ENT1', + 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1588| + 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1590| ' ' 'BDC_OKCODE' '/00', + 1591| + 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1593| ' ' 'BDC_OKCODE' '=FCBU'. + 1594| + 1595| CALL TRANSACTION 'CC01' + 1596| USING GT_BDCDATA[] + 1597| OPTIONS FROM GS_BDC_OPTION + 1598| MESSAGES INTO GT_MESSTAB[]. + 1599| + 1600| *-- 메시지 처리 + 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1602| MSGID = 'CC' + 1603| MSGNR = '001'. + 1604| IF SY-SUBRC EQ 0. + 1605| P_MSGTY = 'S'. + 1606| ELSE. + 1607| P_MSGTY = 'E'. + 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1609| CHANGING P_MSGTX. + 1610| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1634| + 1635| CALL FUNCTION 'DYNP_VALUES_READ' + 1636| EXPORTING + 1637| DYNAME = LV_DYNAME + 1638| DYNUMB = LV_DYNUM + 1639| TABLES + 1640| DYNPFIELDS = LT_DYNPFIELDS + 1641| EXCEPTIONS + 1642| INVALID_ABAPWORKAREA = 1 + 1643| INVALID_DYNPROFIELD = 2 + 1644| INVALID_DYNPRONAME = 3 + 1645| INVALID_DYNPRONUMMER = 4 + 1646| INVALID_REQUEST = 5 + 1647| NO_FIELDDESCRIPTION = 6 + 1648| INVALID_PARAMETER = 7 + 1649| UNDEFIND_ERROR = 8 + 1650| DOUBLE_CONVERSION = 9 + 1651| STEPL_NOT_FOUND = 10 + 1652| OTHERS = 11. + 1653| + 1654| IF SY-SUBRC <> 0. + 1655| EXIT. + 1656| + 1657| ELSE. + 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1659| WITH KEY FIELDNAME = P_FIELD. + 1660| IF SY-SUBRC EQ 0. + 1661| ASSIGN (P_FIELD) TO . + 1662| IF IS ASSIGNED. + 1663| = LS_DYNPFIELDS-FIELDVALUE. + 1664| ENDIF. + 1665| ENDIF. + 1666| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1691| + 1692| ASSIGN (P_FIELD) TO . + 1693| IF IS ASSIGNED. + 1694| LS_DYNPFIELDS-FIELDVALUE = . + 1695| ENDIF. + 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1697| + 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1699| EXPORTING + 1700| DYNAME = LV_DYNAME + 1701| DYNUMB = LV_DYNUM + 1702| TABLES + 1703| DYNPFIELDS = LT_DYNPFIELDS + 1704| EXCEPTIONS + 1705| INVALID_ABAPWORKAREA = 1 + 1706| INVALID_DYNPROFIELD = 2 + 1707| INVALID_DYNPRONAME = 3 + 1708| INVALID_DYNPRONUMMER = 4 + 1709| INVALID_REQUEST = 5 + 1710| NO_FIELDDESCRIPTION = 6 + 1711| UNDEFIND_ERROR = 7 + 1712| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1730| ID 'TCD' FIELD SY-TCODE. + 1731| + 1732| IF SY-SUBRC NE 0. + 1733| MESSAGE E077(S#) WITH SY-TCODE. + 1734| ELSEIF SY-TCODE CP '*1'. + 1735| GV_DIP_MOD = 'X'. + 1736| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1792| LT_OTF[] = P_JOB-OTFDATA. + 1793| + 1794| CALL FUNCTION 'CONVERT_OTF' + 1795| EXPORTING + 1796| FORMAT = 'PDF' + 1797| IMPORTING + 1798| BIN_FILESIZE = LV_BIN_FILESIZE + 1799| BIN_FILE = LV_BIN_FILE + 1800| TABLES + 1801| OTF = LT_OTF + 1802| LINES = LT_LINES + 1803| EXCEPTIONS + 1804| ERR_MAX_LINEWIDTH = 1 + 1805| ERR_FORMAT = 2 + 1806| ERR_CONV_NOT_POSSIBLE = 3 + 1807| ERR_BAD_OTF = 4 + 1808| OTHERS = 5. + 1809| + 1810| LOOP AT LT_OTF. + 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1812| APPEND LS_OTF TO LT_CONTENT_TXT. + 1813| ENDLOOP. + 1814| + 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1816| EXPORTING + 1817| FORMAT_SRC = 'OTF' + 1818| FORMAT_DST = 'PDF' + 1819| DEVTYPE = 'PRINTER' + 1820| CHANGING + 1821| TRANSFER_BIN = LV_TRANSFER_BIN + 1822| CONTENT_TXT = LT_CONTENT_TXT + 1823| CONTENT_BIN = LT_CONTENT_BIN + 1824| OBJHEAD = LT_OBJHEAD + 1825| LEN = LV_LEN_IN + 1826| EXCEPTIONS + 1827| ERR_CONV_FAILED = 1 + 1828| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1831| LV_FILESIZE = LV_LEN_IN. + 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1833| + 1834| CALL FUNCTION 'GUI_DOWNLOAD' + 1835| EXPORTING + 1836| BIN_FILESIZE = LV_FILESIZE + 1837| FILENAME = LV_FILENAME + 1838| FILETYPE = 'BIN' + 1839| TABLES + 1840| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1868| LV_DEFAULT_EXTENSION = P_EXT. + 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1870| LV_INITIAL_DIRECTORY = 'C:\'. + 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1874| INTO LV_FILE_FILTER. + 1875| + 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1877| EXPORTING + 1878| * WINDOW_TITLE + 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1881| * WITH_ENCODING = ABAP_TRUE + 1882| FILE_FILTER = LV_FILE_FILTER + 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1884| CHANGING + 1885| FILENAME = LV_FILENAME + 1886| PATH = LV_PATH + 1887| FULLPATH = LV_FULLPATH + 1888| USER_ACTION = LV_USER_ACTION + 1889| EXCEPTIONS + 1890| CNTL_ERROR = 2 + 1891| ERROR_NO_GUI = 3 + 1892| NOT_SUPPORTED_BY_GUI = 4 + 1893| OTHERS = 5. + 1894| IF SY-SUBRC <> 0. + 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1897| EXIT. + 1898| ELSE. + 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1900| EXIT. + 1901| ENDIF. + 1902| + 1903| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1924| ASSIGN : (PT_EXCEL_TABLE) TO . + 1925| ASSIGN : (PS_EXCEL_STRUC) TO . + 1926| + 1927| LOOP AT PT_INTERN. + 1928| AT NEW ROW. + 1929| CLEAR : . + 1930| ENDAT. + 1931| + 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1933| + 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1936| ENDIF. + 1937| + 1938| MOVE PT_INTERN-VALUE TO . + 1939| + 1940| AT END OF ROW. + 1941| APPEND TO . + 1942| ENDAT. + 1943| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1960| CALL FUNCTION 'POSTING_INTERFACE_START' + 1961| EXPORTING + 1962| I_FUNCTION = 'C' " Using Call Transaction + 1963| I_KEEP = 'Y' + 1964| I_MODE = P_MODE + 1965| I_UPDATE = 'S' + 1966| EXCEPTIONS + 1967| CLIENT_INCORRECT = 1 + 1968| FUNCTION_INVALID = 2 + 1969| GROUP_NAME_MISSING = 3 + 1970| MODE_INVALID = 4 + 1971| UPDATE_INVALID = 5 + 1972| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1981| CALL FUNCTION 'POSTING_INTERFACE_END' + 1982| EXPORTING + 1983| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZCOR2010/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 2004| CHECK FVAL NE SPACE. + 2005| + 2006| FTPOST-FNAM = FNAM. + 2007| FTPOST-STYPE = GV_FTPOST_TYPE. + 2008| FTPOST-COUNT = GV_FTPOST_CNT. + 2009| + 2010| " 금액 필드일 경우. + 2011| IF FCURR_X = 'X'. + 2012| WRITE FVAL TO LV_CURR CURRENCY + 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 2014| CONDENSE LV_CURR NO-GAPS. + 2015| WRITE LV_CURR TO FTPOST-FVAL. + 2016| ELSE. + 2017| WRITE FVAL TO FTPOST-FVAL. + 2018| ENDIF. + 2019| + 2020| APPEND FTPOST. + 2021| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOR2010#ZCO_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 2038| EXPORTING + 2039| MSGID = PS_MESSAGE-MSGID + 2040| MSGNR = PS_MESSAGE-MSGNO + 2041| MSGV1 = PS_MESSAGE-MSGV1 + 2042| MSGV2 = PS_MESSAGE-MSGV2 + 2043| MSGV3 = PS_MESSAGE-MSGV3 + 2044| MSGV4 = PS_MESSAGE-MSGV4 + 2045| IMPORTING + 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2063| EXPORTING + 2064| I_BUKRS = PV_BUKRS + 2065| I_BUDAT = PV_DATE + 2066| IMPORTING + 2067| E_GJAHR = P_LFGJA + 2068| E_MONAT = P_LFMON + 2069| EXCEPTIONS + 2070| FISCAL_YEAR = 1 + 2071| PERIOD = 2 + 2072| PERIOD_VERSION = 3 + 2073| POSTING_PERIOD = 4 + 2074| SPECIAL_PERIOD = 5 + 2075| VERSION = 6 + 2076| POSTING_DATE = 7 + 2077| OTHERS = 8. + 2078| + 2079| IF SY-SUBRC NE 0. + 2080| P_LFGJA = PV_DATE(4). + 2081| P_LFMON = PV_DATE+4(2). + 2082| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) + +*CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. + +```abap + 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + 2111| EXPORTING + 2112| CURRENCY = P_WAERS + 2113| IDOC_AMOUNT = P_VALUE + 2114| IMPORTING + 2115| SAP_AMOUNT = P_VALUE. +``` + +- **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. +- 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP +- SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` + +### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) + +*CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. + +```abap + 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + 2129| EXPORTING + 2130| CURRENCY = P_WAERS + 2131| SAP_AMOUNT = P_VALUE + 2132| IMPORTING + 2133| IDOC_AMOUNT = P_DOC_VALUE. +``` + +- **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. +- 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC +- SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC +- 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 +- English: Currency Conversion, IDoc Amount, BAPI Amount +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` + +### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) + +*TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. + +```abap + 2171| SELECT SINGLE TXT + 2172| INTO P_VERSN_TXT + 2173| FROM TKT09 + 2174| WHERE KOKRS = P_KOKRS + 2175| AND VERSN = P_VERSN + 2176| AND LANGU = SY-LANGU. +``` + +- **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. +- 테이블(파서): read [TKT09](/tables/TKT09.md) / write - +- SAP 객체: TKT09 +- 업무 키워드: 계획 버전 텍스트, 관리회계영역 +- English: Plan Version, TKT09, Controlling Area +- 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcor2010top-193-p_kokrs) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` + +### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. + +```abap + 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 2204| EXPORTING + 2205| FILENAME = P_FILE + 2206| I_BEGIN_COL = P_SCOL + 2207| I_BEGIN_ROW = P_SROW + 2208| I_END_COL = P_ECOL + 2209| I_END_ROW = P_EROW + 2210| TABLES + 2211| INTERN = LT_INTERN + 2212| EXCEPTIONS + 2213| INCONSISTENT_PARAMETERS = 1 + 2214| UPLOAD_OLE = 2 + 2215| OTHERS = 3. + 2216| + 2217| IF SY-SUBRC <> 0. + 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2219| WRITE:/ 'Error Uploading file'. + 2220| EXIT. + 2221| ENDIF. + 2222| + 2223| IF LT_INTERN[] IS INITIAL. + 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. + 2225| WRITE:/ 'No Data Uploaded'. + 2226| EXIT. +``` + +- **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 +- English: Excel Upload, OLE, File Read +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOR2010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` + +#### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. + +```abap + 2228| SORT LT_INTERN BY ROW COL. + 2229| LOOP AT LT_INTERN. + 2230| MOVE LT_INTERN-COL TO LV_INDEX. + 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . + 2232| + 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. + 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 2235| ENDIF. + 2236| + 2237| MOVE LT_INTERN-VALUE TO . + 2238| AT END OF ROW. + 2239| APPEND P_TABLE. + 2240| CLEAR P_TABLE. + 2241| ENDAT. + 2242| ENDLOOP. +``` + +- **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. +- SAP 객체: ALSMEX_TABLINE +- 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) +- 위치: `abap://ZCOR2010/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOR2010#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZCOR2010I01` L6-L28 (23줄) + +*화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| + 24| WHEN OTHERS. + 25| * LEAVE PROGRAM. + 26| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제, 뒤로가기 +- English: OK code, PAI, ALV container, LEAVE TO SCREEN +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcor2010top-16-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcor2010c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) +- 위치: `abap://ZCOR2010/ZCOR2010I01#L9-L26` · confidence 0.85 · `ZCOR2010#ZCOR2010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (314건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZCOR2010C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcor2010c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZCOR2010TOP` (47건) + +#### IBRTT — type-pool · L1-L1 {#decl-zcor2010top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zcor2010top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zcor2010top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zcor2010top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zcor2010top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zcor2010top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### COSP — tables · L4-L4 {#decl-zcor2010top-4-cosp} + +```abap +TABLES : DD03L, COSP. +``` + +#### DD03L — tables · L4-L4 {#decl-zcor2010top-4-dd03l} + +```abap +TABLES : DD03L, COSP. +``` + +#### CE01000 — tables · L5-L5 {#decl-zcor2010top-5-ce01000} + +```abap +TABLES : CE01000. +``` + +#### GV_OK_CODE — data · L15-L15 {#decl-zcor2010top-15-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L16-L16 {#decl-zcor2010top-16-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L18-L18 {#decl-zcor2010top-18-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L22-L22 {#decl-zcor2010top-22-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L23-L23 {#decl-zcor2010top-23-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L24-L24 {#decl-zcor2010top-24-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L25-L25 {#decl-zcor2010top-25-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GC_MAIN_ITAB_NAME — constants · L29-L30 {#decl-zcor2010top-29-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GC_UPLOAD_STRUCT — constants · L31-L32 {#decl-zcor2010top-31-gc_upload_struct} + +```abap +CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME + VALUE 'ZCO_STRUC1'. +``` + +#### GC_MEINS — constants · L33-L33 {#decl-zcor2010top-33-gc_meins} + +```abap +CONSTANTS : GC_MEINS TYPE CE01000-MEINH VALUE 'EA'. +``` + +#### GT_MAIN_FIELDCAT — data · L39-L39 {#decl-zcor2010top-39-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L44-L44 {#decl-zcor2010top-44--gf_uploadt-} + +```abap +FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · L45-L45 {#decl-zcor2010top-45--gf_uploads-} + +```abap +FIELD-SYMBOLS : TYPE ANY. +``` + +#### GF_UPLOADT — data · L47-L47 {#decl-zcor2010top-47-gf_uploadt} + +```abap +DATA : GF_UPLOADT TYPE REF TO DATA. +``` + +#### GF_UPLOADS — data · L48-L48 {#decl-zcor2010top-48-gf_uploads} + +```abap +DATA : GF_UPLOADS TYPE REF TO DATA. +``` + +#### GT_UPLD_FCAT — data · L50-L50 {#decl-zcor2010top-50-gt_upld_fcat} + +```abap +DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. +``` + +#### GS_UPLD_FCAT — data · L51-L51 {#decl-zcor2010top-51-gs_upld_fcat} + +```abap +DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_DATA — data · L56-L94 {#decl-zcor2010top-56-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0, + WW120 LIKE ZCOT0090-WW120, + WW100 LIKE ZCOT0090-WW100, + WW110 LIKE ZCOT0090-WW110, + WW120_TEXT LIKE ZCOT0090-WW120_TEXT, + WW100_TEXT LIKE ZCOT0090-WW100_TEXT, + WW110_TEXT LIKE ZCOT0090-WW110_TEXT, + + WW200 LIKE ZCOT0110-WW200, + WW210 LIKE ZCOT0110-WW210, + WW220 LIKE ZCOT0110-WW220, + + WW200_TEXT LIKE ZCOT0110-WW200_TEXT, + WW210_TEXT LIKE ZCOT0110-WW210_TEXT, + WW220_TEXT LIKE ZCOT0110-WW220_TEXT, + + VV100_40 LIKE ZCOT0160-MONTH01, " 매출액 + VV220_10 LIKE ZCOT0200-MONTH01, " 매출원가 + 10_PER TYPE ZE4PERCENT, " 매출원가/매출액 % + VV220_20 LIKE ZCOT0200-MONTH01, " 장려금 + 20_PER TYPE ZE4PERCENT, " 장려금/매출액 % + VV220_30 LIKE ZCOT0200-MONTH01, " 수수료 + 30_PER TYPE ZE4PERCENT, " 수수료/매출액 % + VVPROFIT LIKE ZCOT0160-MONTH01, " 매출이익매출액-(매출원가+장려금+수수료) + PRF_PER TYPE ZE4PERCENT, " 매출액-(매출원가+장려금+수수료) / 매출원가% + VVQ01_50 LIKE ZCOT0190-MONTH01, " 판매수량 + 50_UNIT LIKE ZCOT0160-MONTH01, + + REC_WAERS LIKE ZCOT0160-REC_WAERS, + MEINS LIKE ZCOT0170-MEINS, + + EXCEL_LINE TYPE I, +* MARK TYPE C , + STATUS LIKE ICON-ID, +* F_COL TYPE LVC_T_SCOL, +* CELLTAB TYPE LVC_T_STYL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +* MSG_LIST TYPE ZMSG_T_S, +END OF GT_DATA. +``` + +#### GS_SUM — data · L96-L96 {#decl-zcor2010top-96-gs_sum} + +```abap +DATA : GS_SUM LIKE GT_DATA. +``` + +#### GS_DATA — data · L98-L98 {#decl-zcor2010top-98-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_LOG_POP — data · L100-L105 {#decl-zcor2010top-100-gt_log_pop} + +```abap +DATA : BEGIN OF GT_LOG_POP OCCURS 0, + STATUS LIKE ICON-ID, + KOSTL LIKE CSKS-KOSTL, +* F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_LOG_POP. +``` + +#### W_POPUP_GRID — data · L108-L108 {#decl-zcor2010top-108-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### GS_MSG_T_S — data · L110-L110 {#decl-zcor2010top-110-gs_msg_t_s} + +```abap +DATA : GS_MSG_T_S TYPE ZMSG_S_S. +``` + +#### GT_ZCOT0160 — data · L114-L114 {#decl-zcor2010top-114-gt_zcot0160} + +```abap +DATA : GT_ZCOT0160 LIKE ZCOT0160 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0170 — data · L116-L116 {#decl-zcor2010top-116-gt_zcot0170} + +```abap +DATA : GT_ZCOT0170 LIKE ZCOT0170 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0180 — data · L118-L118 {#decl-zcor2010top-118-gt_zcot0180} + +```abap +DATA : GT_ZCOT0180 LIKE ZCOT0180 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0190 — data · L120-L120 {#decl-zcor2010top-120-gt_zcot0190} + +```abap +DATA : GT_ZCOT0190 LIKE ZCOT0190 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0200 — data · L122-L122 {#decl-zcor2010top-122-gt_zcot0200} + +```abap +DATA : GT_ZCOT0200 LIKE ZCOT0200 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0210 — data · L124-L124 {#decl-zcor2010top-124-gt_zcot0210} + +```abap +DATA : GT_ZCOT0210 LIKE ZCOT0210 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_SEL_VV100 — data · L126-L146 {#decl-zcor2010top-126-gt_sel_vv100} + +```abap +DATA : BEGIN OF GT_SEL_VV100 OCCURS 0, + KOKRS LIKE ZCOT0160-KOKRS, + GJAHR LIKE ZCOT0160-GJAHR, + WW120 LIKE ZCOT0160-WW120, + WW220 LIKE ZCOT0180-WW220, + MONTH01 LIKE ZCOT0160-MONTH01, + MONTH02 LIKE ZCOT0160-MONTH01, + MONTH03 LIKE ZCOT0160-MONTH01, + MONTH04 LIKE ZCOT0160-MONTH01, + MONTH05 LIKE ZCOT0160-MONTH01, + MONTH06 LIKE ZCOT0160-MONTH01, + MONTH07 LIKE ZCOT0160-MONTH01, + MONTH08 LIKE ZCOT0160-MONTH01, + MONTH09 LIKE ZCOT0160-MONTH01, + MONTH10 LIKE ZCOT0160-MONTH01, + MONTH11 LIKE ZCOT0160-MONTH01, + MONTH12 LIKE ZCOT0160-MONTH01, + REC_WAERS LIKE ZCOT0160-REC_WAERS, + " 40: 매출액, 10 : 매출원가, 20 : 장려금 30 : 판매수수료 + COST_GUBUN LIKE ZCOT0160-COST_GUBUN, +END OF GT_SEL_VV100. +``` + +#### GT_SEL_VVQ01 — data · L148-L167 {#decl-zcor2010top-148-gt_sel_vvq01} + +```abap +DATA : BEGIN OF GT_SEL_VVQ01 OCCURS 0, + KOKRS LIKE ZCOT0170-KOKRS, + GJAHR LIKE ZCOT0170-GJAHR, + WW120 LIKE ZCOT0170-WW120, + WW220 LIKE ZCOT0190-WW220, + MONTH01 LIKE ZCOT0170-MONTH01, + MONTH02 LIKE ZCOT0170-MONTH01, + MONTH03 LIKE ZCOT0170-MONTH01, + MONTH04 LIKE ZCOT0170-MONTH01, + MONTH05 LIKE ZCOT0170-MONTH01, + MONTH06 LIKE ZCOT0170-MONTH01, + MONTH07 LIKE ZCOT0170-MONTH01, + MONTH08 LIKE ZCOT0170-MONTH01, + MONTH09 LIKE ZCOT0170-MONTH01, + MONTH10 LIKE ZCOT0170-MONTH01, + MONTH11 LIKE ZCOT0170-MONTH01, + MONTH12 LIKE ZCOT0170-MONTH01, + MEINS LIKE ZCOT0170-MEINS, + COST_GUBUN LIKE ZCOT0160-COST_GUBUN, +END OF GT_SEL_VVQ01. +``` + +#### GT_ZCOT0090 — data · L169-L169 {#decl-zcor2010top-169-gt_zcot0090} + +```abap +DATA : GT_ZCOT0090 LIKE ZCOT0090 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZCOT0110 — data · L170-L170 {#decl-zcor2010top-170-gt_zcot0110} + +```abap +DATA : GT_ZCOT0110 LIKE ZCOT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### PR_120 — parameter · L180-L181 {#decl-zcor2010top-180-pr_120} + +```abap +PARAMETER : PR_120 TYPE C RADIOBUTTON GROUP RG1 DEFAULT 'X' + USER-COMMAND UC1. +``` + +#### PR_220 — parameter · L183-L183 {#decl-zcor2010top-183-pr_220} + +```abap +PARAMETER : PR_220 TYPE C RADIOBUTTON GROUP RG1. +``` + +#### P_KOKRS — parameter · L193-L194 {#decl-zcor2010top-193-p_kokrs} + +```abap +PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### P_GJAHR — parameter · L199-L200 {#decl-zcor2010top-199-p_gjahr} + +```abap +PARAMETER : P_GJAHR LIKE COSP-GJAHR DEFAULT SY-DATUM+0(4) + OBLIGATORY. +``` + +#### S_PERDE — select-option · L202-L204 {#decl-zcor2010top-202-s_perde} + +```abap +SELECT-OPTIONS : S_PERDE FOR CE01000-PERDE NO-EXTENSION OBLIGATORY + DEFAULT SY-DATUM+4(2) + MODIF ID MG2. +``` + +### `ZCO_ALV` (123건) + +#### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} + +```abap +CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. +``` + +#### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +### `ZCO_COMMON` (132건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. +``` + +#### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} + +```abap +DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. +``` + +#### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +#### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} + +```abap + DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} + +```abap + DATA : LV_INDEX TYPE I. +``` + +#### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} + +```abap + FIELD-SYMBOLS : . +``` + +### `ZCOR2010F01` (11건) + +#### LS_FIELDCAT — data · unit 로컬 · L87-L87 {#decl-zcor2010f01-87-ls_fieldcat} + +```abap + DATA : LS_FIELDCAT TYPE LVC_S_FCAT. +``` + +#### — field-symbol · unit 로컬 · L88-L88 {#decl-zcor2010f01-88--fs_field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L89-L89 {#decl-zcor2010f01-89--fs_data-} + +```abap + FIELD-SYMBOLS : LIKE GT_DATA. +``` + +#### LV_FIELD — data · unit 로컬 · L90-L90 {#decl-zcor2010f01-90-lv_field} + +```abap + DATA : LV_FIELD(30) TYPE C. +``` + +#### LV_BUFFER1 — data · unit 로컬 · L118-L118 {#decl-zcor2010f01-118-lv_buffer1} + +```abap + DATA : LV_BUFFER1 LIKE ZCOT0160-MONTH01. +``` + +#### LV_VV100 — data · unit 로컬 · L119-L119 {#decl-zcor2010f01-119-lv_vv100} + +```abap + DATA : LV_VV100 LIKE ZCOT0160-MONTH01. +``` + +#### LV_VVQ01 — data · unit 로컬 · L120-L120 {#decl-zcor2010f01-120-lv_vvq01} + +```abap + DATA : LV_VVQ01 LIKE ZCOT0170-MONTH01. +``` + +#### LV_BUFFER2 — data · unit 로컬 · L121-L121 {#decl-zcor2010f01-121-lv_buffer2} + +```abap + DATA : LV_BUFFER2 LIKE ZCOT0170-MONTH01. +``` + +#### LV_START — data · unit 로컬 · L122-L122 {#decl-zcor2010f01-122-lv_start} + +```abap + DATA : LV_START LIKE SY-TABIX. +``` + +#### LV_END — data · unit 로컬 · L123-L123 {#decl-zcor2010f01-123-lv_end} + +```abap + DATA : LV_END LIKE SY-TABIX. +``` + +#### LV_PER — data · unit 로컬 · L124-L124 {#decl-zcor2010f01-124-lv_per} + +```abap + DATA : LV_PER TYPE P DECIMALS 4. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZCOR2010 L26-31 | 0 | 프로그램 초기화 시 화면 기본값 설정(SET_DYNP)을 수행한다. | +| AT SELECTION-SCREEN | EVENT | ZCOR2010 L32-33 | 0 | AT SELECTION-SCREEN 이벤트 선언만 있고 처리 로직이 없다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZCOR2010 L34-43 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN으로 화면 필드 속성을 조정한다. | +| START-OF-SELECTION | EVENT | ZCOR2010 L44-50 | 0 | 초기화(INITIALIZE_DATA)와 데이터 처리(PROCESS_DATA)를 호출하는 메인 이벤트이다. | +| END-OF-SELECTION | EVENT | ZCOR2010 L51-62 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOR2010C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOR2010C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOR2010C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOR2010C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOR2010C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOR2010C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOR2010C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOR2010C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOR2010C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZCOR2010C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZCOR2010C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZCOR2010C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZCOR2010C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZCOR2010C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZCOR2010C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZCOR2010C01 L210-214 | 0 | | +| ON_F4 | FORM | ZCOR2010C01 L228-244 | 0 | | +| ON_F4_100 | FORM | ZCOR2010C01 L258-276 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZCOR2010C01 L286-356 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZCOR2010C01 L366-431 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZCOR2010C01 L443-461 | 0 | | +| FILL_FCAT | FORM | ZCOR2010C01 L475-556 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZCOR2010C01 L567-617 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZCOR2010C01 L629-690 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZCOR2010C01 L700-710 | 0 | | +| HANDLE_TOP_OF_PAGE | FORM | ZCOR2010C01 L719-724 | 0 | | +| LOOP_AT_SCREEN | FORM | ZCOR2010F01 L6-15 | 0 | 선택화면에서 그룹 MG1 필드를 입력 불가로 만드는 화면 속성 설정이다. | +| SET_DYNP | FORM | ZCOR2010F01 L22-25 | 0 | 화면 초기화 시 관리회계영역 기본값과 텍스트(P_BEZEI)를 설정한다. | +| INITIALIZE_DATA | FORM | ZCOR2010F01 L31-48 | 0 | 관리회계영역 텍스트 설정, 메인 ALV 필드카탈로그 취득 및 상태 플래그 초기화를 수행한다. | +| PROCESS_DATA | FORM | ZCOR2010F01 L54-57 | 0 | 판매계획 조회(SELECT_DATA)와 편집(EDIT_DATA)을 호출하는 단순 래퍼이다. | +| SELECT_DATA | FORM | ZCOR2010F01 L66-80 | 1 | 지점별(PR_120) 또는 품목(중)별(PR_220) 조회 옵션에 따라 대응하는 판매계획 테이블 세트를 SELECT_TABLE로 읽어 금액·수량 원본 테이블을 채운다. | +| CONVERT_1000_DOWN | FORM | ZCOR2010F01 L86-108 | 1 | 필드카탈로그의 통화(CURR) 타입 필드마다 GT_DATA 금액을 CONVERT_1000_D로 천원 단위로 낮춰 표시용으로 변환한다. | +| EDIT_DATA | FORM | ZCOR2010F01 L117-314 | 5 | 지점/품목 특성 마스터를 읽고 판매계획 금액·수량 원본을 선택 월 구간으로 합산해 COST_GUBUN별 컬럼으로 COLLECT한 뒤 특성 텍스트, 원가·장려금·수수료 비율, 매출이익, 객단가와 전체 합계를 계산하고 천원 단위로 변환한다. | +| SELECT_TABLE | FORM | ZCOR2010F01 L323-337 | 1 | 테이블명을 동적으로 받아 관리회계영역·회계연도 조건으로 판매계획 테이블을 조회해 금액(GT_SEL_VV100) 또는 수량(GT_SEL_VVQ01) 테이블에 APPENDING한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZCOR2010I01 L6-28 | 1 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZCOR2010O01 L6-12 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOR2010O01 L18-62 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOR2010O01 L72-116 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZCOR2010O01 L124-131 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZCOR2010O01 L139-152 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOR2010O01 L161-189 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOR2010O01 L198-223 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZCOR2010O01 L233-398 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZCOR2010O01 L406-436 | 0 | | +| SET_HTML_TOP_OF_PAGE | FORM | ZCOR2010O01 L445-588 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | +| CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | +| UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | +| GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | +| GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | +| REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | +| REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | +| CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | +| GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | +| DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | +| ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | +| ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | +| F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | +| DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | +| BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | +| F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | +| UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | +| BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | +| BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | +| BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | +| POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | +| SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | +| BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | +| F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | +| SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | +| CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | +| CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | +| CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | +| CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | +| GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | +| UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. | diff --git a/wiki/programs/ZFIC0010.md b/wiki/programs/ZFIC0010.md new file mode 100644 index 0000000..32d1141 --- /dev/null +++ b/wiki/programs/ZFIC0010.md @@ -0,0 +1,3712 @@ +--- +type: abap-program +title: "ZFIC0010 — 계정과목 대량생성" +description: "엑셀 템플릿으로 받은 계정과목(G/L Account) 목록을 업로드해 FS00 트랜잭션 BDC 로 대량 생성하는 유틸리티다. 신규 회사코드 오픈이나 계정체계 개편 때 수백 건의 계정과목을 수작업으로 만들지 않도록 만든 도구이며, 업로드 전 화면에서 내용을 ALV 로 확인하고 처리 결과는 BDC 로그로 남긴다. 템플릿 다운로드 기능도 같은 화면에서 제공한다." +resource: "abap://ZFIC0010" +tags: ["마스터관리", "계정과목", "대량생성", "배치작업", "FI", "번호범위", "채번", "일련번호", "키생성", "번호오브젝트", "신규생성", "변경", "중복체크", "존재확인", "계정코드변환", "업로드검증", "권한체크", "회사코드권한", "권한오브젝트", "접근제어"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:18+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LTDX", "SKAT", "SKB1", "T007S", "USR01", "V_USERNAME", "ZFIT0160"] +x-tables-write: ["GT_DATA"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DOWNLOAD_WEB_OBJECT", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "FS00", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME"] +x-code-hash: "7a58d23acbbce63ba89ecdf86cac053284fa264bd45d954f645978221878ee85" +x-unit-count: 100 +x-chunk-count: 44 +x-declaration-count: 278 +--- + +## 업무 목적 + +엑셀 템플릿으로 받은 계정과목(G/L Account) 목록을 업로드해 FS00 트랜잭션 BDC 로 대량 생성하는 유틸리티다. 신규 회사코드 오픈이나 계정체계 개편 때 수백 건의 계정과목을 수작업으로 만들지 않도록 만든 도구이며, 업로드 전 화면에서 내용을 ALV 로 확인하고 처리 결과는 BDC 로그로 남긴다. 템플릿 다운로드 기능도 같은 화면에서 제공한다. + +## 주 흐름 + +1. 회사코드를 입력받고 업로드/템플릿다운로드 모드를 선택한다 +2. 업로드 모드면 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 엑셀 파일을 내부테이블로 읽어들여 계정과목 항목을 정리한다 (DATA_UPLOAD_2 → MODIFY_DATA) +4. ALV 화면 0100 에 업로드 내용을 띄워 사용자가 검토·실행하게 한다 +5. 실행 시 FS00 BDC 로 계정과목을 대량 생성하고 결과를 BDC 로그로 남긴다 (BDC_FS00) +6. 템플릿다운로드 모드면 입력 양식을 파일로 내려준다 + +## 핵심 내부테이블 + +- `GT_LOAD` — 엑셀에서 읽은 원본 행 (채움: DATA_UPLOAD_2 / 소비: MODIFY_DATA) +- `GT_DATA` — 검증·정리된 계정과목 생성 대상 (채움: MODIFY_DATA / 소비: BDC_FS00, ALV_GRID_DISPLAY) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LTDX, SKAT, SKB1, T007S, USR01, V_USERNAME, ZFIT0160 +- write: GT_DATA +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DOWNLOAD_WEB_OBJECT, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, FS00, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE + +## 로직 조각 (44건 / unit 36개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIC0010` L50-L66 (17줄) + +*회사코드 권한을 검증한 뒤 업로드 모드면 엑셀을 읽어 GT_LOAD→GT_DATA 로 정리하고, 아니면 템플릿을 다운로드하는 메인 이벤트다.* + +> 이 unit 의 조각 1개가 10/17줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 회사코드 권한체크(AUTHORITY_BUKRS) 후 업로드 모드(P_RU)면 DATA_UPLOAD_2 로 엑셀을 GT_LOAD 에 읽고 MODIFY_DATA 로 정리하며, 아니면 DOWNLOAD_TEMPLATE 로 양식을 내려준다. + +```abap + 53| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 54| + 55| * 데이터 업로드 + 56| IF P_RU EQ C_X. + 57| PERFORM DATA_UPLOAD_2 TABLES GT_LOAD USING P_FNAME. + 58| PERFORM MODIFY_DATA. + 59| * 템플릿 다운로드 + 60| ELSE. + 61| PERFORM DOWNLOAD_TEMPLATE. + 62| ENDIF. +``` + +- **EN**: Checks company code authorization, then in upload mode reads the Excel file into GT_LOAD (DATA_UPLOAD_2) and prepares GT_DATA (MODIFY_DATA); otherwise downloads the template. +- 호출(파서): AUTHORITY_BUKRS, DATA_UPLOAD_2, MODIFY_DATA, DOWNLOAD_TEMPLATE +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, DOWNLOAD_WEB_OBJECT +- 업무 키워드: 회사코드 권한, 엑셀 업로드, 템플릿 다운로드, 메인 흐름 +- English: Authorization Check, Excel Upload, Template Download +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs), [`P_RU`](#decl-zfic0010top-101-p_ru), [`C_X`](#decl-zficom-231-c_x), [`GT_LOAD`](#decl-zfic0010top-14-gt_load), [`P_FNAME`](#decl-zfic0010top-107-p_fname) +- 위치: `abap://ZFIC0010/ZFIC0010#L53-L62` · confidence 0.85 · `ZFIC0010#ZFIC0010#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0010/ZFICOM#L529-L535` · confidence 0.93 · `ZFIC0010#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zfic0010top-107-p_fname), [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIC0010/ZFICOM#L922-L939` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIC0010/ZFICOM#L941-L948` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM MODIFY_DATA — `ZFIC0010F01` L49-L77 (29줄) + +*업로드한 계정과목을 이미 생성된 계정과 대조해 신규/변경 구분을 정하고 화면 표시 상태를 초기화한다.* + +> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 해당 회사코드에 이미 존재하는 계정(SKB1)을 읽어두고, 업로드된 각 행의 계정코드를 ALPHA 변환한 뒤 존재 여부에 따라 '변경'/'생성' 구분을 부여하고 상태 아이콘을 노란불로 초기화한다. + +```abap + 52| SELECT SAKNR + 53| INTO TABLE GT_SKB1 + 54| FROM SKB1 + 55| WHERE BUKRS EQ P_BUKRS. + 56| + 57| LOOP AT GT_LOAD. + 58| MOVE-CORRESPONDING GT_LOAD TO GT_DATA. + 59| * 계정코드 컨버트 + 60| ALPHA_INPUT GT_LOAD-SAKNR GT_DATA-SAKNR. + 61| * 이미 생성된 계정인지 체크 + 62| READ TABLE GT_SKB1 WITH KEY SAKNR = GT_DATA-SAKNR. + 63| IF SY-SUBRC EQ 0. + 64| GT_DATA-GUBUN = C_C. "변경 + 65| GT_DATA-GUBUN_T = '변경'. + 66| ELSE. + 67| GT_DATA-GUBUN = C_N. "신규생성 + 68| GT_DATA-GUBUN_T = '생성'. + 69| ENDIF. + 70| * 최초상태는 노란색 + 71| GT_DATA-CICON = ICON_YELLOW_LIGHT . + 72| APPEND GT_DATA. CLEAR GT_DATA. + 73| ENDLOOP. + 74| + 75| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: Reads existing company-code accounts from SKB1, ALPHA-converts each uploaded account number and marks each row as create or change, initializing the status icon. +- 테이블(파서): read [SKB1](/tables/SKB1.md) / write - +- SAP 객체: SKB1, SAKNR, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 계정과목, 신규생성, 변경, 중복체크, 존재확인, 계정코드변환, 업로드검증 +- English: G/L account, create, change, existence check, alpha conversion, upload validation, SKB1 +- 정의부(복사 시 함께 필요): [`GT_SKB1`](#decl-zfic0010top-72-gt_skb1), [`SKB1`](#decl-zficom-35-skb1), [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs), [`GT_LOAD`](#decl-zfic0010top-14-gt_load), [`GT_DATA`](#decl-zfic0010top-41-gt_data), [`ALPHA_INPUT`](#decl-zficom-267-alpha_input), [`C_C`](#decl-zficom-210-c_c), [`C_N`](#decl-zficom-221-c_n), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L52-L75` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#MODIFY_DATA#C1` + +### FORM DOWNLOAD_TEMPLATE — `ZFIC0010F01` L83-L92 (10줄) + +*SMW0 웹 오브젝트 'MIZFIC0010' 에 저장된 계정과목 업로드 엑셀 템플릿을 DOWNLOAD_WEB_OBJECT 로 내려받는다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] WWWDATATAB 키 MIZFIC0010(SMW0 에 등록된 템플릿)을 DOWNLOAD_WEB_OBJECT 로 로컬 PC 에 다운로드해 사용자에게 업로드 양식을 제공한다. + +```abap + 86| LV_KEY = 'MIZFIC0010'. + 87| + 88| CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' + 89| EXPORTING + 90| KEY = LV_KEY. +``` + +- **EN**: Downloads the upload template stored as web object MIZFIC0010 (SMW0) to the local PC via DOWNLOAD_WEB_OBJECT. +- 호출(파서): DOWNLOAD_WEB_OBJECT +- SAP 객체: DOWNLOAD_WEB_OBJECT, WWWDATATAB, SMW0 +- 업무 키워드: 템플릿 다운로드, 업로드 양식, 웹 오브젝트 +- English: Template Download, Web Object, SMW0 +- 정의부(복사 시 함께 필요): [`LV_KEY`](#decl-zfic0010f01-84-lv_key) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L86-L90` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#DOWNLOAD_TEMPLATE#C1` + +### EVENT END-OF-SELECTION — `ZFIC0010` L67-L74 (8줄) + +*업로드 모드에서 정리된 계정과목 데이터(GT_DATA)가 없으면 메시지 S003 으로 종료하고 있으면 ALV 화면 0100 을 호출한다.* + +> 이 unit 의 조각 1개가 7/8줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 업로드 모드(P_RU)에서 GT_DATA 가 비어 있으면 메시지 S003 후 종료하고, 있으면 검토·실행용 ALV 화면 0100 을 띄운다. + +```abap + 68| CHECK P_RU EQ C_X. + 69| IF GT_DATA[] IS INITIAL. + 70| MESSAGE S003. + 71| LEAVE LIST-PROCESSING. + 72| ELSE. + 73| CALL SCREEN 0100. + 74| ENDIF. +``` + +- **EN**: In upload mode, exits with message S003 when GT_DATA is empty, otherwise calls screen 0100 for review and execution. +- 호출(파서): 0100 +- 업무 키워드: 업로드 결과 확인, 화면 호출, 데이터 없음 +- English: Call Screen, Upload Mode +- 정의부(복사 시 함께 필요): [`P_RU`](#decl-zfic0010top-101-p_ru), [`C_X`](#decl-zficom-231-c_x), [`GT_DATA`](#decl-zfic0010top-41-gt_data) +- 위치: `abap://ZFIC0010/ZFIC0010#L68-L74` · confidence 0.85 · `ZFIC0010#ZFIC0010#EVENT#END-OF-SELECTION#C1` + +### FORM HOTSPOT_CLICK — `ZFIC0010F01` L308-L328 (21줄) + +*ALV 계정과목(SAKNR) 컬럼 핫스팟 클릭 시 FS00 계정과목 마스터 조회 화면으로 이동한다.* + +> 이 unit 의 조각 1개가 16/21줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 행의 계정과목을 읽어 신규(GUBUN=N)이면서 생성 실패(녹색등 아님)인 건은 제외하고 파라미터 ID SAK/BUK 로 FS00 을 호출해 계정과목 마스터를 조회한다. + +```abap + 311| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 312| CHECK SY-SUBRC EQ 0. + 313| + 314| CASE P_COLUMN_ID. + 315| * 계정코드 + 316| WHEN 'SAKNR'. + 317| CHECK GT_DATA-SAKNR IS NOT INITIAL. + 318| * 신규이면서 생성에러인것은 제외 + 319| IF GT_DATA-GUBUN EQ C_N AND GT_DATA-CICON NE ICON_GREEN_LIGHT. + 320| ELSE. + 321| SET PARAMETER ID 'SAK' FIELD GT_DATA-SAKNR. + 322| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 323| CALL TRANSACTION 'FS00' AND SKIP FIRST SCREEN. + 324| ENDIF. + 325| + 326| ENDCASE. +``` + +- **EN**: Reads the clicked row and, unless it is a newly created account that failed, calls FS00 with parameter IDs SAK/BUK to display the G/L account master. +- 호출(파서): FS00 +- SAP 객체: FS00, SKB1 +- 업무 키워드: 핫스팟, 계정과목 조회, 계정과목 마스터, 생성 실패 제외 +- English: Hotspot Click, G/L Account Master, FS00 +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfic0010top-41-gt_data), [`C_N`](#decl-zficom-221-c_n), [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L311-L326` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIC0010F01` L152-L167 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 153| PERFORM SET_FIELD_CATALOGS. + 154| * Report Display. + 155| GV_VARI-REPORT = SY-REPID. + 156| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 157| EXPORTING + 158| I_STRUCTURE_NAME = 'GT_DATA' + 159| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 160| IS_LAYOUT = GV_LAYO + 161| IS_VARIANT = GV_VARI + 162| I_BUFFER_ACTIVE = C_X + 163| I_SAVE = C_A + 164| CHANGING + 165| IT_OUTTAB = GT_DATA[] + 166| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfic0010top-83-gv_vari), [`GV_ALV_GRID`](#decl-zfic0010top-81-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfic0010top-82-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_DATA`](#decl-zfic0010top-41-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L153-L166` · confidence 0.85 · `ZFIC0010#ZFIC0010F01#FORM#ALV_GRID_DISPLAY#C1` + +### FORM BDC_FS00 — `ZFIC0010F01` L334-L511 (178줄) + +*ALV 에서 선택한 계정과목 행을 FS00 BDC 로 회사코드별 신규 생성 또는 변경하고 결과 아이콘·오류메시지를 GT_DATA 에 기록한다.* + +> 이 unit 의 조각 6개가 163/178줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 에서 선택된 행(GT_ROWS)을 가져와 선택이 없으면 메시지 S004 로 중단하고, 있으면 CHECK_CONFIRM_STEP 확인 팝업에서 예(J)를 받은 경우에만 계속한다. + +```abap + 339| CALL METHOD GV_ALV_GRID->GET_SELECTED_ROWS + 340| IMPORTING + 341| ET_INDEX_ROWS = GT_ROWS. + 342| + 343| IF GT_ROWS[] IS INITIAL. + 344| MESSAGE S004. "선택된 데이터가 없습니다. + 345| EXIT. + 346| ELSE. + 347| PERFORM CHECK_CONFIRM_STEP USING TEXT-S03 TEXT-001 SPACE C_N. + 348| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Gets the selected ALV rows, stops with message S004 when none selected, and continues only after the user confirms via CHECK_CONFIRM_STEP popup. +- 호출(파서): GV_ALV_GRID->GET_SELECTED_ROWS, CHECK_CONFIRM_STEP +- SAP 객체: CL_GUI_ALV_GRID, POPUP_TO_CONFIRM_STEP +- 업무 키워드: 선택 행, 실행 확인, 확인 팝업, 계정과목 생성 +- English: Selected Rows, Confirmation Popup, ALV Grid +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID`](#decl-zfic0010top-81-gv_alv_grid), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L339-L348` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C1` + +#### [interface] 선택 행별로 GT_DATA 를 읽어 구분(GUBUN=N 생성/그 외 변경)에 따라 FS00 초기화면(SAPLGL_ACCOUNT_MASTER_MAINTAIN 2001)에 계정번호·회사코드와 ACC_CRE/ACC_MOD 기능코드를 BDC 로 채운다. + +```abap + 350| LOOP AT GT_ROWS INTO GS_ROWS. + 351| READ TABLE GT_DATA INDEX GS_ROWS-INDEX. + 352| CHECK SY-SUBRC EQ 0. + 353| + 354| CLEAR: GT_BDC[], GT_MESS[], LV_CNT. + 355| + 356| + 357| * 생성인지 변경인지 + 358| IF GT_DATA-GUBUN EQ C_N. "생성 + 359| PERFORM DYNPRO USING : + 360| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 361| ' ' 'GLACCOUNT_SCREEN_KEY-SAKNR' GT_DATA-SAKNR, + 362| ' ' 'GLACCOUNT_SCREEN_KEY-BUKRS' P_BUKRS, + 363| ' ' 'BDC_OKCODE' '=ACC_CRE'. + 364| ELSE. "변경 + 365| PERFORM DYNPRO USING : + 366| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 367| ' ' 'GLACCOUNT_SCREEN_KEY-SAKNR' GT_DATA-SAKNR, + 368| ' ' 'GLACCOUNT_SCREEN_KEY-BUKRS' P_BUKRS, + 369| ' ' 'BDC_OKCODE' '=ACC_MOD'. + 370| ENDIF. +``` + +- **EN**: For each selected row builds the FS00 initial screen BDC (SAPLGL_ACCOUNT_MASTER_MAINTAIN 2001) with G/L account, company code and function code ACC_CRE (create) or ACC_MOD (change) depending on GUBUN. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: FS00, SAPLGL_ACCOUNT_MASTER_MAINTAIN +- 업무 키워드: 계정과목 생성, 계정과목 변경, BDC 초기화면, 회사코드 +- English: G/L Account Master, FS00, BDC, Create/Change +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`GT_DATA`](#decl-zfic0010top-41-gt_data), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess), [`LV_CNT`](#decl-zfic0010f01-335-lv_cnt), [`C_N`](#decl-zficom-221-c_n), [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L350-L370` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C2` + +#### [interface] 계정그룹(KTOKS) 입력 후 유형/설명 탭(TAB02)에서 대차대조표계정 여부(XBILK)·단문(TXT20)·장문(TXT50)을 값이 있을 때만 BDC 로 채운다. + +```abap + 372| PERFORM DYNPRO USING : + 373| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 374| ' ' 'GLACCOUNT_SCREEN_COA-KTOKS' GT_DATA-KTOKS, + 375| ' ' 'BDC_OKCODE' '=2102_GROUP'. + 376| + 377| PERFORM DYNPRO USING : + 378| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 379| ' ' 'BDC_OKCODE' '=TAB02'. + 380| IF GT_DATA-XBILK IS NOT INITIAL. + 381| PERFORM DYNPRO USING : + 382| ' ' 'GLACCOUNT_SCREEN_COA-XBILK' GT_DATA-XBILK. + 383| ENDIF. + 384| IF GT_DATA-TXT20 IS NOT INITIAL. + 385| PERFORM DYNPRO USING : + 386| ' ' 'GLACCOUNT_SCREEN_COA-TXT20_ML' GT_DATA-TXT20. + 387| ENDIF. + 388| IF GT_DATA-TXT50 IS NOT INITIAL. + 389| PERFORM DYNPRO USING : + 390| ' ' 'GLACCOUNT_SCREEN_COA-TXT50_ML' GT_DATA-TXT50. + 391| ENDIF. +``` + +- **EN**: Fills the account group KTOKS and, on the Type/Description tab (TAB02), the balance sheet flag XBILK and short/long texts TXT20/TXT50 when present. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: FS00, SKA1, SKAT +- 업무 키워드: 계정그룹, 대차대조표계정, 계정과목 텍스트, 계정표 데이터 +- English: Account Group, Balance Sheet Account, Chart of Accounts Data +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfic0010top-41-gt_data) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L372-L391` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C3` + +#### [interface] 관리데이터 탭(TAB03)에서 통화(WAERS)·현지통화잔액만(XSALH)·세금코드(MWSKZ)·세금없이전기허용(XMWNO)·대체계정(ALTKT)·조정계정유형(MITKZ)·미결관리(XOPVW)·개별항목표시(XKRES)·정렬키(ZUAWA)를 값이 있을 때만 BDC 로 채운다. + +```abap + 394| PERFORM DYNPRO USING : + 395| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 396| ' ' 'BDC_OKCODE' '=TAB03'. + 397| + 398| IF GT_DATA-WAERS IS NOT INITIAL. + 399| PERFORM DYNPRO USING : + 400| ' ' 'GLACCOUNT_SCREEN_CCODE-WAERS' GT_DATA-WAERS. + 401| ENDIF. + 402| IF GT_DATA-XSALH IS NOT INITIAL. + 403| PERFORM DYNPRO USING : + 404| ' ' 'GLACCOUNT_SCREEN_CCODE-XSALH' GT_DATA-XSALH. + 405| ENDIF. + 406| IF GT_DATA-MWSKZ IS NOT INITIAL. + 407| PERFORM DYNPRO USING : + 408| ' ' 'GLACCOUNT_SCREEN_CCODE-MWSKZ' GT_DATA-MWSKZ. + 409| ENDIF. + 410| IF GT_DATA-XMWNO IS NOT INITIAL. + 411| PERFORM DYNPRO USING : + 412| ' ' 'GLACCOUNT_SCREEN_CCODE-XMWNO' GT_DATA-XMWNO. + 413| ENDIF. + 414| IF GT_DATA-ALTKT IS NOT INITIAL. + 415| PERFORM DYNPRO USING : + 416| ' ' 'GLACCOUNT_SCREEN_CCODE-ALTKT' GT_DATA-ALTKT. + 417| ENDIF. + 418| IF GT_DATA-MITKZ IS NOT INITIAL. + 419| PERFORM DYNPRO USING : + 420| ' ' 'GLACCOUNT_SCREEN_CCODE-MITKZ' GT_DATA-MITKZ. + 421| ENDIF. + 422| IF GT_DATA-XOPVW IS NOT INITIAL. + 423| PERFORM DYNPRO USING : + 424| ' ' 'GLACCOUNT_SCREEN_CCODE-XOPVW' GT_DATA-XOPVW. + 425| ENDIF. + 426| IF GT_DATA-XKRES IS NOT INITIAL. + 427| PERFORM DYNPRO USING : + 428| ' ' 'GLACCOUNT_SCREEN_CCODE-XKRES' GT_DATA-XKRES. + 429| ENDIF. + 430| IF GT_DATA-ZUAWA IS NOT INITIAL. + 431| PERFORM DYNPRO USING : + 432| ' ' 'GLACCOUNT_SCREEN_CCODE-ZUAWA' GT_DATA-ZUAWA. + 433| ENDIF. +``` + +- **EN**: On the company-code control data tab (TAB03) sets currency, local-currency-only balance, tax code, posting without tax allowed, alternative account, reconciliation account type, open item management, line item display and sort key when provided. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: FS00, SKB1 +- 업무 키워드: 회사코드 데이터, 계정통화, 세금코드, 미결항목관리, 조정계정, 정렬키 +- English: Company Code Data, Open Item Management, Reconciliation Account, Sort Key, Tax Code +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfic0010top-41-gt_data) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L394-L433` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C4` + +#### [interface] 생성/은행/이자 탭(TAB04)에서 필드상태그룹(FSTAG)·전기키만전기(XNKON)·수동전기불가(XMITK)·현금흐름계정(XGKON)·전기허용전용(XINTB)·계획수준(FDLEV)·거래은행(HBKID)·계좌ID(HKTID)를 채우고 SAVE 후 BDC_TRANSACTION 으로 FS00 을 실행한다. + +```abap + 435| PERFORM DYNPRO USING : + 436| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 437| ' ' 'BDC_OKCODE' '=TAB04'. + 438| IF GT_DATA-FSTAG IS NOT INITIAL. + 439| PERFORM DYNPRO USING : + 440| ' ' 'GLACCOUNT_SCREEN_CCODE-FSTAG' GT_DATA-FSTAG. + 441| ENDIF. + 442| IF GT_DATA-XNKON IS NOT INITIAL. + 443| PERFORM DYNPRO USING : + 444| ' ' 'GLACCOUNT_SCREEN_CCODE-XNKON' GT_DATA-XNKON. + 445| ENDIF. + 446| IF GT_DATA-XMITK IS NOT INITIAL. + 447| PERFORM DYNPRO USING : + 448| ' ' 'GLACCOUNT_SCREEN_CCODE-XMITK' GT_DATA-XMITK. + 449| ENDIF. + 450| IF GT_DATA-XGKON IS NOT INITIAL. + 451| PERFORM DYNPRO USING : + 452| ' ' 'GLACCOUNT_SCREEN_CCODE-XGKON' GT_DATA-XGKON. + 453| ENDIF. + 454| IF GT_DATA-XINTB IS NOT INITIAL. + 455| PERFORM DYNPRO USING : + 456| ' ' 'GLACCOUNT_SCREEN_CCODE-XINTB' GT_DATA-XINTB. + 457| ENDIF. + 458| IF GT_DATA-FDLEV IS NOT INITIAL. + 459| PERFORM DYNPRO USING : + 460| ' ' 'GLACCOUNT_SCREEN_CCODE-FDLEV' GT_DATA-FDLEV. + 461| ENDIF. + 462| IF GT_DATA-HBKID IS NOT INITIAL. + 463| PERFORM DYNPRO USING : + 464| ' ' 'GLACCOUNT_SCREEN_CCODE-HBKID' GT_DATA-HBKID. + 465| ENDIF. + 466| IF GT_DATA-HKTID IS NOT INITIAL. + 467| PERFORM DYNPRO USING : + 468| ' ' 'GLACCOUNT_SCREEN_CCODE-HKTID' GT_DATA-HKTID. + 469| ENDIF. + 470| + 471| PERFORM DYNPRO USING : + 472| 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001', + 473| ' ' 'BDC_OKCODE' '=SAVE'. + 474| + 475| PERFORM BDC_TRANSACTION USING 'FS00'. +``` + +- **EN**: On the Create/Bank/Interest tab (TAB04) sets field status group, post automatically only, manual posting block, cash flow account, planning level, house bank and account ID, then saves and runs FS00 via BDC_TRANSACTION. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, BDC_TRANSACTION +- SAP 객체: FS00, SKB1, BDC_TRANSACTION +- 업무 키워드: 필드상태그룹, 거래은행, 계좌 ID, 계획수준, BDC 실행, 저장 +- English: Field Status Group, House Bank, Planning Level, Call Transaction, FS00 +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfic0010top-41-gt_data) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L435-L475` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C5` + +#### [control_flow] BDC 결과 메시지 GT_MESS 가 없으면 녹색등, FH035(변경사항 없음)면 안내 텍스트, 그 외 E/A 타입 또는 마지막 메시지를 MESSAGE_SELECT 로 텍스트화해 적색등과 함께 GT_DATA 의 해당 행에 반영한다. + +```abap + 477| * 에러메시지 추출 + 478| IF GT_MESS[] IS INITIAL. "성공 + 479| GT_DATA-CICON = ICON_GREEN_LIGHT. + 480| CLEAR GT_DATA-ERMSG. + 481| ELSE. "에러 + 482| * 변경사항 없을 경우 스킵 + 483| READ TABLE GT_MESS WITH KEY MSGID = 'FH' + 484| MSGNR = '035'. + 485| IF SY-SUBRC EQ 0. + 486| GT_DATA-ERMSG = '변경사항 없음'. + 487| ELSE. + 488| GT_DATA-CICON = ICON_RED_LIGHT. + 489| READ TABLE GT_MESS WITH KEY MSGTYP = C_E. + 490| IF SY-SUBRC EQ 0. + 491| PERFORM MESSAGE_SELECT CHANGING GT_DATA-ERMSG. + 492| ELSE. + 493| READ TABLE GT_MESS WITH KEY MSGTYP = C_A. + 494| IF SY-SUBRC EQ 0. + 495| PERFORM MESSAGE_SELECT CHANGING GT_DATA-ERMSG. + 496| ELSE. + 497| DESCRIBE TABLE GT_MESS LINES LV_CNT. + 498| READ TABLE GT_MESS INDEX LV_CNT. + 499| IF SY-SUBRC EQ 0. + 500| PERFORM MESSAGE_SELECT CHANGING GT_DATA-ERMSG. + 501| ENDIF. + 502| ENDIF. + 503| ENDIF. + 504| ENDIF. + 505| ENDIF. + 506| + 507| MODIFY GT_DATA INDEX GS_ROWS-INDEX. +``` + +- **EN**: Evaluates the BDC messages: green light on success, 'no changes' text for FH035, otherwise red light with the E/A-type or last message text via MESSAGE_SELECT, and updates the GT_DATA row. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): MESSAGE_SELECT, MESSAGE_SELECT, MESSAGE_SELECT +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: 처리 결과, 오류 메시지, 성공/실패 아이콘, 변경사항 없음, BDC 로그 +- English: BDC Message, Result Icon, Error Handling +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess), [`GT_DATA`](#decl-zfic0010top-41-gt_data), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`LV_CNT`](#decl-zfic0010f01-335-lv_cnt), [`GS_ROWS`](#decl-zficom-122-gs_rows) +- 위치: `abap://ZFIC0010/ZFIC0010F01#L477-L507` · confidence 0.9 · `ZFIC0010#ZFIC0010F01#FORM#BDC_FS00#C6` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIC0010/ZFICOM#L482-L489` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIC0010/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIC0010/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIC0010/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIC0010I01` L9-L17 (9줄) + +*ALV 화면 0100 의 기능코드를 받아 확정(EXEC) 시 FS00 BDC 대량생성(BDC_FS00)을 호출하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 화면 0100 에서 확정(EXEC) 버튼을 누르면 BDC_FS00 을 수행해 업로드된 계정과목을 FS00 BDC 로 대량 생성한다. + +```abap + 10| GV_UCOMM = SY-UCOMM. + 11| CASE GV_UCOMM. + 12| * 확정 + 13| WHEN 'EXEC'. + 14| PERFORM BDC_FS00. + 15| ENDCASE. +``` + +- **EN**: On function code EXEC of screen 0100 calls BDC_FS00 to mass-create the uploaded G/L accounts via FS00 BDC. +- 호출(파서): BDC_FS00 +- SAP 객체: FS00 +- 업무 키워드: 확정, 계정과목 생성, BDC 실행, 기능코드 +- English: User Command, G/L Account Creation, FS00 +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm) +- 위치: `abap://ZFIC0010/ZFIC0010I01#L10-L15` · confidence 0.85 · `ZFIC0010#ZFIC0010I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIC0010/ZFICOM#L380-L386` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIC0010/ZFICOM#L401-L407` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIC0010/ZFICOM#L423-L427` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIC0010/ZFICOM#L443-L463` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIC0010/ZFICOM#L510-L518` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0010/ZFICOM#L547-L562` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIC0010/ZFICOM#L578-L591` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIC0010/ZFICOM#L613-L621` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIC0010/ZFICOM#L642-L649` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`P_FNAME`](#decl-zfic0010top-107-p_fname), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0010/ZFICOM#L682-L702` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIC0010/ZFICOM#L761-L769` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIC0010/ZFICOM#L787-L806` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`P_FNAME`](#decl-zfic0010top-107-p_fname), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIC0010/ZFICOM#L864-L867` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`P_FNAME`](#decl-zfic0010top-107-p_fname), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0010/ZFICOM#L869-L885` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data), [`P_FNAME`](#decl-zfic0010top-107-p_fname) +- 위치: `abap://ZFIC0010/ZFICOM#L887-L907` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIC0010/ZFICOM#L967-L998` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIC0010/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIC0010/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIC0010/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIC0010/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIC0010/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIC0010#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIC0010/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0010top-95-p_bukrs) +- 위치: `abap://ZFIC0010/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIC0010#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIC0010/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIC0010#ZFICOM#FORM#STATUS_BAR#C1` + +## 정의부 (292건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFIC0010CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfic0010cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfic0010cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIC0010TOP` (11건) + +#### GT_LOAD — data · L14-L39 {#decl-zfic0010top-14-gt_load} + +```abap +DATA: BEGIN OF GT_LOAD OCCURS 0, + SAKNR LIKE GLACCOUNT_SCREEN_KEY-SAKNR, "GL 계정 + TXT20 LIKE GLACCOUNT_SCREEN_COA-TXT20_ML, "내역 + TXT50 LIKE GLACCOUNT_SCREEN_COA-TXT50_ML, "GL 계정설명 + KTOKS LIKE GLACCOUNT_SCREEN_COA-KTOKS, "계정그룹 + XBILK LIKE GLACCOUNT_SCREEN_COA-XBILK, "대차대조표계정여부 + WAERS LIKE GLACCOUNT_SCREEN_CCODE-WAERS, "통화 + XSALH LIKE GLACCOUNT_SCREEN_CCODE-XSALH, "현지통화 잔액만 + KDFSL LIKE GLACCOUNT_SCREEN_CCODE-KDFSL, "환율차이키 + BEWGP LIKE GLACCOUNT_SCREEN_CCODE-BEWGP, "평가그룹 + MWSKZ LIKE GLACCOUNT_SCREEN_CCODE-MWSKZ, "세금범주 + XMWNO LIKE GLACCOUNT_SCREEN_CCODE-XMWNO, "세금없이 전기허용 + MITKZ LIKE GLACCOUNT_SCREEN_CCODE-MITKZ, "조정계정 + ALTKT LIKE GLACCOUNT_SCREEN_CCODE-ALTKT, "대체계정 번호 + XOPVW LIKE GLACCOUNT_SCREEN_CCODE-XOPVW, "미결항목관리 + XKRES LIKE GLACCOUNT_SCREEN_CCODE-XKRES, "개별 항목 조회 + ZUAWA LIKE GLACCOUNT_SCREEN_CCODE-ZUAWA, "정렬키 + FSTAG LIKE GLACCOUNT_SCREEN_CCODE-FSTAG, "필드상태그룹 + XINTB LIKE GLACCOUNT_SCREEN_CCODE-XINTB, "자동전기만 + XNKON LIKE GLACCOUNT_SCREEN_CCODE-XNKON, "자동전기 보충 + XMITK LIKE GLACCOUNT_SCREEN_CCODE-XMITK, "조정계정 입력가능? + FDLEV LIKE GLACCOUNT_SCREEN_CCODE-FDLEV, "계획레벨 + XGKON LIKE GLACCOUNT_SCREEN_CCODE-XGKON, "현금흐름 관련여부 + HBKID LIKE GLACCOUNT_SCREEN_CCODE-HBKID, "거래 은행 + HKTID LIKE GLACCOUNT_SCREEN_CCODE-HKTID, "계정 ID + END OF GT_LOAD. +``` + +#### GT_DATA — data · L41-L70 {#decl-zfic0010top-41-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0, + SAKNR LIKE GLACCOUNT_SCREEN_KEY-SAKNR, "GL 계정 + TXT20 LIKE GLACCOUNT_SCREEN_COA-TXT20_ML, "내역 + TXT50 LIKE GLACCOUNT_SCREEN_COA-TXT50_ML, "GL 계정설명 + KTOKS LIKE GLACCOUNT_SCREEN_COA-KTOKS, "계정그룹 + XBILK LIKE GLACCOUNT_SCREEN_COA-XBILK, "대차대조표계정여부 + WAERS LIKE GLACCOUNT_SCREEN_CCODE-WAERS, "통화 + XSALH LIKE GLACCOUNT_SCREEN_CCODE-XSALH, "현지통화 잔액만 + KDFSL LIKE GLACCOUNT_SCREEN_CCODE-KDFSL, "환율차이키 + BEWGP LIKE GLACCOUNT_SCREEN_CCODE-BEWGP, "평가그룹 + MWSKZ LIKE GLACCOUNT_SCREEN_CCODE-MWSKZ, "세금범주 + XMWNO LIKE GLACCOUNT_SCREEN_CCODE-XMWNO, "세금없이 전기허용 + MITKZ LIKE GLACCOUNT_SCREEN_CCODE-MITKZ, "조정계정 + ALTKT LIKE GLACCOUNT_SCREEN_CCODE-ALTKT, "대체계정 번호 + XOPVW LIKE GLACCOUNT_SCREEN_CCODE-XOPVW, "미결항목관리 + XKRES LIKE GLACCOUNT_SCREEN_CCODE-XKRES, "개별 항목 조회 + ZUAWA LIKE GLACCOUNT_SCREEN_CCODE-ZUAWA, "정렬키 + FSTAG LIKE GLACCOUNT_SCREEN_CCODE-FSTAG, "필드상태그룹 + XINTB LIKE GLACCOUNT_SCREEN_CCODE-XINTB, "자동전기만 + XNKON LIKE GLACCOUNT_SCREEN_CCODE-XNKON, "자동전기 보충 + XMITK LIKE GLACCOUNT_SCREEN_CCODE-XMITK, "조정계정 입력가능? + FDLEV LIKE GLACCOUNT_SCREEN_CCODE-FDLEV, "계획레벨 + XGKON LIKE GLACCOUNT_SCREEN_CCODE-XGKON, "현금흐름 관련여부 + HBKID LIKE GLACCOUNT_SCREEN_CCODE-HBKID, "거래 은행 + HKTID LIKE GLACCOUNT_SCREEN_CCODE-HKTID, "계정 ID + CICON LIKE ICON-ID, "상태아이콘 + GUBUN(1), "생성/변경 + GUBUN_T(4), "텍스트 + ERMSG(100) TYPE C, + END OF GT_DATA. +``` + +#### GT_SKB1 — data · L72-L74 {#decl-zfic0010top-72-gt_skb1} + +```abap +DATA: BEGIN OF GT_SKB1 OCCURS 0, + SAKNR LIKE SKB1-SAKNR, + END OF GT_SKB1. +``` + +#### GS_STABLE — data · L80-L80 {#decl-zfic0010top-80-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L81-L81 {#decl-zfic0010top-81-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L82-L82 {#decl-zfic0010top-82-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L83-L83 {#decl-zfic0010top-83-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L95-L95 {#decl-zfic0010top-95-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_RU — parameter · L101-L102 {#decl-zfic0010top-101-p_ru} + +```abap +PARAMETERS : P_RU RADIOBUTTON GROUP G2 USER-COMMAND ZRBG + DEFAULT 'X'. "업로드 +``` + +#### P_RD — parameter · L104-L104 {#decl-zfic0010top-104-p_rd} + +```abap +PARAMETERS : P_RD RADIOBUTTON GROUP G2. "템플릿다운로드 +``` + +#### P_FNAME — parameter · L107-L107 {#decl-zfic0010top-107-p_fname} + +```abap +PARAMETERS : P_FNAME LIKE RLGRAP-FILENAME MODIF ID A. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIC0010F01` (2건) + +#### LV_KEY — data · unit 로컬 · L84-L84 {#decl-zfic0010f01-84-lv_key} + +```abap + DATA : LV_KEY LIKE WWWDATATAB. +``` + +#### LV_CNT — data · unit 로컬 · L335-L335 {#decl-zfic0010f01-335-lv_cnt} + +```abap + DATA: LV_CNT TYPE I. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| INITIALIZATION | EVENT | ZFIC0010 L32-38 | 0 | 프로그램 초기화 시 ALV_SETTING 으로 ALV 기본 설정을 수행하는 이벤트다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZFIC0010 L39-42 | 0 | 파일명 파라미터의 F4 로 GET_FILE 파일 선택 다이얼로그를 호출하는 선택화면 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIC0010 L43-49 | 0 | 선택화면 출력 시 MODIFY_SCREEN 으로 모드별 필드 표시를 조정하는 이벤트다. | +| START-OF-SELECTION | EVENT | ZFIC0010 L50-66 | 1 | 회사코드 권한을 검증한 뒤 업로드 모드면 엑셀을 읽어 GT_LOAD→GT_DATA 로 정리하고, 아니면 템플릿을 다운로드하는 메인 이벤트다. | +| END-OF-SELECTION | EVENT | ZFIC0010 L67-74 | 1 | 업로드 모드에서 정리된 계정과목 데이터(GT_DATA)가 없으면 메시지 S003 으로 종료하고 있으면 ALV 화면 0100 을 호출한다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIC0010CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_FILE | FORM | ZFIC0010F01 L11-26 | 0 | WS_FILENAME_GET 파일 열기 다이얼로그로 업로드할 파일 경로를 선택받는 F4 헬퍼다. | +| MODIFY_SCREEN | FORM | ZFIC0010F01 L33-43 | 0 | 템플릿 다운로드 모드(P_RD)일 때 선택화면의 파일 입력 그룹(GROUP1=A)을 숨기는 화면 제어 FORM 이다. | +| MODIFY_DATA | FORM | ZFIC0010F01 L49-77 | 1 | 업로드한 계정과목을 이미 생성된 계정과 대조해 신규/변경 구분을 정하고 화면 표시 상태를 초기화한다. | +| DOWNLOAD_TEMPLATE | FORM | ZFIC0010F01 L83-92 | 1 | SMW0 웹 오브젝트 'MIZFIC0010' 에 저장된 계정과목 업로드 엑셀 템플릿을 DOWNLOAD_WEB_OBJECT 로 내려받는다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIC0010F01 L98-130 | 0 | 화면 0100 의 커스텀 컨테이너·ALV 그리드·이벤트 핸들러를 생성하고 레이아웃·툴바 제외·표시를 초기화한다. | +| SET_GRID_LAYOUT | FORM | ZFIC0010F01 L136-146 | 0 | ALV 그리드 레이아웃(열 최적화·선택모드·지브라)을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY | FORM | ZFIC0010F01 L152-167 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIC0010F01 L173-299 | 0 | GT_DATA 구조로 ALV 필드카탈로그를 만들고 계정과목 컬럼별 헤더텍스트·정렬·핫스팟·순서를 설정한다. | +| HOTSPOT_CLICK | FORM | ZFIC0010F01 L308-328 | 1 | ALV 계정과목(SAKNR) 컬럼 핫스팟 클릭 시 FS00 계정과목 마스터 조회 화면으로 이동한다. | +| BDC_FS00 | FORM | ZFIC0010F01 L334-511 | 6 | ALV 에서 선택한 계정과목 행을 FS00 BDC 로 회사코드별 신규 생성 또는 변경하고 결과 아이콘·오류메시지를 GT_DATA 에 기록한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIC0010I01 L9-17 | 1 | ALV 화면 0100 의 기능코드를 받아 확정(EXEC) 시 FS00 BDC 대량생성(BDC_FS00)을 호출하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIC0010O01 L9-14 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIC0010O01 L20-35 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | NUMERIC_CHECK FM 으로 문자열이 숫자인지 판별해 GV_TYPE 에 유형을 받는 공통 헬퍼다. | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | 검색도움용 필드 정보(테이블명·필드명·선택플래그)를 GT_FIELD 에 추가하는 F4 헬퍼다. | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | GT_FIELD 설정과 내부테이블로 HELP_VALUES_GET_NO_DD_NAME 검색도움 팝업을 띄우는 공통 F4 헬퍼다. | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | ICON_CREATE 로 퀵인포가 있는 아이콘 문자열을 생성하는 공통 헬퍼다. | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | 내부테이블 값을 F4 검색도움으로 표시하는 공통 헬퍼(F4IF_INT_TABLE_VALUE_REQUEST 래퍼)다. | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | 화면 종료 기능코드(BACK/CANC/EXIT)에 따라 화면을 빠져나가거나 프로그램을 종료하는 EXIT 모듈이다. | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | diff --git a/wiki/programs/ZFIC0020.md b/wiki/programs/ZFIC0020.md new file mode 100644 index 0000000..857e364 --- /dev/null +++ b/wiki/programs/ZFIC0020.md @@ -0,0 +1,4095 @@ +--- +type: abap-program +title: "ZFIC0020 — 전표 대량 UPLOAD" +description: "엑셀로 받은 회계전표를 대량으로 업로드해 전표를 생성하는 유틸리티다. 구조조회(어떤 컬럼을 채워야 하는지)·템플릿 다운로드·업로드 실행·BDC 로그 조회의 네 모드를 한 화면에서 제공하고, 업로드 결과는 ZFIT0010 에 적재해 이력으로 남긴다. BDC 처리 모드(백그라운드/오류만표시/포그라운드)를 선택할 수 있어 대량 처리와 오류 디버깅을 겸한다." +resource: "abap://ZFIC0020" +tags: ["전표", "대량업로드", "배치작업", "결산작업", "FI", "전표그룹", "엑셀순서", "정렬", "라인순서", "업로드", "대차검증", "차변", "대변", "전기키", "계정유형", "세액", "대차일치", "신호등", "업로드검증", "번호범위"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:18+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LTDX", "SKAT", "T007S", "TBSL", "USR01", "V_USERNAME", "ZFIT0010", "ZFIT0160"] +x-tables-write: ["GT_LOAD", "ZFIT0010"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DOWNLOAD_WEB_OBJECT", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_DOWNLOAD", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME"] +x-code-hash: "679d87a72c21ec5ad830f402eac88c0fdd426bbbf10502c27b0b1dbc15c79206" +x-unit-count: 102 +x-chunk-count: 53 +x-declaration-count: 285 +--- + +## 업무 목적 + +엑셀로 받은 회계전표를 대량으로 업로드해 전표를 생성하는 유틸리티다. 구조조회(어떤 컬럼을 채워야 하는지)·템플릿 다운로드·업로드 실행·BDC 로그 조회의 네 모드를 한 화면에서 제공하고, 업로드 결과는 ZFIT0010 에 적재해 이력으로 남긴다. BDC 처리 모드(백그라운드/오류만표시/포그라운드)를 선택할 수 있어 대량 처리와 오류 디버깅을 겸한다. + +## 주 흐름 + +1. 회사코드와 처리 모드(구조조회/다운로드/업로드/로그)를 선택한다 +2. 구조조회 모드: 업로드 파일이 가져야 할 구조를 화면에 보여준다 (STRUCTURE_DISPLAY) +3. 다운로드 모드: 입력 템플릿 파일을 내려준다 (FILE_DOWNLOAD) +4. 업로드 모드: 파일 경로 필수 확인 후 엑셀을 읽어 전표 항목을 정리한다 (DATA_UPLOAD_2 → MODIFY_DATA) +5. ALV 로 업로드 내용을 검토시키고 BDC 로 전표를 생성한다 +6. 처리 결과를 ZFIT0010 에 적재하고, 로그 모드에서 생성일자 기준으로 조회한다 (GET_ZFIT0010) + +## 핵심 내부테이블 + +- `GT_LOAD` — 엑셀 원본 행 (채움: DATA_UPLOAD_2 / 소비: MODIFY_DATA) +- `GT_DATA` — 전표 생성 대상 항목 (채움: MODIFY_DATA / 소비: ALV_DISPLAY) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LTDX, SKAT, T007S, TBSL, USR01, V_USERNAME, ZFIT0010, ZFIT0160 +- write: GT_LOAD, ZFIT0010 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DOWNLOAD_WEB_OBJECT, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_DOWNLOAD, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE + +## 로직 조각 (53건 / unit 43개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIC0020` L46-L84 (39줄) + +*START-OF-SELECTION 에서 모드별(구조조회/템플릿 다운로드/업로드/로그)로 파일 검증·엑셀 업로드·ZFIT0010 조회·ALV 준비를 분기하는 메인 흐름이다.* + +> 이 unit 의 조각 2개가 24/39줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 업로드 모드에서 파일 경로(P_FNAME) 필수 검증 후 DATA_UPLOAD_2 로 엑셀을 GT_LOAD 에 읽고 MODIFY_DATA 로 정리한 뒤 ALV 설정·필드카탈로그·이벤트(PF_T1000)를 준비한다. + +```abap + 55| WHEN P_U. + 56| CLEAR GV_RUN. + 57| * 필수입력값 체크 + 58| IF P_FNAME IS INITIAL. + 59| MESSAGE S000 WITH TEXT-001 DISPLAY LIKE C_E. + 60| "파일경로필드는 필수입력입니다!!! + 61| LEAVE LIST-PROCESSING. + 62| ENDIF. + 63| PERFORM DATA_UPLOAD_2 TABLES GT_LOAD USING P_FNAME. + 64| PERFORM MODIFY_DATA. + 65| * ALV setting + 66| PERFORM ALV_SETTING. + 67| * ALV FIELD Define + 68| PERFORM FIELDCATALOG_MERGE. + 69| * ALV EVENT Define + 70| PERFORM EVENT_BUILD USING 'PF_T1000' SPACE SPACE C_X C_X GV_DBCNT. +``` + +- **EN**: In upload mode validate the mandatory file path, read the Excel file into GT_LOAD (DATA_UPLOAD_2), post-process it (MODIFY_DATA) and prepare ALV settings, field catalog and events. +- 호출(파서): DATA_UPLOAD_2, MODIFY_DATA, ALV_SETTING, FIELDCATALOG_MERGE, EVENT_BUILD +- 업무 키워드: 파일 경로 필수, 엑셀 업로드, 전표 항목 정리, ALV 준비 +- English: file upload, validation, ALV +- 정의부(복사 시 함께 필요): [`P_U`](#decl-zfic0020top-120-p_u), [`GV_RUN`](#decl-zfic0020top-88-gv_run), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`C_E`](#decl-zficom-212-c_e), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`C_X`](#decl-zficom-231-c_x), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIC0020/ZFIC0020#L55-L70` · confidence 0.85 · `ZFIC0020#ZFIC0020#EVENT#START-OF-SELECTION#C1` + +#### [control_flow] 로그 모드에서 GET_ZFIT0010 으로 업로드 이력을 조회하고 로그용 ALV 설정·필드카탈로그·이벤트를 준비한다. + +```abap + 72| WHEN P_L. + 73| PERFORM GET_ZFIT0010. + 74| * ALV setting + 75| PERFORM ALV_SETTING. + 76| * ALV FIELD Define + 77| PERFORM FIELDCATALOG_MERGE_LOG. + 78| * ALV EVENT Define + 79| PERFORM EVENT_BUILD USING 'PF_T1000' SPACE SPACE C_X C_X GV_DBCNT. +``` + +- **EN**: In log mode read upload history via GET_ZFIT0010 and prepare the log ALV. +- 호출(파서): GET_ZFIT0010, ALV_SETTING, FIELDCATALOG_MERGE_LOG, EVENT_BUILD +- SAP 객체: ZFIT0010 +- 업무 키워드: 로그 조회, 업로드 이력, ALV 준비 +- English: upload log, ZFIT0010 +- 정의부(복사 시 함께 필요): [`P_L`](#decl-zfic0020top-122-p_l), [`C_X`](#decl-zficom-231-c_x), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIC0020/ZFIC0020#L72-L79` · confidence 0.8 · `ZFIC0020#ZFIC0020#EVENT#START-OF-SELECTION#C2` + +### FORM STRUCTURE_DATA — `ZFIC0020F01` L45-L94 (50줄) + +*업로드 엑셀이 가져야 할 컬럼 구조(항목명·타입·길이·필수여부·설명)를 DATA_WRITE 로 GT_STRUCT 에 나열하는 구조조회용 FORM이다.* + +> 이 unit 의 조각 1개가 47/50줄(94%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 그룹핑번호·헤더지시자·전표일자·전표유형·회사코드·통화·전기키·계정·금액·세액·사업장·원가대상·지급조건·참조·텍스트·거래은행 등 업로드 파일 컬럼 정의(타입·길이·필수·설명)를 DATA_WRITE 로 GT_STRUCT 에 적재하고 건수를 GV_DBCNT 에 둔다. + +```abap + 47| PERFORM DATA_WRITE USING : + 48| TEXT-T01 'CHAR' '010' TEXT-T99 TEXT-T51, "그룹핑번호 + 49| TEXT-T02 'CHAR' '001' TEXT-T99 TEXT-T52, "헤더지시자 + 50| TEXT-T03 'CHAR' '010' SPACE TEXT-T53, "전표번호 + 51| TEXT-T04 'CHAR' '008' TEXT-T99 TEXT-T54, "전표 증빙일 + 52| TEXT-T05 'CHAR' '008' TEXT-T99 TEXT-T55, "전표의 전기일 + 53| TEXT-T06 'CHAR' '002' TEXT-T99 TEXT-T56, "회계 기간 + 54| TEXT-T07 'CHAR' '002' TEXT-T99 TEXT-T57, "전표 유형 + 55| TEXT-T38 'CHAR' '004' TEXT-T99 TEXT-T88, "회사 코드 + 56| TEXT-T08 'CHAR' '005' TEXT-T99 TEXT-T58, "통화 키 + 57| TEXT-T09 'CHAR' '010' SPACE TEXT-T59, "환율 + 58| TEXT-T10 'CHAR' '008' SPACE TEXT-T60, "환산일 + 59| TEXT-T11 'CHAR' '016' SPACE TEXT-T61, "참조 전표 번호 + 60| TEXT-T12 'CHAR' '025' SPACE TEXT-T62, "전표 헤더 텍스트 + 61| TEXT-T13 'CHAR' '002' TEXT-T99 TEXT-T63, "전기 키 + 62| TEXT-T14 'CHAR' '010' TEXT-T99 TEXT-T64, "개별항목의 계정 + 63| TEXT-T15 'CHAR' '001' SPACE TEXT-T65, "특별 G/L 지시자 + 64| TEXT-T16 'CHAR' '003' SPACE TEXT-T66, "자산 거래 유형 + 65| TEXT-T17 'CHAR' '010' SPACE TEXT-T67, "조정 계정 + 66| TEXT-T18 'CHAR' '016' TEXT-T99 TEXT-T68, "전표 통화 금액 + 67| TEXT-T19 'CHAR' '016' SPACE TEXT-T69, "현지 통화 금액 + 68| TEXT-T20 'CHAR' '016' SPACE TEXT-T70, "전표 통화 세액 + 69| TEXT-T21 'CHAR' '016' SPACE TEXT-T71, "현지 통화 세액 + 70| TEXT-T39 'CHAR' '016' SPACE TEXT-T70, "전표 통화 세액 + 71| TEXT-T40 'CHAR' '016' SPACE TEXT-T71, "현지 통화 세액 + 72| TEXT-T22 'CHAR' '004' SPACE TEXT-T72, "사업장 + 73| TEXT-T23 'CHAR' '002' SPACE TEXT-T73, "세금코드 + 74| TEXT-T24 'CHAR' '004' SPACE TEXT-T74, "사업 영역 + 75| TEXT-T25 'CHAR' '024' SPACE TEXT-T75, "WBS Element + 76| TEXT-T26 'CHAR' '010' SPACE TEXT-T76, "코스트 센터 + 77| TEXT-T78 'CHAR' '010' SPACE TEXT-T77, "손익센터 + 78| TEXT-T43 'CHAR' '012' SPACE TEXT-T90, "네트워크번호 + 79| TEXT-T44 'CHAR' '004' SPACE TEXT-T91, "작업/액티비티 번호 + 80| TEXT-T27 'CHAR' '016' SPACE TEXT-T77, "자금 관리 센터 + 81| TEXT-T28 'CHAR' '012' SPACE TEXT-T78, "오더 번호 + 82| TEXT-T29 'CHAR' '008' SPACE TEXT-T79, "만기 계산 기준일 + 83| TEXT-T30 'CHAR' '004' SPACE TEXT-T80, "지급 조건 키 + 84| TEXT-T41 'CHAR' '003' SPACE TEXT-T88, "현금할인일 + 85| TEXT-T42 'CHAR' '001' SPACE TEXT-T88, "지급 방법 + 86| TEXT-T31 'CHAR' '012' SPACE TEXT-T81, "참조 1 + 87| TEXT-T32 'CHAR' '012' SPACE TEXT-T82, "참조 2 + 88| TEXT-T33 'CHAR' '020' SPACE TEXT-T83, "참조 3 + 89| TEXT-T34 'CHAR' '018' SPACE TEXT-T84, "지정 번호 + 90| TEXT-T35 'CHAR' '050' SPACE TEXT-T85, "품목텍스트 + 91| TEXT-T36 'CHAR' '005' SPACE TEXT-T86, "고유은행 + 92| TEXT-T37 'CHAR' '005' SPACE TEXT-T87. "은행거래처 + 93| GV_DBCNT = GV_SEQNO. +``` + +- **EN**: List the required upload file column definitions (name, type, length, mandatory flag, description) for header and line-item fields into GT_STRUCT via DATA_WRITE. +- 호출(파서): DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE, DATA_WRITE +- 업무 키워드: 업로드 구조, 컬럼 정의, 필수 항목, 템플릿 레이아웃 +- English: upload layout, structure inquiry, file format +- 정의부(복사 시 함께 필요): [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt), [`GV_SEQNO`](#decl-zficom-75-gv_seqno) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L47-L93` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#STRUCTURE_DATA#C1` + +### FORM FILE_DOWNLOAD — `ZFIC0020F01` L370-L376 (7줄) + +*웹 리포지토리(SMW0) 객체 MIZFIC0020 을 DOWNLOAD_WEB_OBJECT 로 내려받아 업로드 템플릿 파일을 제공하는 FORM이다.* + +> 이 unit 의 조각 1개가 4/7줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SMW0 웹 오브젝트 키 MIZFIC0020 으로 DOWNLOAD_WEB_OBJECT 를 호출해 전표 업로드용 엑셀 템플릿을 PC 로 다운로드한다. + +```abap + 372| LV_KEY = 'MIZFIC0020'. + 373| CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' + 374| EXPORTING + 375| KEY = LV_KEY. +``` + +- **EN**: Call DOWNLOAD_WEB_OBJECT with web repository key MIZFIC0020 to download the upload template file. +- 호출(파서): DOWNLOAD_WEB_OBJECT +- SAP 객체: DOWNLOAD_WEB_OBJECT, WWWDATATAB, SMW0 +- 업무 키워드: 템플릿 다운로드, 웹 오브젝트, 업로드 양식 +- English: DOWNLOAD_WEB_OBJECT, SMW0, template +- 정의부(복사 시 함께 필요): [`LV_KEY`](#decl-zfic0020f01-371-lv_key) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L372-L375` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#FILE_DOWNLOAD#C1` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIC0020/ZFICOM#L922-L939` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIC0020/ZFICOM#L941-L948` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM MODIFY_DATA — `ZFIC0020F01` L532-L582 (51줄) + +*업로드한 전표 행을 전표그룹별로 묶어 차·대변 합계가 맞는지 검증하고 신호등으로 표시한다.* + +> 이 unit 의 조각 2개가 45/51줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 엑셀에서 읽은 순서를 SEQNO2 에 보존한 뒤 전표그룹번호(SEQNO)와 엑셀 순서로 정렬한다 — 한 전표 안 라인 순서가 업로드 시트 순서와 같아야 하기 때문이다. + +```abap + 536| LOOP AT GT_LOAD. + 537| GT_LOAD-SEQNO2 = SY-TABIX. "현재 SEQUNECE 대로 값입력 + 538| MODIFY GT_LOAD. + 539| ENDLOOP. + 540| + 541| DATA : LV_SRBTR LIKE BSEG-WRBTR, + 542| LV_HRBTR LIKE BSEG-WRBTR, + 543| LV_WRBTR LIKE BSEG-WRBTR, + 544| LV_WMWST LIKE BSEG-WMWST. + 545| + 546| SORT GT_LOAD BY SEQNO SEQNO2. "전표그룹 번호와 엑셀시트 순서대로 소팅 +``` + +- **EN**: Preserves the original Excel row order in SEQNO2 and sorts by document group and that order so line sequence within a document matches the sheet. +- 테이블(파서): read - / write [GT_LOAD](/tables/GT_LOAD.md) +- SAP 객체: SEQNO, SEQNO2 +- 업무 키워드: 전표그룹, 엑셀순서, 정렬, 라인순서, 업로드 +- English: document group, Excel row order, sort, line sequence, upload +- 정의부(복사 시 함께 필요): [`GT_LOAD`](#decl-zfic0020top-6-gt_load) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L536-L546` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#MODIFY_DATA#C1` + +#### [validation] 행마다 전기키 마스터(TBSL)에서 계정유형·차대구분을 읽어 차변·대변 금액을 누적한다. 고객(D)·공급업체(K) 계정이면 세액을 빼고, 그 외 계정은 세액을 더해 합산한다. 전표그룹이 끝나는 지점(AT END OF SEQNO)에서 차변 합계와 대변 합계가 같으면 녹색, 다르면 적색 LED 를 세워 대차 불일치 전표를 업로드 전에 걸러낸다. + +```abap + 548| LOOP AT GT_LOAD. + 549| ALPHA_OUTPUT GT_LOAD-SEQNO GT_LOAD-SEQNO. + 550| READ TABLE GT_TBSL WITH KEY BSCHL = GT_LOAD-BSCHL. + 551| CHANGE_CURRENCY_SAP GT_LOAD-WRBTR LV_WRBTR C_WAERS. + 552| CHANGE_CURRENCY_SAP GT_LOAD-WMWST LV_WMWST C_WAERS. + 553| IF GT_TBSL-KOART EQ C_D OR GT_TBSL-KOART EQ C_K. + 554| IF GT_TBSL-SHKZG EQ C_S. + 555| LV_SRBTR = LV_SRBTR + LV_WRBTR - LV_WMWST. + 556| ELSE. + 557| LV_HRBTR = LV_HRBTR + LV_WRBTR - LV_WMWST. + 558| ENDIF. + 559| ELSE. + 560| IF GT_TBSL-SHKZG EQ C_S. + 561| LV_SRBTR = LV_SRBTR + LV_WRBTR + LV_WMWST. + 562| ELSE. + 563| LV_HRBTR = LV_HRBTR + LV_WRBTR + LV_WMWST. + 564| ENDIF. + 565| ENDIF. + 566| AT END OF SEQNO. + 567| GF_END = C_X. + 568| ENDAT. + 569| + 570| IF GF_END EQ C_X. + 571| ALPHA_OUTPUT GT_LOAD-SEQNO GT_LOAD-SEQNO. + 572| IF LV_SRBTR EQ LV_HRBTR. + 573| GT_LOAD-SICON = ICON_LED_GREEN. + 574| ELSE. + 575| GT_LOAD-SICON = ICON_LED_RED. + 576| ENDIF. + 577| GV_DBCNT = GV_DBCNT + 1. + 578| CLEAR : LV_SRBTR, LV_HRBTR, GF_END, LV_WRBTR, LV_WMWST. + 579| ENDIF. + 580| MODIFY GT_LOAD. + 581| ENDLOOP. +``` + +- **EN**: Per row: reads posting-key attributes from TBSL and accumulates debit/credit totals (tax excluded for customer/vendor accounts, included otherwise); at each document-group break, flags balanced documents green and unbalanced ones red. +- 테이블(파서): read - / write [GT_LOAD](/tables/GT_LOAD.md) +- SAP 객체: TBSL, BSEG, BSCHL, KOART, SHKZG, WRBTR, WMWST +- 업무 키워드: 대차검증, 차변, 대변, 전기키, 계정유형, 세액, 전표그룹, 대차일치, 신호등, 업로드검증 +- English: balance check, debit, credit, posting key, account type, tax amount, document group, balanced document, upload validation +- 정의부(복사 시 함께 필요): [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`ALPHA_OUTPUT`](#decl-zficom-282-alpha_output), [`GT_TBSL`](#decl-zfic0020top-58-gt_tbsl), [`CHANGE_CURRENCY_SAP`](#decl-zficom-346-change_currency_sap), [`LV_WRBTR`](#decl-zfic0020f01-543-lv_wrbtr), [`C_WAERS`](#decl-zficom-199-c_waers), [`LV_WMWST`](#decl-zfic0020f01-544-lv_wmwst), [`C_D`](#decl-zficom-211-c_d), [`C_K`](#decl-zficom-218-c_k), [`C_S`](#decl-zficom-226-c_s), [`LV_SRBTR`](#decl-zfic0020f01-541-lv_srbtr), [`LV_HRBTR`](#decl-zfic0020f01-542-lv_hrbtr) 외 3건 +- 위치: `abap://ZFIC0020/ZFIC0020F01#L548-L581` · confidence 0.87 · `ZFIC0020#ZFIC0020F01#FORM#MODIFY_DATA#C2` + +### FORM GET_TBSL — `ZFIC0020F01` L591-L599 (9줄) + +*전기키 마스터 TBSL 에서 전기키·차대변지시자·계정유형을 읽어 GT_TBSL 에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] TBSL 에서 전기키(BSCHL), 차/대변 지시자(SHKZG), 계정유형(KOART)을 모두 읽어 GT_TBSL 에 저장해 업로드 항목의 전기키 해석에 사용한다. + +```abap + 593| SELECT TBSL~BSCHL + 594| TBSL~SHKZG + 595| TBSL~KOART + 596| INTO CORRESPONDING FIELDS OF TABLE GT_TBSL + 597| FROM TBSL + 598| WHERE BSCHL NE SPACE. +``` + +- **EN**: Select posting key, debit/credit indicator and account type from TBSL into GT_TBSL for interpreting uploaded posting keys. +- 테이블(파서): read [TBSL](/tables/TBSL.md) / write - +- SAP 객체: TBSL +- 업무 키워드: 전기키, 차대변 지시자, 계정유형, 마스터 조회 +- English: posting key, TBSL, debit/credit indicator, account type +- 정의부(복사 시 함께 필요): [`GT_TBSL`](#decl-zfic0020top-58-gt_tbsl) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L593-L598` · confidence 0.9 · `ZFIC0020#ZFIC0020F01#FORM#GET_TBSL#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIC0020/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM GET_ZFIT0010 — `ZFIC0020F01` L605-L620 (16줄) + +*회사코드와 생성일자 범위로 업로드 이력 테이블 ZFIT0010 을 조회해 GT_Z0010 에 적재하고 SEQNO 로 정렬하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] ZFIT0010 에서 회사코드(P_BUKRS)와 생성일자(S_CPUDT) 조건으로 전표 업로드 이력을 읽어 GT_Z0010 에 적재하고, 없으면 메시지 I003 후 종료하며 있으면 건수를 저장하고 SEQNO 로 정렬한다. + +```abap + 607| SELECT * + 608| INTO TABLE GT_Z0010 + 609| FROM ZFIT0010 + 610| WHERE BUKRS EQ P_BUKRS + 611| AND CPUDT IN S_CPUDT. + 612| IF SY-DBCNT EQ 0. + 613| MESSAGE I003. + 614| LEAVE LIST-PROCESSING. + 615| ELSE. + 616| GV_DBCNT = SY-DBCNT. + 617| ENDIF. + 618| SORT GT_Z0010 BY SEQNO. +``` + +- **EN**: Select upload history from ZFIT0010 by company code and creation date range into GT_Z0010; exit with message I003 if none, else store the count and sort by SEQNO. +- 테이블(파서): read [ZFIT0010](/tables/ZFIT0010.md) / write - +- SAP 객체: ZFIT0010 +- 업무 키워드: 업로드 이력, 로그 조회, 회사코드, 생성일자 +- English: upload log, SELECT, history table +- 정의부(복사 시 함께 필요): [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010), [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs), [`S_CPUDT`](#decl-zfic0020top-128-s_cpudt), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L607-L618` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#GET_ZFIT0010#C1` + +### EVENT END-OF-SELECTION — `ZFIC0020` L85-L98 (14줄) + +*END-OF-SELECTION 에서 처리 모드(구조조회/업로드/로그)에 따라 GT_STRUCT·GT_LOAD·GT_Z0010 중 하나를 ALV_DISPLAY 로 출력하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 13/14줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 구조조회(P_S)면 GT_STRUCT, 업로드(P_U)면 GT_LOAD(전기 버튼 포함 PF 상태), 로그(P_L)면 ZFIT0010 이력 GT_Z0010 을 ALV_DISPLAY 로 출력하며 조회/로그 모드는 PF 상태·커맨드 핸들러를 비운다. + +```abap + 86| CASE C_X. + 87| * Structure : Layout Display + 88| WHEN P_S. + 89| CLEAR : GV_PF_STATUS, GV_USER_COMMAND. + 90| PERFORM ALV_DISPLAY TABLES GT_STRUCT. + 91| * Upload + 92| WHEN P_U. + 93| PERFORM ALV_DISPLAY TABLES GT_LOAD. + 94| * BDC : Log Display + 95| WHEN P_L. + 96| CLEAR : GV_PF_STATUS, GV_USER_COMMAND. + 97| PERFORM ALV_DISPLAY TABLES GT_Z0010. + 98| ENDCASE. +``` + +- **EN**: Depending on the selected mode display the structure table, uploaded documents or ZFIT0010 log via ALV_DISPLAY, clearing custom PF-status/user-command for structure and log modes. +- 호출(파서): ALV_DISPLAY, ALV_DISPLAY, ALV_DISPLAY +- SAP 객체: ZFIT0010 +- 업무 키워드: 처리 모드, 구조 조회, 업로드 결과, 로그 조회, ALV 출력 +- English: ALV display, mode dispatch +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`P_S`](#decl-zfic0020top-115-p_s), [`GV_PF_STATUS`](#decl-zfialv-75-gv_pf_status), [`GV_USER_COMMAND`](#decl-zfialv-76-gv_user_command), [`GT_STRUCT`](#decl-zficom-185-gt_struct), [`P_U`](#decl-zfic0020top-120-p_u), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`P_L`](#decl-zfic0020top-122-p_l), [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010) +- 위치: `abap://ZFIC0020/ZFIC0020#L86-L98` · confidence 0.8 · `ZFIC0020#ZFIC0020#EVENT#END-OF-SELECTION#C1` + +### FORM DATA_BDC — `ZFIC0020F01` L100-L148 (49줄) + +*BDC 모드를 정하고 GT_LOAD 를 SEQNO 단위로 묶어 전표 헤더/항목을 만들어 BDC 전기한 뒤 결과를 GT_LOAD 에 반영하고 ZFIT0010 이력에 저장하는 핵심 FORM이다.* + +> 이 unit 의 조각 3개가 41/49줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 선택화면 라디오버튼(P_A/P_E/P_N)에 따라 BDC 처리 모드(A 포그라운드/E 오류만/N 백그라운드)를 GV_MODE 에 설정하고 업로드 건수를 저장한다. + +```abap + 102| CASE C_X. + 103| WHEN P_A. + 104| GV_MODE = C_A. + 105| WHEN P_E. + 106| GV_MODE = C_E. + 107| WHEN P_N. + 108| GV_MODE = C_N. + 109| ENDCASE. + 110| * Upload number of item save + 111| DESCRIBE TABLE GT_LOAD LINES GV_TABIN. +``` + +- **EN**: Set the BDC processing mode (A/E/N) from the selection radio buttons and record the number of uploaded lines. +- 업무 키워드: BDC 모드, 포그라운드, 백그라운드, 오류만 표시 +- English: BDC mode, call transaction mode +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`P_A`](#decl-zfic0020top-108-p_a), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`P_E`](#decl-zfic0020top-106-p_e), [`C_E`](#decl-zficom-212-c_e), [`P_N`](#decl-zfic0020top-104-p_n), [`C_N`](#decl-zficom-221-c_n), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GV_TABIN`](#decl-zficom-81-gv_tabin) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L102-L111` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#DATA_BDC#C1` + +#### [control_flow] GT_LOAD 를 순회하며 SEQNO(그룹핑번호)가 바뀔 때 BBKPF/BBSEG 를 초기화하고 헤더지시자(XHEIN) 행은 MAKE_BKPF 로 헤더를, 각 행은 MAKE_BSEG 로 항목을 만들며 오류 대비용 GT_ERROR 에 복사한 뒤 SEQNO 끝에서 BDC_TRANSACTION_FB01 로 전기하고 전표번호·연도·메시지·아이콘을 GT_LOAD 에 반영한다. + +```abap + 116| LOOP AT GT_LOAD. + 117| MOVE-CORRESPONDING GT_LOAD TO GS_LOAD. + 118| AT NEW SEQNO. + 119| CLEAR : GT_BBKPF[], GT_BBKPF, GT_BBSEG[], GT_BBSEG, + 120| GV_BELNR, GV_GJAHR, GF_END. + 121| ENDAT. + 122| IF GS_LOAD-XHEIN EQ C_X. + 123| * Accounting Document Header + 124| PERFORM MAKE_BKPF. + 125| ENDIF. + 126| + 127| MOVE-CORRESPONDING GT_LOAD TO GT_ERROR. + 128| APPEND GT_ERROR. + 129| * Accounting Document Item + 130| PERFORM MAKE_BSEG. + 131| * The progress rate + 132| PERFORM STATUS_BAR USING 0 SPACE. + 133| AT END OF SEQNO. + 134| * Document Posting + 135| PERFORM BDC_TRANSACTION_FB01. + 136| GF_END = C_X. + 137| ENDAT. + 138| IF GF_END EQ C_X. + 139| GT_LOAD-BELNR = GV_BELNR. + 140| GT_LOAD-GJAHR = GV_GJAHR. + 141| GT_LOAD-MSG = GT_Z0010-NATXT. + 142| GT_LOAD-SICON = GT_Z0010-SICON. + 143| ENDIF. + 144| MODIFY GT_LOAD. + 145| ENDLOOP. +``` + +- **EN**: Loop over GT_LOAD grouped by SEQNO: build BBKPF header on the header-indicator row and BBSEG items per row, keep an error copy, post via BDC_TRANSACTION_FB01 at end of each group and write back document number, year, message and status icon. +- 테이블(파서): read - / write [GT_LOAD](/tables/GT_LOAD.md) +- 호출(파서): MAKE_BKPF, MAKE_BSEG, STATUS_BAR, BDC_TRANSACTION_FB01 +- SAP 객체: BBKPF, BBSEG, FB01 +- 업무 키워드: 그룹핑번호, 전표 헤더, 전표 항목, BDC 전기, 전표번호 반영, 오류 항목 +- English: control break, BBKPF, BBSEG, document posting, BDC +- 정의부(복사 시 함께 필요): [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GS_LOAD`](#decl-zfic0020top-66-gs_load), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GF_END`](#decl-zficom-140-gf_end), [`C_X`](#decl-zficom-231-c_x), [`GT_ERROR`](#decl-zfic0020top-68-gt_error), [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L116-L145` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#DATA_BDC#C2` + +#### [db_write] 전표 업로드 처리 결과(GT_Z0010)를 이력 테이블 ZFIT0010 에 MODIFY 로 저장해 로그 조회에 사용한다. + +```abap + 147| MODIFY ZFIT0010 FROM TABLE GT_Z0010. +``` + +- **EN**: Persist the upload processing results to history table ZFIT0010 with MODIFY FROM TABLE. +- 테이블(파서): read - / write [ZFIT0010](/tables/ZFIT0010.md) +- SAP 객체: ZFIT0010 +- 업무 키워드: 업로드 이력 저장, 처리 결과, 로그 테이블 +- English: MODIFY, upload history, ZFIT0010 +- 정의부(복사 시 함께 필요): [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L147-L147` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#DATA_BDC#C3` + +### FORM MAKE_BKPF — `ZFIC0020F01` L223-L244 (22줄) + +*엑셀 행(GS_LOAD)의 증빙일·전기일·전표유형·회사코드·기간·통화·환율·참조·헤더텍스트를 전표 헤더 구조 GT_BBKPF 에 매핑하고 T-Code(FB01/FBV1)를 정하는 FORM이다.* + +> 이 unit 의 조각 1개가 20/22줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 실행 버튼에 따라 BBKPF-TCODE 를 FB01(전기) 또는 FBV1(임시전기)로 정하고 GS_LOAD 의 증빙일(BLDAT)·전기일(BUDAT)·전표유형(BLART)·회사코드·회계기간·통화·환율·환산일·참조번호·헤더텍스트를 GT_BBKPF 에 매핑해 APPEND 한다. + +```abap + 224| IF GV_UCOMM EQ 'FB01'. + 225| GT_BBKPF-TCODE = C_FB01. + 226| ELSE. + 227| GT_BBKPF-TCODE = C_FBV1. + 228| ENDIF. + 229| GT_BBKPF-BLDAT = GS_LOAD-BLDAT. "Document Date in Document + 230| GT_BBKPF-BUDAT = GS_LOAD-BUDAT. "Posting Date in the Document + 231| GT_BBKPF-BLART = GS_LOAD-BLART. "Document type + 232| GT_BBKPF-BUKRS = GS_LOAD-BUKRS. "Company Code + 233| IF GS_LOAD-MONAT IS NOT INITIAL. + 234| GT_BBKPF-MONAT = GS_LOAD-MONAT. "Fiscal period + 235| ENDIF. + 236| GT_BBKPF-WAERS = GS_LOAD-WAERS. "Currency Key + 237| GT_BBKPF-KURSF = GS_LOAD-KURSF. + 238| IF GS_LOAD-WWERT IS NOT INITIAL. + 239| GT_BBKPF-WWERT = GS_LOAD-WWERT. + 240| ENDIF. + 241| GT_BBKPF-XBLNR = GS_LOAD-XBLNR. + 242| GT_BBKPF-BKTXT = GS_LOAD-BKTXT. "Document Header Text + 243| APPEND GT_BBKPF. +``` + +- **EN**: Set the BBKPF transaction code (FB01 post or FBV1 park) and map document date, posting date, document type, company code, period, currency, exchange rate, reference and header text from the uploaded row into GT_BBKPF. +- SAP 객체: BBKPF, FB01, FBV1 +- 업무 키워드: 전표 헤더, 증빙일, 전기일, 전표유형, 통화, 환율, 임시전기 +- English: BBKPF, document header, posting date, document type, exchange rate, park document +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`C_FB01`](#decl-zficom-255-c_fb01), [`C_FBV1`](#decl-zficom-254-c_fbv1), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GS_LOAD`](#decl-zfic0020top-66-gs_load) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L224-L243` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#MAKE_BKPF#C1` + +### FORM MAKE_BSEG — `ZFIC0020F01` L250-L301 (52줄) + +*엑셀 행(GS_LOAD)에서 전기키·계정·금액·세금·원가대상·지급조건 등을 전표 항목 구조 GT_BBSEG 에 매핑해 추가하는 FORM이다.* + +> 이 unit 의 조각 1개가 50/52줄(96%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] GS_LOAD 의 전기키(NEWBS)·계정(NEWKO/HKONT)·특별G/L·금액(WRBTR)·세금(WMWST/FWBAS)·외화 시 현지통화금액(DMBTR/MWSTS/HWBAS)·사업장·세금코드·원가센터·손익센터·WBS·오더·지급조건·참조키·텍스트·거래은행을 BBSEG 항목 구조에 매핑해 GT_BBSEG 에 APPEND 한다. + +```abap + 251| CLEAR GT_BBSEG. + 252| GT_BBSEG-NEWBS = GS_LOAD-BSCHL. "Posting Key + 253| GT_BBSEG-NEWKO = GS_LOAD-NEWKO. "Account for the Next Line Item + 254| GT_BBSEG-HKONT = GS_LOAD-AKONT. "General Ledger Account + 255| GT_BBSEG-NEWUM = GS_LOAD-UMSKZ. "Special G/L Indicator + 256| GT_BBSEG-ANBWA = GS_LOAD-ANBWA. + 257| GT_BBSEG-WRBTR = GS_LOAD-WRBTR. "Amount in document currency + 258| IF GS_LOAD-WMWST IS NOT INITIAL. + 259| GT_BBSEG-WMWST = GS_LOAD-WMWST. "Tax amount in document currency + 260| GT_BBSEG-FWBAS = GS_LOAD-FWBAS. "Tax amount in document currency + 261| ENDIF. + 262| IF GS_LOAD-WAERS NE C_WAERS. "외화인 경우 현지통화금액 세팅 + 263| GT_BBSEG-DMBTR = GS_LOAD-DMBTR. "Amount in local currency + 264| GT_BBSEG-MWSTS = GS_LOAD-MWSTS. "Tax Amount in Local Currency + 265| GT_BBSEG-HWBAS = GS_LOAD-HWBAS. "Tax amount in document currency + 266| ENDIF. + 267| GT_BBSEG-BUPLA = GS_LOAD-BUPLA. "Business Place + 268| GT_BBSEG-MWSKZ = GS_LOAD-MWSKZ. "Sales Tax Code + 269| GT_BBSEG-GSBER = GS_LOAD-GSBER. "Business Area + 270| GT_BBSEG-PROJK = GS_LOAD-PROJK. "WBS Element + 271| GT_BBSEG-KOSTL = GS_LOAD-KOSTL. "Cost Center + 272| GT_BBSEG-PRCTR = GS_LOAD-PRCTR. "Profit Center + 273| GT_BBSEG-NPLNR = GS_LOAD-NPLNR. "네트워크 + 274| GT_BBSEG-VORNR = GS_LOAD-VORNR. "액티비티 번호 + 275| GT_BBSEG-FISTL = GS_LOAD-FISTL. "자금 관리 센터 + 276| GT_BBSEG-AUFNR = GS_LOAD-AUFNR. "오더 번호 + 277| IF GS_LOAD-ZFBDT IS NOT INITIAL. + 278| GT_BBSEG-ZFBDT = GS_LOAD-ZFBDT. "만기계산기준일 + 279| ENDIF. + 280| GT_BBSEG-ZTERM = GS_LOAD-ZTERM. "Terms of payment key + 281| GT_BBSEG-ZBD1T = GS_LOAD-ZBD1T. "Terms of payment key + 282| GT_BBSEG-ZLSCH = GS_LOAD-ZLSCH. "Payment Method + 283| * GT_BBSEG-VALUT = GS_LOAD-VALUT. "Value date + 284| * GT_BBSEG-WDATE = GS_LOAD-WDATE. "Issue Date + 285| * GT_BBSEG-ZLSPR = GS_LOAD-ZLSPR. "Payment Block + 286| GT_BBSEG-XREF1 = GS_LOAD-XREF1. "Business partner reference key1 + 287| GT_BBSEG-XREF2 = GS_LOAD-XREF2. "Business partner reference key2 + 288| GT_BBSEG-XREF3 = GS_LOAD-XREF3. "Business partner reference key3 + 289| GT_BBSEG-ZUONR = GS_LOAD-ZUONR. "Assignment number + 290| GT_BBSEG-SGTXT = GS_LOAD-SGTXT. "Item Text + 291| GT_BBSEG-HBKID = GS_LOAD-HBKID. "House bank + 292| GT_BBSEG-HKTID = GS_LOAD-HKTID. "House bank + 293| * GT_BBSEG-XMWST = GS_LOAD-XMWST. "Calculate tax automatically + 294| * GT_BBSEG-FWBAS = GS_LOAD-FWBAS. "공급가액 + 295| * GT_BBSEG-HWBAS = GS_LOAD-HWBAS. "Tax Base Amount in Local Currency + 296| * GT_BBSEG-PRCTR = GS_LOAD-PRCTR. "Profit Center + 297| * GT_BBSEG-BVTYP = GS_LOAD-BVTYP. "Partner bank type + 298| * GT_BBSEG-MENGE = GS_LOAD-MENGE. "Quantity + 299| * GT_BBSEG-MEINS = GS_LOAD-MEINS. "Base Unit + 300| APPEND GT_BBSEG. +``` + +- **EN**: Map the uploaded row into the BBSEG line-item structure (posting key, account, special G/L, amounts, tax, local-currency amounts for foreign currency, cost objects, payment terms, references, text, house bank) and append it. +- SAP 객체: BBSEG +- 업무 키워드: 전표 항목, 전기키, G/L 계정, 세금, 외화 현지통화, 원가센터, 손익센터, 지급조건 +- English: BBSEG, posting key, G/L account, tax amount, local currency, cost center, profit center, payment terms +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GS_LOAD`](#decl-zfic0020top-66-gs_load), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L251-L300` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#MAKE_BSEG#C1` + +### FORM BDC_TRANSACTION_FB01 — `ZFIC0020F01` L154-L217 (64줄) + +*커스텀 FM Z_FI_DOCUMENT_POSTING 으로 전표 헤더/항목(BBKPF/BBSEG)을 BDC 전기하고 결과 전표번호·메시지를 GT_LOAD 아이콘·GT_BDCLOG·ZFIT0010 이력(GT_Z0010)에 기록하는 FORM이다.* + +> 이 unit 의 조각 2개가 59/64줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_FI_DOCUMENT_POSTING 을 BDC 모드(GV_MODE)로 호출해 GT_BBKPF/GT_BBSEG 로 회계전표를 전기하고, 전표번호가 생성되면 오류 테이블에서 해당 SEQNO 를 제거하고 녹색 아이콘, 실패면 적색 아이콘을 표시한다. + +```abap + 157| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 158| EXPORTING + 159| I_BDC_MODE = GV_MODE + 160| I_MESSAGE = SPACE + 161| IMPORTING + 162| E_BELNR = GV_BELNR + 163| E_GJAHR = GV_GJAHR + 164| E_BUKRS = GV_BUKRS + 165| TABLES + 166| T_BBKPF = GT_BBKPF + 167| T_BBSEG = GT_BBSEG + 168| T_MESSTAB = GT_FIMSG. + 169| * When succeed, data in error table is delete + 170| IF NOT GV_BELNR IS INITIAL. + 171| DELETE GT_ERROR WHERE SEQNO EQ GS_LOAD-SEQNO. + 172| GT_LOAD-SICON = ICON_LED_GREEN. + 173| ELSE. + 174| GT_LOAD-SICON = ICON_LED_RED. + 175| ENDIF. +``` + +- **EN**: Call Z_FI_DOCUMENT_POSTING with BBKPF/BBSEG tables to post the accounting document via BDC; on success remove the item from GT_ERROR and set a green icon, else red. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, BBKPF, BBSEG, FB01 +- 업무 키워드: 전표 전기, BDC 전기, 전표번호, 성공/실패 아이콘, 오류 테이블 +- English: document posting, BDC, BBKPF, BBSEG, accounting document +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GT_ERROR`](#decl-zfic0020top-68-gt_error), [`GS_LOAD`](#decl-zfic0020top-66-gs_load) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L157-L175` · confidence 0.95 · `ZFIC0020#ZFIC0020F01#FORM#BDC_TRANSACTION_FB01#C1` + +#### [aggregation] 처리 결과를 ZFIT0010 이력 구조(GT_Z0010: 처리일시·사용자·파일명·SEQNO·회사코드·전표번호·연도·아이콘)에 채우고, 반환 메시지 GT_FIMSG 를 MESSAGE_TEXT_BUILD 로 텍스트화해 GT_BDCLOG 에 쌓으며 오류 메시지를 이력 텍스트(NATXT)로 남긴다. + +```abap + 177| GT_BDCLOG-SEQNO = GS_LOAD-SEQNO. + 178| GT_Z0010-CPUDT = SY-DATUM. + 179| GT_Z0010-CPUTM = SY-UZEIT. + 180| GT_Z0010-USNAM = SY-UNAME. + 181| GT_Z0010-FILENAME = P_FNAME. + 182| ALPHA_INPUT GS_LOAD-SEQNO GS_LOAD-SEQNO. + 183| GT_Z0010-SEQNO = GS_LOAD-SEQNO. + 184| GT_Z0010-BUKRS = P_BUKRS. + 185| GT_Z0010-BELNR = GV_BELNR. + 186| GT_Z0010-GJAHR = GV_GJAHR. + 187| GT_Z0010-SICON = GT_LOAD-SICON. + 188| LOOP AT GT_FIMSG. + 189| GT_BDCLOG-TCODE = GV_UCOMM. + 190| GT_BDCLOG-PICK = C_X. + 191| GT_BDCLOG-MSGTY = GT_FIMSG-MSGTY. + 192| GT_BDCLOG-MSGID = GT_FIMSG-MSGID. + 193| GT_BDCLOG-MSGNO = GT_FIMSG-MSGNO. + 194| GT_BDCLOG-MSGV1 = GT_FIMSG-MSGV1. + 195| GT_BDCLOG-MSGV2 = GT_FIMSG-MSGV2. + 196| GT_BDCLOG-MSGV3 = GT_FIMSG-MSGV3. + 197| GT_BDCLOG-MSGV4 = GT_FIMSG-MSGV4. + 198| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 199| EXPORTING + 200| MSGID = GT_FIMSG-MSGID + 201| MSGNR = GT_FIMSG-MSGNO + 202| MSGV1 = GT_FIMSG-MSGV1 + 203| MSGV2 = GT_FIMSG-MSGV2 + 204| MSGV3 = GT_FIMSG-MSGV3 + 205| MSGV4 = GT_FIMSG-MSGV4 + 206| IMPORTING + 207| MESSAGE_TEXT_OUTPUT = GT_BDCLOG-NATXT. + 208| APPEND GT_BDCLOG. + 209| IF GT_FIMSG-MSGTY EQ C_E. + 210| GT_Z0010-NATXT = GT_BDCLOG-NATXT. + 211| ENDIF. + 212| ENDLOOP. + 213| IF GT_Z0010-NATXT IS INITIAL. + 214| GT_Z0010-NATXT = GT_BDCLOG-NATXT. + 215| ENDIF. + 216| APPEND GT_Z0010. +``` + +- **EN**: Fill the ZFIT0010 history record (timestamp, user, file, sequence, company code, document number, icon) and build readable BDC log messages from GT_FIMSG via MESSAGE_TEXT_BUILD, keeping the error text in NATXT. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: ZFIT0010, MESSAGE_TEXT_BUILD +- 업무 키워드: 처리 이력, BDC 로그, 메시지 텍스트, 업로드 결과 +- English: upload history, BDC log, MESSAGE_TEXT_BUILD +- 정의부(복사 시 함께 필요): [`GT_BDCLOG`](#decl-zfic0020top-70-gt_bdclog), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GS_LOAD`](#decl-zfic0020top-66-gs_load), [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`ALPHA_INPUT`](#decl-zficom-267-alpha_input), [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`GV_UCOMM`](#decl-zficom-71-gv_ucomm) 외 2건 +- 위치: `abap://ZFIC0020/ZFIC0020F01#L177-L216` · confidence 0.9 · `ZFIC0020#ZFIC0020F01#FORM#BDC_TRANSACTION_FB01#C2` + +### FORM DATA_DOWNLOAD — `ZFIC0020F01` L307-L331 (25줄) + +*오류 발생 항목(GT_ERROR)을 원본 파일명에 접미어를 붙인 파일로 GUI_DOWNLOAD 하는 FORM이다.* + +> 이 unit 의 조각 1개가 17/25줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 업로드 파일명의 확장자 앞에 TEXT-P06 접미어를 끼워 오류 파일명을 만들고 GUI_DOWNLOAD 로 오류 항목 GT_ERROR 를 PC 에 내려받으며 실패 시 시스템 메시지를 낸다. + +```abap + 314| LV_LEN = STRLEN( P_FNAME ). + 315| LV_POS = LV_LEN - 4. + 316| + 317| CONCATENATE P_FNAME(LV_POS) TEXT-P06 P_FNAME+LV_POS(4) + 318| INTO LV_FILENAME. + 319| + 320| CALL FUNCTION 'GUI_DOWNLOAD' + 321| EXPORTING + 322| FILENAME = LV_FILENAME + 323| * FILETYPE = 'ASC' + 324| * CODEPAGE = '8500' + 325| TABLES + 326| DATA_TAB = GT_ERROR. + 327| IF SY-SUBRC NE 0. + 328| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 329| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 330| ENDIF. +``` + +- **EN**: Build an error file name by inserting a suffix before the extension of the upload file and download GT_ERROR via GUI_DOWNLOAD. +- 호출(파서): GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD +- 업무 키워드: 오류 파일 다운로드, 오류 항목, 파일명 생성 +- English: GUI_DOWNLOAD, error file, download +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zfic0020f01-311-lv_len), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`LV_POS`](#decl-zfic0020f01-312-lv_pos), [`LV_FILENAME`](#decl-zfic0020f01-309-lv_filename), [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`GT_ERROR`](#decl-zfic0020top-68-gt_error) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L314-L330` · confidence 0.9 · `ZFIC0020#ZFIC0020F01#FORM#DATA_DOWNLOAD#C1` + +### FORM LOG_DISPLAY — `ZFIC0020F01` L337-L345 (9줄) + +*BDC 처리 로그 GT_BDCLOG 를 ZFIS0040 구조 기반 필드카탈로그(SEQNO·TCODE·T_MSG)로 로그 ALV 에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] GT_BDCLOG 를 ZFIS0040 컨텍스트로 로그 객체를 만들고 SEQNO·TCODE·메시지 컬럼 필드카탈로그를 정의한 뒤 LOG_ALV_DISPLAY 로 BDC 로그를 출력한다. + +```abap + 340| PERFORM LOG_CREATE USING GS_BDCLOG 'GT_BDCLOG' LS_CONTEXT 'ZFIS0040'. + 341| PERFORM LOG_FIELDCATALOG USING : 'ZFIS0040' 'SEQNO' SPACE, + 342| 'ZFIS0040' 'TCODE' SPACE, + 343| 'BAL_S_SHOW' 'T_MSG' SPACE. + 344| PERFORM LOG_ALV_DISPLAY. +``` + +- **EN**: Create the log object for GT_BDCLOG with context ZFIS0040, define SEQNO/TCODE/message columns and display the BDC log ALV. +- 호출(파서): LOG_CREATE, LOG_FIELDCATALOG, LOG_FIELDCATALOG, LOG_FIELDCATALOG, LOG_ALV_DISPLAY +- SAP 객체: ZFIS0040, BAL_S_SHOW +- 업무 키워드: BDC 로그, 로그 출력, 메시지 목록 +- English: BDC log, application log, ALV +- 정의부(복사 시 함께 필요): [`GT_BDCLOG`](#decl-zfic0020top-70-gt_bdclog), [`GS_BDCLOG`](#decl-zfic0020top-86-gs_bdclog), [`LS_CONTEXT`](#decl-zfic0020f01-339-ls_context) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L340-L344` · confidence 0.8 · `ZFIC0020#ZFIC0020F01#FORM#LOG_DISPLAY#C1` + +### FORM SET_STATUS — `ZFIC0020F01` L462-L469 (8줄) + +*ALV PF 상태 PF_S1000 을 설정하되 로그 모드(P_L)나 실행 완료 후에는 FB01/FBV1 전기 버튼을 제외하는 FORM이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 로그 조회 모드(P_L)이거나 이미 전기를 실행(GV_RUN)한 경우 FB01·FBV1 기능코드를 제외 목록에 넣고 PF-STATUS PF_S1000 을 설정해 중복 전기를 막는다. + +```abap + 463| IF P_L EQ C_X OR GV_RUN EQ C_X. + 464| APPEND 'FB01' TO P_EXCL. + 465| APPEND 'FBV1' TO P_EXCL. + 466| ENDIF. + 467| + 468| SET PF-STATUS 'PF_S1000' EXCLUDING P_EXCL IMMEDIATELY. +``` + +- **EN**: Exclude FB01/FBV1 function codes from PF-STATUS PF_S1000 in log mode or after a posting run to prevent duplicate posting. +- 업무 키워드: PF 상태, 전기 버튼 제외, 중복 전기 방지, 로그 모드 +- English: PF-STATUS, exclude function codes +- 정의부(복사 시 함께 필요): [`P_L`](#decl-zfic0020top-122-p_l), [`C_X`](#decl-zficom-231-c_x), [`GV_RUN`](#decl-zfic0020top-88-gv_run) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L463-L468` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#SET_STATUS#C1` + +### FORM USER_COMMAND — `ZFIC0020F01` L478-L526 (49줄) + +*ALV 사용자 명령 핸들러로 전기실행(FB01)/임시전기(FBV1)는 DATA_BDC 로 전표 생성, BLOG 는 BDC 로그 표시, 전표번호 더블클릭은 FB03 조회를 분기한다.* + +> 이 unit 의 조각 3개가 39/49줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전기실행(FB01) 또는 임시전기(FBV1) 버튼 시 DATA_BDC 로 업로드 전표를 BDC 생성하고 ALV 를 행·열 안정 상태로 갱신하며 실행 완료 플래그(GV_RUN)를 세운다. + +```abap + 483| WHEN 'FB01'. + 484| PERFORM DATA_BDC. + 485| * PERFORM LOG_DISPLAY. + 486| P_SELFIELD-REFRESH = C_X. + 487| P_SELFIELD-COL_STABLE = C_X. + 488| P_SELFIELD-ROW_STABLE = C_X. + 489| GV_RUN = C_X. + 490| * 임시전기실행 + 491| WHEN 'FBV1'. + 492| PERFORM DATA_BDC. + 493| * PERFORM LOG_DISPLAY. + 494| P_SELFIELD-REFRESH = C_X. + 495| P_SELFIELD-COL_STABLE = C_X. + 496| P_SELFIELD-ROW_STABLE = C_X. + 497| GV_RUN = C_X. +``` + +- **EN**: On FB01/FBV1 function codes run DATA_BDC to post the uploaded documents via BDC, then refresh the ALV and set the run flag. +- 호출(파서): DATA_BDC, DATA_BDC +- SAP 객체: FB01, FBV1 +- 업무 키워드: 전기 실행, 임시 전기, 전표 생성, BDC 실행, ALV 갱신 +- English: document posting, park document, BDC, FB01, FBV1 +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GV_RUN`](#decl-zfic0020top-88-gv_run) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L483-L497` · confidence 0.9 · `ZFIC0020#ZFIC0020F01#FORM#USER_COMMAND#C1` + +#### [control_flow] BLOG 버튼 시 GT_BDCLOG 에 로그가 있으면 LOG_DISPLAY 로 BDC 처리 로그를 보여주고 없으면 안내 메시지(I009)를 낸다. + +```abap + 499| WHEN 'BLOG'. + 500| READ TABLE GT_BDCLOG INDEX 1. + 501| IF SY-SUBRC EQ 0. + 502| PERFORM LOG_DISPLAY. + 503| ELSE. + 504| MESSAGE I009. + 505| ENDIF. +``` + +- **EN**: Show the BDC processing log via LOG_DISPLAY when entries exist, otherwise issue information message I009. +- 호출(파서): LOG_DISPLAY +- 업무 키워드: BDC 로그, 로그 조회, 메시지 +- English: BDC log, log display +- 정의부(복사 시 함께 필요): [`GT_BDCLOG`](#decl-zfic0020top-70-gt_bdclog) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L499-L505` · confidence 0.85 · `ZFIC0020#ZFIC0020F01#FORM#USER_COMMAND#C2` + +#### [control_flow] 더블클릭한 컬럼이 GT_LOAD-BELNR 또는 GT_Z0010-BELNR(ZFIT0010 이력)이면 해당 행의 전표번호·회계연도로 CALL_TRANSACTION_FB03 을 호출해 회계전표를 조회한다. + +```abap + 507| WHEN '&IC1'. + 508| CASE P_SELFIELD-SEL_TAB_FIELD. + 509| * Accounting Document Number + 510| WHEN 'GT_LOAD-BELNR'. + 511| READ TABLE GT_LOAD INDEX P_SELFIELD-TABINDEX. + 512| CHECK GT_LOAD-BELNR IS NOT INITIAL. + 513| PERFORM CALL_TRANSACTION_FB03 USING P_BUKRS + 514| GT_LOAD-BELNR + 515| GT_LOAD-GJAHR. + 516| * Accounting Document Number + 517| WHEN 'GT_Z0010-BELNR'. + 518| READ TABLE GT_Z0010 INDEX P_SELFIELD-TABINDEX. + 519| CHECK GT_Z0010-BELNR IS NOT INITIAL. + 520| PERFORM CALL_TRANSACTION_FB03 USING P_BUKRS + 521| GT_Z0010-BELNR + 522| GT_Z0010-GJAHR. + 523| ENDCASE. +``` + +- **EN**: On double-click of the document number column read the row and call FB03 (CALL_TRANSACTION_FB03) with company code, document number and fiscal year. +- 호출(파서): CALL_TRANSACTION_FB03, CALL_TRANSACTION_FB03 +- SAP 객체: FB03, ZFIT0010 +- 업무 키워드: 전표 조회, 더블클릭, 전표번호, 회계연도 +- English: accounting document display, FB03, hotspot +- 정의부(복사 시 함께 필요): [`GT_LOAD`](#decl-zfic0020top-6-gt_load), [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs), [`ZFIT0010`](#decl-zfic0020top-4-zfit0010), [`GT_Z0010`](#decl-zfic0020top-64-gt_z0010) +- 위치: `abap://ZFIC0020/ZFIC0020F01#L507-L523` · confidence 0.9 · `ZFIC0020#ZFIC0020F01#FORM#USER_COMMAND#C3` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs) +- 위치: `abap://ZFIC0020/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIC0020#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIC0020/ZFICOM#L380-L386` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIC0020/ZFICOM#L401-L407` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIC0020/ZFICOM#L423-L427` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIC0020/ZFICOM#L443-L463` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIC0020/ZFICOM#L482-L489` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIC0020/ZFICOM#L510-L518` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0020/ZFICOM#L529-L535` · confidence 0.93 · `ZFIC0020#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0020/ZFICOM#L547-L562` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIC0020/ZFICOM#L578-L591` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIC0020/ZFICOM#L613-L621` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIC0020/ZFICOM#L642-L649` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0020/ZFICOM#L682-L702` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIC0020/ZFICOM#L761-L769` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIC0020/ZFICOM#L787-L806` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIC0020/ZFICOM#L864-L867` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`P_FNAME`](#decl-zfic0020top-99-p_fname), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIC0020/ZFICOM#L869-L885` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data), [`P_FNAME`](#decl-zfic0020top-99-p_fname) +- 위치: `abap://ZFIC0020/ZFICOM#L887-L907` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIC0020/ZFICOM#L967-L998` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIC0020/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIC0020/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIC0020/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIC0020/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIC0020/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIC0020#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIC0020/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIC0020/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIC0020/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfic0020top-98-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIC0020/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIC0020#ZFICOM#FORM#BDC_FK03#C1` + +## 정의부 (306건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFIC0020TOP` (20건) + +#### ZFIT0010 — tables · L4-L4 {#decl-zfic0020top-4-zfit0010} + +```abap +TABLES : ZFIT0010. "전표생성로그 +``` + +#### GT_LOAD — data · L6-L56 {#decl-zfic0020top-6-gt_load} + +```abap +DATA : BEGIN OF GT_LOAD OCCURS 0, + SEQNO(10) TYPE N, "그룹핑번호 + XHEIN(01), "헤더지시자 + BELNR LIKE BKPF-BELNR, "전표번호 + BLDAT LIKE BKPF-BLDAT, "Document Date + BUDAT LIKE BKPF-BUDAT, "Posting Date + MONAT LIKE BKPF-MONAT, "회계 기간 + BLART LIKE BKPF-BLART, "전표 유형 + BUKRS LIKE BKPF-BUKRS, "회사 코드 + WAERS LIKE BKPF-WAERS, "Currency + KURSF(10), "Rate + WWERT LIKE BKPF-WWERT, "환산일 + XBLNR LIKE BKPF-XBLNR, "Reference + BKTXT LIKE BKPF-BKTXT, "HeaderText + BSCHL LIKE BSEG-BSCHL, "Posting key + NEWKO LIKE BBSEG-NEWKO, "Account + UMSKZ LIKE BSEG-UMSKZ, "Special G/L Indicator + ANBWA LIKE BSEG-ANBWA, "자산 거래 유형 + AKONT LIKE LFB1-AKONT, "Recon. Account + WRBTR LIKE BBSEG-WRBTR, "Amount in document currency + DMBTR LIKE BBSEG-DMBTR, "Amount in local currency + WMWST LIKE BBSEG-WMWST, "Tax amount in document currency + MWSTS LIKE BBSEG-MWSTS, "Tax Amount in Local Currency + FWBAS LIKE BBSEG-FWBAS, "Tax Amount in Local Currency + HWBAS LIKE BBSEG-HWBAS, "Tax Amount in Local Currency + BUPLA LIKE BSEG-BUPLA, "Business Place + MWSKZ LIKE BSEG-MWSKZ, "Sales Tax Code + GSBER LIKE BSEG-GSBER, "Business Area + PROJK(24), "WBS Element + KOSTL LIKE BSEG-KOSTL, "Cost Center + PRCTR LIKE BBSEG-PRCTR, "손익센터 + NPLNR LIKE BSEG-NPLNR, "계정지정 네트워크번호 + VORNR LIKE BBSEG-VORNR, "작업/액티비티 번호 + FISTL LIKE BSEG-FISTL, "자금 관리 센터 + AUFNR LIKE BSEG-AUFNR, "오더 번호 + ZFBDT LIKE BSEG-ZFBDT, "Baseline date for due date calculation + ZTERM LIKE BSEG-ZTERM, "Terms of payment key + ZBD1T LIKE BBSEG-ZBD1T, "현금할인일 + ZLSCH LIKE BSEG-ZLSCH, "지급 방법 + XREF1 LIKE BSEG-XREF1, "참조 키1 + XREF2 LIKE BSEG-XREF2, "참조 키2 + XREF3 LIKE BSEG-XREF3, "참조 키3 + ZUONR LIKE BSEG-ZUONR, "Assignment + SGTXT LIKE BSEG-SGTXT, "Item text + HBKID LIKE BSEG-HBKID, "House bank + HKTID LIKE BSEG-HKTID, "계정 명세에 대한 ID + GJAHR LIKE BKPF-GJAHR, "회계연도 + SICON LIKE ICON-ID, + SEQNO2(10) TYPE N, "Excel Sequence 번호(Sort 용) + MSG(100) TYPE C, + END OF GT_LOAD. +``` + +#### GT_TBSL — data · L58-L62 {#decl-zfic0020top-58-gt_tbsl} + +```abap +DATA : BEGIN OF GT_TBSL OCCURS 0, + BSCHL LIKE TBSL-BSCHL, + SHKZG LIKE TBSL-SHKZG, + KOART LIKE TBSL-KOART, + END OF GT_TBSL. +``` + +#### GT_Z0010 — data · L64-L64 {#decl-zfic0020top-64-gt_z0010} + +```abap +DATA : GT_Z0010 LIKE ZFIT0010 OCCURS 0 WITH HEADER LINE. +``` + +#### GS_LOAD — data · L66-L66 {#decl-zfic0020top-66-gs_load} + +```abap +DATA : GS_LOAD LIKE GT_LOAD. +``` + +#### GT_ERROR — data · L68-L68 {#decl-zfic0020top-68-gt_error} + +```abap +DATA : GT_ERROR LIKE GT_LOAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BDCLOG — data · L70-L84 {#decl-zfic0020top-70-gt_bdclog} + +```abap +DATA : BEGIN OF GT_BDCLOG OCCURS 0, + SEQNO TYPE RSNRCHAR, "Sequence + TCODE LIKE SY-TCODE, "Transaction Code + MSGTY LIKE MSG_TAB_LINE-MSGTY, "Message Type + NATXT LIKE MSG_TAB_LINE-NATXT, "Message Text + MSGID LIKE MSG_TAB_LINE-MSGID, "Message Class + MSGNO LIKE MSG_TAB_LINE-MSGNO, "Message Number + MSGV1 LIKE MSG_TAB_LINE-MSGV1, "Message Variables + MSGV2 LIKE MSG_TAB_LINE-MSGV2, "Message Variables + MSGV3 LIKE MSG_TAB_LINE-MSGV3, "Message Variables + MSGV4 LIKE MSG_TAB_LINE-MSGV4, "Message Variables + PICK LIKE MSG_TAB_LINE-PICK, "Single-Character Flag + POSTED LIKE MSG_TAB_LINE-POSTED, "Checkbox + NEWKEY LIKE MSG_TAB_LINE-NEWKEY, "Checkbox + END OF GT_BDCLOG. +``` + +#### GS_BDCLOG — data · L86-L86 {#decl-zfic0020top-86-gs_bdclog} + +```abap +DATA : GS_BDCLOG LIKE GT_BDCLOG. +``` + +#### GV_RUN — data · L88-L88 {#decl-zfic0020top-88-gv_run} + +```abap +DATA: GV_RUN(1) TYPE C. "실행여부 +``` + +#### C_TCODE — constants · L92-L92 {#decl-zfic0020top-92-c_tcode} + +```abap +CONSTANTS : C_TCODE LIKE BKPF-TCODE VALUE 'FB01'. "T-Code +``` + +#### P_BUKRS — parameter · L98-L98 {#decl-zfic0020top-98-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE BKPF-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_FNAME — parameter · L99-L99 {#decl-zfic0020top-99-p_fname} + +```abap +PARAMETERS: + P_FNAME LIKE RLGRAP-FILENAME. +``` + +#### P_N — parameter · L104-L104 {#decl-zfic0020top-104-p_n} + +```abap +PARAMETERS : P_N RADIOBUTTON GROUP G1. "BACKGROUND +``` + +#### P_E — parameter · L106-L106 {#decl-zfic0020top-106-p_e} + +```abap +PARAMETERS : P_E RADIOBUTTON GROUP G1. "DISPLAY ERRORS ONLY +``` + +#### P_A — parameter · L108-L108 {#decl-zfic0020top-108-p_a} + +```abap +PARAMETERS : P_A RADIOBUTTON GROUP G1. "PROCESS/FOREGROUND +``` + +#### P_S — parameter · L115-L115 {#decl-zfic0020top-115-p_s} + +```abap +PARAMETERS : P_S RADIOBUTTON GROUP G2 DEFAULT 'X' USER-COMMAND MODU. +``` + +#### P_D — parameter · L118-L118 {#decl-zfic0020top-118-p_d} + +```abap +PARAMETERS : P_D RADIOBUTTON GROUP G2. "Download +``` + +#### P_U — parameter · L120-L120 {#decl-zfic0020top-120-p_u} + +```abap +PARAMETERS : P_U RADIOBUTTON GROUP G2. "Upload +``` + +#### P_L — parameter · L122-L122 {#decl-zfic0020top-122-p_l} + +```abap +PARAMETERS : P_L RADIOBUTTON GROUP G2. "Log +``` + +#### S_CPUDT — select-option · L128-L128 {#decl-zfic0020top-128-s_cpudt} + +```abap +SELECT-OPTIONS : S_CPUDT FOR BKPF-CPUDT MODIF ID L. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIC0020F01` (9건) + +#### LV_FILENAME — data · unit 로컬 · L309-L309 {#decl-zfic0020f01-309-lv_filename} + +```abap + DATA : LV_FILENAME TYPE STRING. +``` + +#### LV_LEN — data · unit 로컬 · L311-L311 {#decl-zfic0020f01-311-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L312-L312 {#decl-zfic0020f01-312-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LS_CONTEXT — data · unit 로컬 · L339-L339 {#decl-zfic0020f01-339-ls_context} + +```abap + DATA : LS_CONTEXT TYPE ZFIS0040. +``` + +#### LV_KEY — data · unit 로컬 · L371-L371 {#decl-zfic0020f01-371-lv_key} + +```abap + DATA : LV_KEY LIKE WWWDATATAB. +``` + +#### LV_SRBTR — data · unit 로컬 · L541-L541 {#decl-zfic0020f01-541-lv_srbtr} + +```abap + DATA : LV_SRBTR LIKE BSEG-WRBTR. +``` + +#### LV_HRBTR — data · unit 로컬 · L542-L542 {#decl-zfic0020f01-542-lv_hrbtr} + +```abap +DATA: + LV_HRBTR LIKE BSEG-WRBTR. +``` + +#### LV_WRBTR — data · unit 로컬 · L543-L543 {#decl-zfic0020f01-543-lv_wrbtr} + +```abap +DATA: + LV_WRBTR LIKE BSEG-WRBTR. +``` + +#### LV_WMWST — data · unit 로컬 · L544-L544 {#decl-zfic0020f01-544-lv_wmwst} + +```abap +DATA: + LV_WMWST LIKE BSEG-WMWST. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| INITIALIZATION | EVENT | ZFIC0020 L29-33 | 0 | 본문이 비어 있는 INITIALIZATION 이벤트 블록이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZFIC0020 L34-39 | 0 | P_FNAME F4 이벤트에서 TMEP_SELECT(파일 선택 대화상자)를 호출하는 플러밍 블록이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIC0020 L40-45 | 0 | AT SELECTION-SCREEN OUTPUT 에서 MODIFY_SCREEN 을 호출하는 플러밍 블록이다. | +| START-OF-SELECTION | EVENT | ZFIC0020 L46-84 | 2 | START-OF-SELECTION 에서 모드별(구조조회/템플릿 다운로드/업로드/로그)로 파일 검증·엑셀 업로드·ZFIT0010 조회·ALV 준비를 분기하는 메인 흐름이다. | +| END-OF-SELECTION | EVENT | ZFIC0020 L85-98 | 1 | END-OF-SELECTION 에서 처리 모드(구조조회/업로드/로그)에 따라 GT_STRUCT·GT_LOAD·GT_Z0010 중 하나를 ALV_DISPLAY 로 출력하는 디스패치 블록이다. | +| TMEP_SELECT | FORM | ZFIC0020F01 L9-24 | 0 | WS_FILENAME_GET 으로 업로드 파일 선택 대화상자를 띄워 P_FNAME 에 파일 경로를 받는 F4 helper FORM이다. | +| STRUCTURE_DISPLAY | FORM | ZFIC0020F01 L30-39 | 0 | 구조조회 모드에서 STRUCTURE_DATA·ALV 설정·필드카탈로그·이벤트를 순서대로 호출하는 디스패치 FORM이다. | +| STRUCTURE_DATA | FORM | ZFIC0020F01 L45-94 | 1 | 업로드 엑셀이 가져야 할 컬럼 구조(항목명·타입·길이·필수여부·설명)를 DATA_WRITE 로 GT_STRUCT 에 나열하는 구조조회용 FORM이다. | +| DATA_BDC | FORM | ZFIC0020F01 L100-148 | 3 | BDC 모드를 정하고 GT_LOAD 를 SEQNO 단위로 묶어 전표 헤더/항목을 만들어 BDC 전기한 뒤 결과를 GT_LOAD 에 반영하고 ZFIT0010 이력에 저장하는 핵심 FORM이다. | +| BDC_TRANSACTION_FB01 | FORM | ZFIC0020F01 L154-217 | 2 | 커스텀 FM Z_FI_DOCUMENT_POSTING 으로 전표 헤더/항목(BBKPF/BBSEG)을 BDC 전기하고 결과 전표번호·메시지를 GT_LOAD 아이콘·GT_BDCLOG·ZFIT0010 이력(GT_Z0010)에 기록하는 FORM이다. | +| MAKE_BKPF | FORM | ZFIC0020F01 L223-244 | 1 | 엑셀 행(GS_LOAD)의 증빙일·전기일·전표유형·회사코드·기간·통화·환율·참조·헤더텍스트를 전표 헤더 구조 GT_BBKPF 에 매핑하고 T-Code(FB01/FBV1)를 정하는 FORM이다. | +| MAKE_BSEG | FORM | ZFIC0020F01 L250-301 | 1 | 엑셀 행(GS_LOAD)에서 전기키·계정·금액·세금·원가대상·지급조건 등을 전표 항목 구조 GT_BBSEG 에 매핑해 추가하는 FORM이다. | +| DATA_DOWNLOAD | FORM | ZFIC0020F01 L307-331 | 1 | 오류 발생 항목(GT_ERROR)을 원본 파일명에 접미어를 붙인 파일로 GUI_DOWNLOAD 하는 FORM이다. | +| LOG_DISPLAY | FORM | ZFIC0020F01 L337-345 | 1 | BDC 처리 로그 GT_BDCLOG 를 ZFIS0040 구조 기반 필드카탈로그(SEQNO·TCODE·T_MSG)로 로그 ALV 에 표시하는 FORM이다. | +| MODIFY_SCREEN | FORM | ZFIC0020F01 L351-364 | 0 | 로그 조회 모드(P_L)일 때만 그룹 L 의 선택화면 필드를 활성/표시하는 LOOP AT SCREEN 플러밍 FORM이다. | +| FILE_DOWNLOAD | FORM | ZFIC0020F01 L370-376 | 1 | 웹 리포지토리(SMW0) 객체 MIZFIC0020 을 DOWNLOAD_WEB_OBJECT 로 내려받아 업로드 템플릿 파일을 제공하는 FORM이다. | +| FIELDCATALOG_MERGE | FORM | ZFIC0020F01 L382-454 | 0 | 업로드 ALV(GT_LOAD)의 필드카탈로그를 생성하고 컬럼 텍스트·정렬·핫스팟·숨김을 설정하는 ALV 설정 FORM이다. | +| SET_STATUS | FORM | ZFIC0020F01 L462-469 | 1 | ALV PF 상태 PF_S1000 을 설정하되 로그 모드(P_L)나 실행 완료 후에는 FB01/FBV1 전기 버튼을 제외하는 FORM이다. | +| USER_COMMAND | FORM | ZFIC0020F01 L478-526 | 3 | ALV 사용자 명령 핸들러로 전기실행(FB01)/임시전기(FBV1)는 DATA_BDC 로 전표 생성, BLOG 는 BDC 로그 표시, 전표번호 더블클릭은 FB03 조회를 분기한다. | +| MODIFY_DATA | FORM | ZFIC0020F01 L532-582 | 2 | 업로드한 전표 행을 전표그룹별로 묶어 차·대변 합계가 맞는지 검증하고 신호등으로 표시한다. | +| GET_TBSL | FORM | ZFIC0020F01 L591-599 | 1 | 전기키 마스터 TBSL 에서 전기키·차대변지시자·계정유형을 읽어 GT_TBSL 에 적재하는 FORM이다. | +| GET_ZFIT0010 | FORM | ZFIC0020F01 L605-620 | 1 | 회사코드와 생성일자 범위로 업로드 이력 테이블 ZFIT0010 을 조회해 GT_Z0010 에 적재하고 SEQNO 로 정렬하는 FORM이다. | +| FIELDCATALOG_MERGE_LOG | FORM | ZFIC0020F01 L629-651 | 0 | ZFIT0010 로그 ALV 용 필드카탈로그를 생성하고 컬럼 정렬·키·핫스팟 속성을 조정하는 ALV 설정 FORM이다. | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | diff --git a/wiki/programs/ZFIR0010.md b/wiki/programs/ZFIR0010.md new file mode 100644 index 0000000..ec838db --- /dev/null +++ b/wiki/programs/ZFIR0010.md @@ -0,0 +1,3543 @@ +--- +type: abap-program +title: "ZFIR0010 — 거래처마스터 I/F 이력조회" +description: "외부 시스템에서 연계로 넘어온 거래처(고객/공급업체) 마스터 변경 요청 내역을 담은 CBO 테이블 ZFIT0030 을 조회하는 이력 조회 리포트다. 요청일자와 처리상태(전체/완료/오류)로 걸러 ALV 로 보여주고, 거래처 코드를 클릭하면 FD03/FK03 표준 조회로 넘어가 실제 마스터를 확인할 수 있다. 인터페이스 오류 건을 찾아 원인을 추적하는 운영 화면이다." +resource: "abap://ZFIR0010" +tags: ["인터페이스", "마스터관리", "거래처관리", "리포트", "FI", "거래처마스터", "인터페이스내역", "처리상태", "요청일자", "완료", "오류", "조회조건", "은행명", "지급조건", "지급방법", "계정명", "텍스트보강", "거래처", "번호범위", "채번"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:19+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["BNKA", "CSKT", "DD07T", "J_1BBRANCH", "LTDX", "SKAT", "T007S", "T042Z", "T052U", "T077X", "T077Y", "USR01", "V_USERNAME", "ZFIT0030", "ZFIT0160"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN"] +x-code-hash: "a4f0b4d1fa9fd0dbe3ac85b077bee8b18388214852847ad1274a556c2c77f762" +x-unit-count: 96 +x-chunk-count: 39 +x-declaration-count: 286 +--- + +## 업무 목적 + +외부 시스템에서 연계로 넘어온 거래처(고객/공급업체) 마스터 변경 요청 내역을 담은 CBO 테이블 ZFIT0030 을 조회하는 이력 조회 리포트다. 요청일자와 처리상태(전체/완료/오류)로 걸러 ALV 로 보여주고, 거래처 코드를 클릭하면 FD03/FK03 표준 조회로 넘어가 실제 마스터를 확인할 수 있다. 인터페이스 오류 건을 찾아 원인을 추적하는 운영 화면이다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트(처리상태 코드 → 한글)를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 요청일자·처리상태 조건으로 ZFIT0030 에서 인터페이스 이력을 추출한다 (GET_ZFIT0030) +4. 은행(BNKA)·지급조건(T052U)·거래처그룹(T077X/T077Y) 텍스트를 붙여 표시용 데이터를 만든다 +5. 데이터가 없으면 메시지 후 종료, 있으면 화면 0100 에 ALV 로 출력한다 +6. 거래처 코드 핫스팟 클릭 시 FD03/FK03 표준 트랜잭션으로 연결한다 (HOTSPOT_CLICK) + +## 핵심 내부테이블 + +- `GT_DATA` — 거래처마스터 I/F 이력 표시용 내부테이블 (채움: GET_ZFIT0030 / 소비: DISPLAY_DATA, ALV_GRID_DISPLAY) + +## 테이블 / 외부 호출 + +- read: BNKA, CSKT, DD07T, J_1BBRANCH, LTDX, SKAT, T007S, T042Z, T052U, T077X, T077Y, USR01, V_USERNAME, ZFIT0030, ZFIT0160 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET + +## 로직 조각 (39건 / unit 34개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0010F01` L9-L32 (24줄) + +*마스터구분(ZDFIFLAG)과 실행구분(ZDFIWFLG) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 도메인 ZDFIFLAG(고객/구매처 마스터 구분)와 ZDFIWFLG(실행 구분)의 활성 고정값 텍스트를 로그온 언어로 DD07T 에서 조회해 GT_DOMAIN 에 적재하여 ALV 텍스트 표시에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDFIFLAG' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. + 21| + 22| * 실행구분(ZDFIWFLG) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDFIWFLG' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Read the fixed value texts of domains ZDFIFLAG and ZDFIWFLG from DD07T in the logon language into GT_DOMAIN for display. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 고정값, 텍스트 조회, 마스터 구분, 실행 구분 +- English: Domain Fixed Values, DD07T, Text +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0010top-51-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L13-L30` · confidence 0.9 · `ZFIR0010#ZFIR0010F01#FORM#GET_DOMAIN#C1` + +### EVENT START-OF-SELECTION — `ZFIR0010` L46-L55 (10줄) + +*회사코드 권한을 검사한 뒤 거래처 마스터 인터페이스 이력을 조회한다.* + +> 이 unit 의 조각 1개가 3/10줄(30%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 회사코드 P_BUKRS 에 대한 권한을 AUTHORITY_BUKRS 로 검사하고 GET_DATA 로 인터페이스 이력을 조회한다. + +```abap + 49| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 50| + 51| PERFORM GET_DATA. +``` + +- **EN**: Check authorization for the company code then fetch the interface history via GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- 업무 키워드: 회사코드 권한 체크, 데이터 조회 +- English: Authority Check, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs) +- 위치: `abap://ZFIR0010/ZFIR0010#L49-L51` · confidence 0.8 · `ZFIR0010#ZFIR0010#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0010/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0010#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0030 — `ZFIR0010F01` L52-L109 (58줄) + +*선택한 처리상태 조건으로 거래처마스터 인터페이스 내역(ZFIT0030)과 표시용 텍스트를 조회한다.* + +> 이 unit 의 조각 2개가 46/58줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 화면에서 고른 처리상태(전체/완료 S/오류 E)를 레인지 테이블로 만들어, 회사코드·마스터구분·요청일자와 함께 거래처마스터 인터페이스 테이블 ZFIT0030 을 조회한다. + +```abap + 58| R_STATS-SIGN = C_I. + 59| R_STATS-OPTION = C_EQ. + 60| CASE C_X. + 61| WHEN P_RA. + 62| WHEN P_RS. + 63| R_STATS-LOW = C_S. + 64| APPEND R_STATS. + 65| WHEN P_RE. + 66| R_STATS-LOW = C_E. + 67| APPEND R_STATS. + 68| ENDCASE. + 69| + 70| SELECT * + 71| INTO TABLE GT_Z0030 + 72| FROM ZFIT0030 + 73| WHERE BUKRS EQ P_BUKRS + 74| AND MASTER_FLAG IN S_FLAG + 75| AND REQ_DATE IN S_DATE + 76| AND STATS IN R_STATS. +``` + +- **EN**: Builds a status range from the radio-button selection and reads business-partner interface records from ZFIT0030 by company code, master flag and request date. +- 테이블(파서): read [ZFIT0030](/tables/ZFIT0030.md) / write - +- SAP 객체: ZFIT0030, BUKRS, REQ_DATE, STATS +- 업무 키워드: 거래처마스터, 인터페이스내역, 처리상태, 요청일자, 완료, 오류, 조회조건 +- English: business partner master, interface record, processing status, request date, range table +- 정의부(복사 시 함께 필요): [`R_STATS`](#decl-zfir0010top-57-r_stats), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_X`](#decl-zficom-231-c_x), [`P_RA`](#decl-zfir0010top-83-p_ra), [`P_RS`](#decl-zfir0010top-85-p_rs), [`C_S`](#decl-zficom-226-c_s), [`P_RE`](#decl-zfir0010top-87-p_re), [`C_E`](#decl-zficom-212-c_e), [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_Z0030`](#decl-zfir0010top-26-gt_z0030), [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs) 외 2건 +- 위치: `abap://ZFIR0010/ZFIR0010F01#L58-L76` · confidence 0.9 · `ZFIR0010#ZFIR0010F01#FORM#GET_ZFIT0030#C1` + +#### [sql_select] 조회된 거래처 건들을 기준으로 은행명(BNKA)·지급조건명(T052U)·지급방법명(T042Z)·계정명(SKAT)을 FOR ALL ENTRIES 로 한꺼번에 읽어 화면 표시용 텍스트를 확보한다. + +```abap + 81| SELECT BANKS BANKL BANKA + 82| INTO TABLE GT_BNKA + 83| FROM BNKA + 84| FOR ALL ENTRIES IN GT_Z0030 + 85| WHERE BANKS EQ GT_Z0030-BANKS + 86| AND BANKL EQ GT_Z0030-BANKL. + 87| * 지급조건명 + 88| SELECT ZTERM TEXT1 + 89| INTO TABLE GT_T052U + 90| FROM T052U + 91| FOR ALL ENTRIES IN GT_Z0030 + 92| WHERE SPRAS EQ SY-LANGU + 93| AND ZTERM EQ GT_Z0030-ZTERM. + 94| * 지급방법명 + 95| SELECT LAND1 ZLSCH TEXT1 + 96| INTO TABLE GT_T042Z + 97| FROM T042Z + 98| FOR ALL ENTRIES IN GT_Z0030 + 99| WHERE LAND1 EQ GT_Z0030-COUNTRY. + 100| + 101| * 계정명 + 102| SELECT SAKNR TXT50 + 103| INTO TABLE GT_SKAT + 104| FROM SKAT + 105| FOR ALL ENTRIES IN GT_Z0030 + 106| WHERE SPRAS EQ SY-LANGU + 107| AND SAKNR EQ GT_Z0030-AKONT. +``` + +- **EN**: Enriches the selected records with bank, payment-terms, payment-method and G/L account texts via FOR ALL ENTRIES lookups. +- 테이블(파서): read [BNKA](/tables/BNKA.md), [T052U](/tables/T052U.md), [T042Z](/tables/T042Z.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: BNKA, T052U, T042Z, SKAT +- 업무 키워드: 은행명, 지급조건, 지급방법, 계정명, 텍스트보강, 거래처 +- English: bank name, payment terms, payment method, G/L account text, text enrichment +- 정의부(복사 시 함께 필요): [`GT_BNKA`](#decl-zfir0010top-29-gt_bnka), [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_Z0030`](#decl-zfir0010top-26-gt_z0030), [`GT_T052U`](#decl-zfir0010top-35-gt_t052u), [`GT_T042Z`](#decl-zfir0010top-40-gt_t042z), [`GT_SKAT`](#decl-zfir0010top-46-gt_skat) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L81-L107` · confidence 0.88 · `ZFIR0010#ZFIR0010F01#FORM#GET_ZFIT0030#C2` + +### FORM DISPLAY_DATA — `ZFIR0010F01` L115-L181 (67줄) + +*거래처 마스터 인터페이스 이력(GT_Z0030)을 ALV 출력용 GT_DATA 로 변환하며 상태 아이콘과 구분·은행·지급조건·지급방법·조정계정·계정그룹의 텍스트를 붙인다.* + +> 이 unit 의 조각 2개가 57/67줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 인터페이스 이력 각 건에 대해 처리 상태(STATS='S')에 따라 녹색/적색 신호등 아이콘을 넣고 도메인 텍스트(ZDFIFLAG 고객/구매처 구분, ZDFIWFLG 실행구분)·은행명(BNKA)·지급조건 텍스트(T052U)·지급방법 텍스트(T042Z)·조정계정명(SKAT)을 미리 조회된 테이블에서 READ 하여 GT_DATA 에 채운다. + +```abap + 118| LOOP AT GT_Z0030. + 119| MOVE-CORRESPONDING GT_Z0030 TO GT_DATA. + 120| * 상태 아이콘 + 121| IF GT_Z0030-STATS EQ C_S. + 122| GT_DATA-CICON = ICON_GREEN_LIGHT. + 123| ELSE. + 124| GT_DATA-CICON = ICON_RED_LIGHT. + 125| ENDIF. + 126| * 고객/구매처구분 + 127| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDFIFLAG' + 128| DOMVALUE_L = GT_Z0030-MASTER_FLAG. + 129| IF SY-SUBRC EQ 0. + 130| GT_DATA-MFLAG_T = GT_DOMAIN-DDTEXT. + 131| ENDIF. + 132| * 실행구분 + 133| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDFIWFLG' + 134| DOMVALUE_L = GT_Z0030-WORK_FLAG. + 135| IF SY-SUBRC EQ 0. + 136| GT_DATA-WFLAG_T = GT_DOMAIN-DDTEXT. + 137| ENDIF. + 138| * 은행명 + 139| READ TABLE GT_BNKA WITH KEY BANKS = GT_Z0030-BANKS + 140| BANKL = GT_Z0030-BANKL. + 141| IF SY-SUBRC EQ 0. + 142| GT_DATA-BANKL_T = GT_BNKA-BANKA. + 143| ENDIF. + 144| * 지급조건명 + 145| READ TABLE GT_T052U WITH KEY ZTERM = GT_Z0030-ZTERM. + 146| IF SY-SUBRC EQ 0. + 147| GT_DATA-ZTERM_T = GT_T052U-TEXT1. + 148| ENDIF. + 149| * 지급방법명 + 150| READ TABLE GT_T042Z WITH KEY LAND1 = GT_Z0030-COUNTRY + 151| ZLSCH = GT_Z0030-ZWELS. + 152| IF SY-SUBRC EQ 0. + 153| GT_DATA-ZWELS_T = GT_T042Z-TEXT1. + 154| ENDIF. + 155| * 계정명 + 156| READ TABLE GT_SKAT WITH KEY SAKNR = GT_Z0030-AKONT. + 157| IF SY-SUBRC EQ 0. + 158| GT_DATA-AKONT_T = GT_SKAT-TXT50. + 159| ENDIF. +``` + +- **EN**: For each interface history record, set a status icon and look up descriptive texts (domain values, bank name from BNKA, payment terms T052U, payment method T042Z, reconciliation account SKAT) into GT_DATA. +- SAP 객체: BNKA, T052U, T042Z, SKAT, ICON_GREEN_LIGHT +- 업무 키워드: 거래처 마스터 인터페이스, 상태 아이콘, 은행명, 지급조건, 지급방법, 조정계정 +- English: Business Partner Master, Interface Log, Payment Terms, Payment Method, Reconciliation Account, Bank Master +- 정의부(복사 시 함께 필요): [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_Z0030`](#decl-zfir0010top-26-gt_z0030), [`GT_DATA`](#decl-zfir0010top-14-gt_data), [`C_S`](#decl-zficom-226-c_s), [`GT_DOMAIN`](#decl-zfir0010top-51-gt_domain), [`GT_BNKA`](#decl-zfir0010top-29-gt_bnka), [`GT_T052U`](#decl-zfir0010top-35-gt_t052u), [`GT_T042Z`](#decl-zfir0010top-40-gt_t042z), [`GT_SKAT`](#decl-zfir0010top-46-gt_skat) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L118-L159` · confidence 0.85 · `ZFIR0010#ZFIR0010F01#FORM#DISPLAY_DATA#C1` + +#### [sql_select] 계정그룹 코드 첫 자리가 'D'(고객)이면 T077X 에서 고객 계정그룹 텍스트를, 아니면 T077Y 에서 구매처 계정그룹 텍스트를 SELECT SINGLE 하여 KTOKD_T 에 넣고 GT_DATA 에 APPEND 한다. + +```abap + 162| IF GT_Z0030-KTOKD(1) EQ C_D. "고객 + 163| SELECT SINGLE TXT30 + 164| INTO GT_DATA-KTOKD_T + 165| FROM T077X + 166| WHERE SPRAS EQ SY-LANGU + 167| AND KTOKD EQ GT_Z0030-KTOKD+1(4). + 168| ELSE. "구매처 + 169| SELECT SINGLE TXT30 + 170| INTO GT_DATA-KTOKD_T + 171| FROM T077Y + 172| WHERE SPRAS EQ SY-LANGU + 173| AND KTOKK EQ GT_Z0030-KTOKD+1(4). + 174| ENDIF. + 175| + 176| APPEND GT_DATA. CLEAR GT_DATA. +``` + +- **EN**: Read the account group description from T077X (customer) or T077Y (vendor) depending on the prefix and append the row to GT_DATA. +- 테이블(파서): read [T077X](/tables/T077X.md), [T077Y](/tables/T077Y.md) / write - +- SAP 객체: T077X, T077Y +- 업무 키워드: 계정그룹, 고객 계정그룹, 구매처 계정그룹, 텍스트 조회 +- English: Account Group, Customer, Vendor, T077X, T077Y +- 정의부(복사 시 함께 필요): [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_Z0030`](#decl-zfir0010top-26-gt_z0030), [`C_D`](#decl-zficom-211-c_d), [`GT_DATA`](#decl-zfir0010top-14-gt_data) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L162-L176` · confidence 0.9 · `ZFIR0010#ZFIR0010F01#FORM#DISPLAY_DATA#C2` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0010/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0010/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0010/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0010/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0010/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0010/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0010/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0010/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0010/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0010/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0010/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0010/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0010/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0010/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0010/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0010/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0010/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0010/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0010/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0010/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0010/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0010/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0010/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0010/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0010#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0010/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0010/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0010/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0010/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs) +- 위치: `abap://ZFIR0010/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0010#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0010/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0010#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0010F01` L430-L450 (21줄) + +*ALV 핫스팟 클릭 시 고객코드(KUNNR)면 FD03 고객 마스터 조회로, 구매처코드(LIFNR)면 BDC 로 FK03 구매처 마스터 조회로 이동한다.* + +> 이 unit 의 조각 1개가 16/21줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭된 행을 읽어 KUNNR 컬럼이면 파라미터 ID KUN/BUK 를 세팅해 CALL TRANSACTION 'FD03' 로 고객 마스터를 표시하고, LIFNR 컬럼이면 BDC_FK03 으로 구매처 마스터(FK03)를 표시한다. + +```abap + 433| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 434| CHECK SY-SUBRC EQ 0. + 435| + 436| CASE P_COLUMN_ID. + 437| * 고객코드 + 438| WHEN 'KUNNR'. + 439| CHECK GT_DATA-KUNNR IS NOT INITIAL. + 440| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR. + 441| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 442| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 443| * 구매처코드 + 444| WHEN 'LIFNR'. + 445| CHECK GT_DATA-LIFNR IS NOT INITIAL. + 446| PERFORM BDC_FK03 USING GT_DATA-LIFNR + 447| P_BUKRS. + 448| ENDCASE. +``` + +- **EN**: On hotspot click, display customer master via FD03 (parameter IDs KUN/BUK) or vendor master via BDC to FK03 depending on the clicked column. +- 호출(파서): FD03, BDC_FK03 +- SAP 객체: FD03, FK03 +- 업무 키워드: 핫스팟, 고객 마스터 조회, 구매처 마스터 조회, 화면 이동 +- English: Hotspot, Customer Master, Vendor Master, FD03, FK03 +- 정의부(복사 시 함께 필요): [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_DATA`](#decl-zfir0010top-14-gt_data), [`P_BUKRS`](#decl-zfir0010top-75-p_bukrs) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L433-L448` · confidence 0.9 · `ZFIR0010#ZFIR0010F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0010F01` L241-L256 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 242| PERFORM SET_FIELD_CATALOGS. + 243| * Report Display. + 244| GV_VARI-REPORT = SY-REPID. + 245| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 246| EXPORTING + 247| I_STRUCTURE_NAME = 'GT_DATA' + 248| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 249| IS_LAYOUT = GV_LAYO + 250| IS_VARIANT = GV_VARI + 251| I_BUFFER_ACTIVE = C_X + 252| I_SAVE = C_A + 253| CHANGING + 254| IT_OUTTAB = GT_DATA[] + 255| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0010top-63-gv_vari), [`GV_ALV_GRID`](#decl-zfir0010top-61-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0010top-62-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`ZFIT0030`](#decl-zfir0010top-8-zfit0030), [`GT_DATA`](#decl-zfir0010top-14-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0010/ZFIR0010F01#L242-L255` · confidence 0.85 · `ZFIR0010#ZFIR0010F01#FORM#ALV_GRID_DISPLAY#C1` + +## 정의부 (298건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0010CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0010cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfir0010cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0010TOP` (19건) + +#### ZFIT0030 — tables · L8-L8 {#decl-zfir0010top-8-zfit0030} + +```abap +TABLES: ZFIT0030. +``` + +#### GT_DATA — data · L14-L24 {#decl-zfir0010top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0030. +DATA: CICON LIKE ICON-ID, "상태아이콘 + MFLAG_T LIKE DD07T-DDTEXT, + WFLAG_T LIKE DD07T-DDTEXT, + BANKL_T LIKE BNKA-BANKA, "은행명 + ZTERM_T LIKE T052U-TEXT1, "지급조건명 + ZWELS_T LIKE T042Z-TEXT1, "지급방법명 + AKONT_T LIKE SKAT-TXT50, "조정계정명 + KTOKD_T LIKE T077X-TXT30, "계정그룹명 + END OF GT_DATA. +``` + +#### GT_Z0030 — data · L26-L26 {#decl-zfir0010top-26-gt_z0030} + +```abap +DATA: GT_Z0030 LIKE ZFIT0030 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BNKA — data · L29-L33 {#decl-zfir0010top-29-gt_bnka} + +```abap +DATA: BEGIN OF GT_BNKA OCCURS 0, + BANKS LIKE BNKA-BANKS, + BANKL LIKE BNKA-BANKL, + BANKA LIKE BNKA-BANKA, + END OF GT_BNKA. +``` + +#### GT_T052U — data · L35-L38 {#decl-zfir0010top-35-gt_t052u} + +```abap +DATA: BEGIN OF GT_T052U OCCURS 0, + ZTERM LIKE T052U-ZTERM, + TEXT1 LIKE T052U-TEXT1, + END OF GT_T052U. +``` + +#### GT_T042Z — data · L40-L44 {#decl-zfir0010top-40-gt_t042z} + +```abap +DATA: BEGIN OF GT_T042Z OCCURS 0, + LAND1 LIKE T042Z-LAND1, + ZLSCH LIKE T042Z-ZLSCH, + TEXT1 LIKE T042Z-TEXT1, + END OF GT_T042Z. +``` + +#### GT_SKAT — data · L46-L49 {#decl-zfir0010top-46-gt_skat} + +```abap +DATA: BEGIN OF GT_SKAT OCCURS 0, + SAKNR LIKE SKAT-SAKNR, + TXT50 LIKE SKAT-TXT50, + END OF GT_SKAT. +``` + +#### GT_DOMAIN — data · L51-L55 {#decl-zfir0010top-51-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L57-L57 {#decl-zfir0010top-57-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0030-STATS. +``` + +#### GS_STABLE — data · L60-L60 {#decl-zfir0010top-60-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L61-L61 {#decl-zfir0010top-61-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L62-L62 {#decl-zfir0010top-62-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L63-L63 {#decl-zfir0010top-63-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L75-L75 {#decl-zfir0010top-75-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### S_DATE — select-option · L76-L76 {#decl-zfir0010top-76-s_date} + +```abap +SELECT-OPTIONS: S_DATE FOR ZFIT0030-REQ_DATE. +``` + +#### S_FLAG — select-option · L77-L77 {#decl-zfir0010top-77-s_flag} + +```abap +SELECT-OPTIONS: + S_FLAG FOR ZFIT0030-MASTER_FLAG NO INTERVALS. +``` + +#### P_RA — parameter · L83-L83 {#decl-zfir0010top-83-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . "전체 +``` + +#### P_RS — parameter · L85-L85 {#decl-zfir0010top-85-p_rs} + +```abap +PARAMETERS: P_RS RADIOBUTTON GROUP G1. "완료 +``` + +#### P_RE — parameter · L87-L87 {#decl-zfir0010top-87-p_re} + +```abap +PARAMETERS: P_RE RADIOBUTTON GROUP G1. "오류 +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0010 L32-45 | 0 | 프로그램 초기화 시 ALV 기본 설정과 도메인 텍스트 추출을 수행한다. | +| START-OF-SELECTION | EVENT | ZFIR0010 L46-55 | 1 | 회사코드 권한을 검사한 뒤 거래처 마스터 인터페이스 이력을 조회한다. | +| END-OF-SELECTION | EVENT | ZFIR0010 L56-62 | 0 | 조회 결과 GT_DATA 가 없으면 S003 메시지 후 종료하고 있으면 ALV 화면 0100 을 호출한다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0010CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DOMAIN | FORM | ZFIR0010F01 L9-32 | 1 | 마스터구분(ZDFIFLAG)과 실행구분(ZDFIWFLG) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다. | +| GET_DATA | FORM | ZFIR0010F01 L38-46 | 0 | 거래처 마스터 인터페이스 내역(ZFIT0030)을 추출한 뒤 ALV 표시용 데이터로 가공하는 PERFORM 디스패치 FORM 이다. | +| GET_ZFIT0030 | FORM | ZFIR0010F01 L52-109 | 2 | 선택한 처리상태 조건으로 거래처마스터 인터페이스 내역(ZFIT0030)과 표시용 텍스트를 조회한다. | +| DISPLAY_DATA | FORM | ZFIR0010F01 L115-181 | 2 | 거래처 마스터 인터페이스 이력(GT_Z0030)을 ALV 출력용 GT_DATA 로 변환하며 상태 아이콘과 구분·은행·지급조건·지급방법·조정계정·계정그룹의 텍스트를 붙인다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0010F01 L187-219 | 0 | 커스텀 컨테이너와 ALV 그리드 객체를 생성하고 핫스팟 이벤트 핸들러를 등록한 뒤 레이아웃·제외 버튼·필드카탈로그 설정으로 그리드를 표시한다. | +| SET_GRID_LAYOUT | FORM | ZFIR0010F01 L225-235 | 0 | ALV 그리드 레이아웃(열 최적화, 선택모드, 줄무늬)을 설정하는 플럼빙 FORM 이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0010F01 L241-256 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0010F01 L262-421 | 0 | 거래처(고객/공급업체) 마스터 인터페이스 이력 ALV 의 필드카탈로그를 생성하며 컬럼 텍스트·정렬·핫스팟(KUNNR/LIFNR)·사업자번호 EDIT MASK 등을 설정한다. | +| HOTSPOT_CLICK | FORM | ZFIR0010F01 L430-450 | 1 | ALV 핫스팟 클릭 시 고객코드(KUNNR)면 FD03 고객 마스터 조회로, 구매처코드(LIFNR)면 BDC 로 FK03 구매처 마스터 조회로 이동한다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0010O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0010O01 L21-35 | 0 | | diff --git a/wiki/programs/ZFIR0020.md b/wiki/programs/ZFIR0020.md new file mode 100644 index 0000000..a640a57 --- /dev/null +++ b/wiki/programs/ZFIR0020.md @@ -0,0 +1,3904 @@ +--- +type: abap-program +title: "ZFIR0020 — 매입 채무 Interface 내역" +description: "외부(그룹웨어·구매 시스템)에서 넘어온 매입 채무 전표 연계 내역을 조회하는 리포트다. CBO 테이블 ZFIT0050 을 전표일자·사업영역·공급업체 조건으로 읽어 편집 가능한 ALV 그리드에 띄우고, 전표번호 클릭으로 FB03 조회로 연결한다. POSTING_INTERFACE 계열 FM 을 쓰는 전기 기능도 포함되어 있어 조회에서 바로 전표 처리로 이어질 수 있는 구조다." +resource: "abap://ZFIR0020" +tags: ["인터페이스", "채무관리", "매입", "전표", "리포트", "FI", "매입채무", "인터페이스내역", "전표일자", "사업영역", "공급업체", "조회조건", "거래유형", "취소플래그", "도메인텍스트", "공급업체명", "처리결과", "신호등", "상태표시", "기능코드"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:19+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD07T", "LFA1", "T001", "ZFIT0050"] +x-tables-write: [] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FB03", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "19a030587bbca946704fd63a3af3e3e8aaea4ecca8b8a066e3060894b49047ec" +x-unit-count: 121 +x-chunk-count: 48 +x-declaration-count: 201 +--- + +## 업무 목적 + +외부(그룹웨어·구매 시스템)에서 넘어온 매입 채무 전표 연계 내역을 조회하는 리포트다. CBO 테이블 ZFIT0050 을 전표일자·사업영역·공급업체 조건으로 읽어 편집 가능한 ALV 그리드에 띄우고, 전표번호 클릭으로 FB03 조회로 연결한다. POSTING_INTERFACE 계열 FM 을 쓰는 전기 기능도 포함되어 있어 조회에서 바로 전표 처리로 이어질 수 있는 구조다. + +## 주 흐름 + +1. 선택화면 기본값을 세팅하고 화면 속성을 조정한다 (SET_DYNP → LOOP_AT_SCREEN) +2. 내부 데이터 구조를 초기화한다 (INITIALIZE_DATA) +3. 전표일자·사업영역·공급업체 조건으로 매입채무 연계 내역을 읽어 가공한다 (PROCESS_DATA → SELECT_DATA) +4. 편집 가능한 ALV 그리드(LCL_DEF_RECEIVER 이벤트 핸들러 등록)로 화면 100 에 출력한다 +5. 셀 변경·F4·더블클릭 이벤트를 처리하고 오류는 메시지로 안내한다 (DATA_CHANGED, ON_F4, F_OUT_MESSAGE_PROC) +6. 전표번호 핫스팟으로 FB03 표준 조회를 호출한다 + +## 핵심 내부테이블 + +- `GT_DATA` — 매입채무 연계 내역 표시·편집용 내부테이블 (채움: SELECT_DATA / 소비: DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, DD07T, LFA1, T001, ZFIT0050 +- write: - +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FB03, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_GRID_COMMENTARY_SET + +## 로직 조각 (48건 / unit 43개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_COMPANY_BASE — `ZFI_COMMON` L209-L226 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 213| SELECT SINGLE * + 214| FROM T001 + 215| INTO L_T001 + 216| WHERE BUKRS = P_BUKRS. + 217| + 218| IF SY-SUBRC EQ 0. + 219| GV_WAERS = L_T001-WAERS. + 220| GV_KTOPL = L_T001-KTOPL. + 221| GV_SPRAS = L_T001-SPRAS. + 222| GV_WAERS = L_T001-WAERS. + 223| GV_BUKRS_TXT = L_T001-BUTXT. + 224| GV_LAND1 = L_T001-LAND1. + 225| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zfi_common-210-l_t001), [`P_BUKRS`](#decl-zfir0020top-79-p_bukrs), [`GV_WAERS`](#decl-zfi_common-52-gv_waers), [`GV_KTOPL`](#decl-zfi_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zfi_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zfi_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zfi_common-55-gv_land1) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L213-L225` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZFI_COMMON` L159-L200 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 172| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 173| EXPORTING + 174| I_PROGRAM_NAME = SY-REPID + 175| I_INTERNAL_TABNAME = P_ITAB_NAME + 176| I_INCLNAME = SY-REPID + 177| I_STRUCTURE_NAME = '' + 178| I_BYPASSING_BUFFER = 'X' + 179| CHANGING + 180| CT_FIELDCAT = LT_FIELDCAT[] + 181| EXCEPTIONS + 182| INCONSISTENT_INTERFACE = 1 + 183| PROGRAM_ERROR = 2. + 184| + 185| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 186| EXPORTING + 187| IT_FIELDCAT_ALV = LT_FIELDCAT + 188| IMPORTING + 189| ET_FIELDCAT_LVC = LT_ALV_CAT + 190| TABLES + 191| IT_DATA = LT_TABLE[]. + 192| + 193| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 194| CHANGING + 195| CT_FIELDCAT = LT_ALV_CAT. + 196| + 197| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zfi_common-164-lt_fieldcat), [`LT_ALV_CAT`](#decl-zfi_common-165-lt_alv_cat), [`LT_TABLE`](#decl-zfi_common-163-lt_table) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L172-L197` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM GET_DOM_TEXT_LIST — `ZFI_COMMON` L1244-L1255 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1246| SELECT DOMNAME DOMVALUE_L DDTEXT + 1247| APPENDING TABLE GT_DOMAIN + 1248| FROM DD07T + 1249| WHERE DOMNAME = P_DOMNA + 1250| AND DDLANGUAGE = SY-LANGU + 1251| AND AS4LOCAL = 'A'. + 1252| + 1253| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zfi_common-27-gs_domain), [`GT_DOMAIN`](#decl-zfi_common-32-gt_domain) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1246-L1253` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM SELECT_DATA — `ZFIR0020F01` L89-L133 (45줄) + +*매입채무 연계 내역을 조건에 맞게 읽어 도메인 텍스트·공급업체명·처리상태 아이콘을 붙여 표시용 데이터를 만든다.* + +> 이 unit 의 조각 2개가 38/45줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·전표일자·사업영역·공급업체 조건으로 매입채무 인터페이스 테이블 ZFIT0050 을 읽고, 건이 없으면 즉시 종료한다. + +```abap + 93| SELECT * FROM ZFIT0050 + 94| INTO TABLE LT_ZFIT0050 + 95| WHERE BUKRS = P_BUKRS + 96| AND BLDAT IN S_BLDAT + 97| AND GSBER IN S_GSBER + 98| AND LIFNR IN S_LIFNR. + 99| + 100| CHECK LT_ZFIT0050[] IS NOT INITIAL. +``` + +- **EN**: Reads AP interface records from ZFIT0050 by company code, document date, business area and vendor. +- 테이블(파서): read [ZFIT0050](/tables/ZFIT0050.md) / write - +- SAP 객체: ZFIT0050, BUKRS, BLDAT, GSBER, LIFNR +- 업무 키워드: 매입채무, 인터페이스내역, 전표일자, 사업영역, 공급업체, 조회조건 +- English: accounts payable, AP interface, document date, business area, vendor +- 정의부(복사 시 함께 필요): [`LT_ZFIT0050`](#decl-zfir0020f01-90-lt_zfit0050), [`P_BUKRS`](#decl-zfir0020top-79-p_bukrs), [`S_BLDAT`](#decl-zfir0020top-85-s_bldat), [`S_GSBER`](#decl-zfir0020top-86-s_gsber), [`S_LIFNR`](#decl-zfir0020top-88-s_lifnr) +- 위치: `abap://ZFIR0020/ZFIR0020F01#L93-L100` · confidence 0.9 · `ZFIR0020#ZFIR0020F01#FORM#SELECT_DATA#C1` + +#### [aggregation] 건별로 거래유형(ZDBTYPE)·취소플래그(ZDCANCELFLAG) 도메인 코드를 한글 텍스트로 바꾸고, 공급업체명(LFA1)을 붙이고, 처리결과 코드(S/E)에 따라 녹색·적색 신호등 아이콘을 세워 ALV 표시용 행을 만든다. + +```abap + 102| LOOP AT LT_ZFIT0050. + 103| MOVE-CORRESPONDING LT_ZFIT0050 TO GT_DATA. + 104| + 105| READ TABLE GT_DOMAIN INTO GS_DOMAIN WITH KEY DOMAIN = 'ZDBTYPE' + 106| VALUE = GT_DATA-BTYPE BINARY SEARCH. + 107| + 108| IF SY-SUBRC EQ 0. + 109| GT_DATA-BTYPE_T = GS_DOMAIN-DDTEXT. + 110| ENDIF. + 111| + 112| READ TABLE GT_DOMAIN INTO GS_DOMAIN WITH KEY DOMAIN = 'ZDCANCELFLAG' + 113| VALUE = GT_DATA-CANCELFLAG BINARY SEARCH. + 114| + 115| IF SY-SUBRC EQ 0. + 116| GT_DATA-CANCELFLAG_T = GS_DOMAIN-DDTEXT. + 117| ENDIF. + 118| + 119| SELECT SINGLE NAME1 FROM LFA1 + 120| INTO GT_DATA-LIFNR_T + 121| WHERE LIFNR = GT_DATA-LIFNR. + 122| + 123| IF GT_DATA-RESULTCODE = 'S'. + 124| GT_DATA-STATUS = GC_STATUS_GREEN. + 125| ELSEIF GT_DATA-RESULTCODE = 'E'.. + 126| GT_DATA-STATUS = GC_STATUS_RED. + 127| ENDIF. + 128| + 129| APPEND GT_DATA. + 130| CLEAR : GT_DATA. + 131| ENDLOOP. +``` + +- **EN**: Per record: resolves domain texts for transaction type and cancel flag, adds the vendor name and sets a green/red status icon from the result code. +- 테이블(파서): read [LFA1](/tables/LFA1.md) / write - +- SAP 객체: LFA1, DD07T, ZDBTYPE, ZDCANCELFLAG +- 업무 키워드: 거래유형, 취소플래그, 도메인텍스트, 공급업체명, 처리결과, 신호등, 상태표시 +- English: transaction type, cancel flag, domain text, vendor name, result code, status icon +- 정의부(복사 시 함께 필요): [`LT_ZFIT0050`](#decl-zfir0020f01-90-lt_zfit0050), [`GT_DATA`](#decl-zfir0020top-43-gt_data), [`GS_DOMAIN`](#decl-zfi_common-27-gs_domain), [`GT_DOMAIN`](#decl-zfi_common-32-gt_domain), [`LFA1`](#decl-zfir0020top-4-lfa1), [`GC_STATUS_GREEN`](#decl-zfi_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zfi_alv-130-gc_status_red) +- 위치: `abap://ZFIR0020/ZFIR0020F01#L102-L131` · confidence 0.88 · `ZFIR0020#ZFIR0020F01#FORM#SELECT_DATA#C2` + +### FORM GET_SELECTED_ROW2 — `ZFI_ALV` L369-L397 (29줄) + +*ALV 그리드에서 선택된 행 인덱스를 GT_ROWS 로 가져오고 미선택/복수 선택 시 오류 메시지를 표시하는 유틸리티다.* + +> 이 unit 의 조각 1개가 16/29줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] GET_SELECTED_ROWS 로 선택 행을 GT_ROWS 에 받아 소계행을 제거하고, 선택이 없거나 단일 선택 모드에서 2건 이상이면 오류성 메시지를 띄운다. + +```abap + 381| CALL METHOD PV_GRID->GET_SELECTED_ROWS + 382| IMPORTING + 383| ET_INDEX_ROWS = GT_ROWS. + 384| + 385| DELETE GT_ROWS WHERE ROWTYPE IS NOT INITIAL. + 386| + 387| *-- 선택된 LINE이 없고 에러출력 설정 시.. + 388| IF LINES( GT_ROWS ) EQ 0. + 389| MESSAGE '선택된 라인이 없습니다.' + 390| TYPE 'S' DISPLAY LIKE 'E'. + 391| + 392| ELSEIF LINES( GT_ROWS ) GT 1 AND LV_ONE_SEL EQ 'X'. + 393| MESSAGE '하나의 라인만 선택하셔야 합니다.' + 394| TYPE 'S' DISPLAY LIKE 'E'. + 395| + 396| ENDIF. +``` + +- **EN**: Retrieve selected ALV rows via GET_SELECTED_ROWS, drop subtotal rows, and issue an error-style message when no row or more than one row (in single-select mode) is selected. +- 호출(파서): PV_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, LVC_T_ROW +- 업무 키워드: 선택 행 조회, 행 선택 검증, 단일 선택, ALV 그리드 +- English: Selected Rows, ALV Grid, Row Selection Validation +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zfi_alv-103-gt_rows), [`LV_ONE_SEL`](#decl-zfi_alv-374-lv_one_sel) +- 위치: `abap://ZFIR0020/ZFI_ALV#L381-L396` · confidence 0.85 · `ZFIR0020#ZFI_ALV#FORM#GET_SELECTED_ROW2#C1` + +### FORM CHECK_SORT_PARAMETER — `ZFI_ALV` L472-L493 (22줄) + +*ALV 정렬 설정(LVC_T_SORT)의 필드가 필드카탈로그에 존재하는지 검사해 누락 필드명을 돌려주는 검증 루틴이다.* + +> 이 unit 의 조각 1개가 10/22줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 정렬 테이블의 각 필드명을 필드카탈로그(LVC_T_FCAT)에서 READ 해 없는 필드가 있으면 SUBRC 와 필드명을 반환하고 종료한다. + +```abap + 483| LOOP AT PT_SORT ASSIGNING . + 484| READ TABLE PT_FIELDCAT ASSIGNING + 485| WITH KEY FIELDNAME = -FIELDNAME. + 486| + 487| IF SY-SUBRC NE 0. + 488| P_SUBRC = SY-SUBRC. + 489| P_FIELDNAME = -FIELDNAME. + 490| EXIT. + 491| ENDIF. + 492| ENDLOOP. +``` + +- **EN**: Verify that every sort field in LVC_T_SORT exists in the ALV field catalog and return the first missing field name. +- SAP 객체: LVC_T_SORT, LVC_T_FCAT +- 업무 키워드: ALV 정렬 검증, 필드카탈로그, 정렬 필드 +- English: ALV Sort, Field Catalog, LVC_T_SORT +- 정의부(복사 시 함께 필요): [``](#decl-zfi_alv-478--fs_sort-), [``](#decl-zfi_alv-479--fs_fcat-) +- 위치: `abap://ZFIR0020/ZFI_ALV#L483-L492` · confidence 0.85 · `ZFIR0020#ZFI_ALV#FORM#CHECK_SORT_PARAMETER#C1` + +### FORM GET_SETLEAF_VALUES — `ZFI_COMMON` L232-L295 (64줄) + +*세트 클래스(코스트센터/원가요소/오더/손익센터/계정과목 그룹)와 세트명으로 K_HIERARCHY_TABLES_READ 를 호출해 세트 값 목록(GT_VALUE_SET)을 읽는 공통 루틴이다.* + +> 이 unit 의 조각 1개가 45/64줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID 를 만들고 K_HIERARCHY_TABLES_READ 로 세트 값 범위를 GT_VALUE_SET 에 읽으며, 세트를 못 찾으면 GS004 오류로 중단한다. + +```abap + 250| CASE PV_CLASS. + 251| WHEN '0101'. " 코스트센터 + 252| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 253| WHEN '0102'. " 원가요소 + 254| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 255| WHEN '0103'. " 오더 + 256| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 257| WHEN '0106'. " 손익센터 + 258| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 259| WHEN '0109'. " 계정과목 + 260| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 261| ENDCASE. + 262| + 263| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 264| EXPORTING + 265| E_CLASS = L_CLASS + 266| E_SETID = L_SETID + 267| E_KOKRS = GC_KOKRS + 268| E_MANDT = SY-MANDT + 269| TABLES + 270| T_NODES = LT_NODE + 271| T_VALUES = GT_VALUE_SET + 272| CHANGING + 273| C_INFO = LT_GRPHINFO + 274| C_OVERWRITE = SY-DATAR + 275| EXCEPTIONS + 276| NO_CONTROLLING_AREA = 1 + 277| NO_CHART_OF_ACCOUNT = 2 + 278| DIFFERENT_CONTROLLING_AREAS = 3 + 279| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 280| SET_NOT_FOUND = 5 + 281| ILLEGAL_FIELD_REPLACEMENT = 6 + 282| ILLEGAL_TABLE_REPLACEMENT = 7 + 283| FM_RAISE = 8 + 284| CONVERT_ERROR = 9 + 285| NO_OVERWRITE_STANDARD_HIER = 10 + 286| NO_BUKRS_FOR_KOKRS = 11 + 287| OTHERS = 12. + 288| + 289| IF SY-SUBRC <> 0. + 290| MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 291| WITH P_SETNAME INTO L_MESSAGE. + 292| MESSAGE S000(ZCOM) DISPLAY LIKE 'E' WITH L_MESSAGE. + 293| LEAVE LIST-PROCESSING. + 294| ENDIF. +``` + +- **EN**: Compose the set ID from set class plus controlling area or chart of accounts and read the set value ranges via K_HIERARCHY_TABLES_READ into GT_VALUE_SET, aborting with error GS004 when the set is not found. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHEADER, SETLEAF, SETHIER +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 계정과목 그룹, 원가요소 그룹, 관리회계영역, 계정과목표 +- English: Set Hierarchy, Cost Center Group, G/L Account Group, K_HIERARCHY_TABLES_READ, Controlling Area +- 정의부(복사 시 함께 필요): [`GC_KOKRS`](#decl-zfi_common-58-gc_kokrs), [`L_SETID`](#decl-zfi_common-238-l_setid), [`GV_KTOPL`](#decl-zfi_common-53-gv_ktopl), [`L_CLASS`](#decl-zfi_common-237-l_class), [`LT_NODE`](#decl-zfi_common-236-lt_node), [`GT_VALUE_SET`](#decl-zfi_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zfi_common-239-lt_grphinfo), [`L_MESSAGE`](#decl-zfi_common-240-l_message) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L250-L294` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZFI_COMMON` L307-L333 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 313| IF PV_DYNBEGIN = 'X'. + 314| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 315| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 316| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 317| + 318| APPEND LS_BDCTAB TO PT_BDCTAB. + 319| ELSE. + 320| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 321| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 322| + 323| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 324| EXIT. + 325| ENDIF. + 326| + 327| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 328| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 329| + 330| APPEND LS_BDCTAB TO PT_BDCTAB. + 331| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zfi_common-309-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zfi_common-91-gt_excp_init_field) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L313-L331` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZFI_COMMON` L444-L453 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 445| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 446| EXPORTING + 447| DATE = P_IN_DATE + 448| EXCEPTIONS + 449| PLAUSIBILITY_CHECK_FAILED = 1 + 450| OTHERS = 2. + 451| + 452| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZFIR0020/ZFI_COMMON#L445-L452` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZFI_COMMON` L479-L503 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 485| L_NCNT1 = P_CNT1. + 486| L_NCNT2 = P_CNT2. + 487| + 488| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 489| GV_CALC_C0 = GV_CALC_I. + 490| + 491| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 492| GV_PROGRESS_MSG = P_TEXT. + 493| ELSE. + 494| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 495| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 496| CONDENSE GV_PROGRESS_MSG. + 497| ENDIF. + 498| + 499| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 500| EXPORTING + 501| PERCENTAGE = GV_CALC_I + 502| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zfi_common-480-l_ncnt1), [`L_NCNT2`](#decl-zfi_common-481-l_ncnt2), [`GV_CALC_I`](#decl-zfi_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zfi_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zfi_common-15-gv_progress_msg) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L485-L502` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZFI_COMMON` L512-L522 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 515| CL_SALV_TABLE=>FACTORY( + 516| IMPORTING + 517| R_SALV_TABLE = GR_TABLE + 518| CHANGING + 519| T_TABLE = PT_TABLE[] ). + 520| + 521| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zfi_common-513-gr_table) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L515-L521` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZFI_COMMON` L582-L639 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 594| ASSIGN: (PT_EXCEL_TABLE) TO , + 595| (PS_EXCEL_STRUC) TO . + 596| + 597| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 598| EXPORTING + 599| FILENAME = PV_EXCEL_FILENAME + 600| I_BEGIN_COL = PV_BEGIN_COL + 601| I_BEGIN_ROW = PV_BEGIN_ROW + 602| I_END_COL = PV_END_COL + 603| I_END_ROW = PV_END_ROW + 604| TABLES + 605| INTERN = LT_INTERN + 606| EXCEPTIONS + 607| INCONSISTENT_PARAMETERS = 1 + 608| UPLOAD_OLE = 2 + 609| OTHERS = 3. + 610| + 611| IF SY-SUBRC <> 0. + 612| IF SY-MSGID IS INITIAL. + 613| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 614| LEAVE LIST-PROCESSING. + 615| ELSE. + 616| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 617| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 618| ENDIF. + 619| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zfi_common-592--l_fs02-), [``](#decl-zfi_common-593--l_fs03-), [`ALSMEX_TABLINE`](#decl-zfi_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zfi_common-590-lt_intern) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L594-L619` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 621| LOOP AT LT_INTERN. + 622| AT NEW ROW. + 623| CLEAR : . + 624| ENDAT. + 625| + 626| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 627| + 628| IF LT_INTERN-VALUE CO '0123456789,.- '. + 629| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 630| ENDIF. + 631| + 632| MOVE LT_INTERN-VALUE TO . + 633| + 634| AT END OF ROW. + 635| APPEND TO . + 636| ENDAT. + 637| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zfi_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zfi_common-590-lt_intern), [``](#decl-zfi_common-593--l_fs03-), [``](#decl-zfi_common-591--l_fs01-), [``](#decl-zfi_common-592--l_fs02-) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L621-L637` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZFI_COMMON` L688-L709 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 693| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 694| EXPORTING + 695| MSGID = PS_MESSAGE-MSGID + 696| MSGNR = PS_MESSAGE-MSGNR + 697| MSGV1 = PS_MESSAGE-MSGV1 + 698| MSGV2 = PS_MESSAGE-MSGV2 + 699| MSGV3 = PS_MESSAGE-MSGV3 + 700| MSGV4 = PS_MESSAGE-MSGV4 + 701| IMPORTING + 702| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 703| + 704| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZFIR0020/ZFI_COMMON#L693-L704` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZFI_COMMON` L716-L846 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 758| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 759| + 760| LOOP AT PT_EXCEL_EXPORT. + 761| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 762| ENDLOOP. + 763| + 764| " 동적 테이블 생성 + 765| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 766| EXPORTING + 767| IT_FIELDCATALOG = LT_FCAT + 768| IMPORTING + 769| EP_TABLE = LF_DATA. + 770| + 771| ASSIGN LF_DATA->* TO . + 772| + 773| " 테이블 라인 생성 + 774| CREATE DATA LL_DATA LIKE LINE OF . + 775| ASSIGN LL_DATA->* TO . + 776| + 777| " 템플릿 내용 단 한라인만 등록 + 778| LOOP AT LT_FCAT INTO LS_FCAT. + 779| ASSIGN COMPONENT LS_FCAT-COL_POS + 780| OF STRUCTURE TO . + 781| + 782| IF SY-SUBRC EQ 0. + 783| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 784| ENDIF. + 785| ENDLOOP. + 786| + 787| " 테이블에 담기. + 788| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zfi_common-718-lt_fcat), [`LF_DATA`](#decl-zfi_common-723-lf_data), [``](#decl-zfi_common-732--fs_table-), [`LL_DATA`](#decl-zfi_common-724-ll_data), [``](#decl-zfi_common-733--fs_line-), [`LS_FCAT`](#decl-zfi_common-719-ls_fcat), [``](#decl-zfi_common-734--fs_col-) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L758-L788` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 792| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 793| + 794| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 795| EXPORTING + 796| DEFAULT_EXTENSION = 'XLS' + 797| DEFAULT_FILE_NAME = L_FNAME + 798| FILE_FILTER = '*.XLS' + 799| CHANGING + 800| FILENAME = L_EXT_FILENAME + 801| PATH = L_PATH + 802| FULLPATH = L_FULLPATH + 803| USER_ACTION = L_USR_ACT. + 804| + 805| IF L_USR_ACT = '0'. + 806| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 807| EXPORTING + 808| FILENAME = L_FULLPATH + 809| WRITE_FIELD_SEPARATOR = 'X' + 810| IMPORTING + 811| FILELENGTH = L_FILE_LEN + 812| CHANGING + 813| DATA_TAB = + 814| EXCEPTIONS + 815| FILE_WRITE_ERROR = 1 + 816| NO_BATCH = 2 + 817| GUI_REFUSE_FILETRANSFER = 3 + 818| INVALID_TYPE = 4 + 819| NO_AUTHORITY = 5 + 820| UNKNOWN_ERROR = 6 + 821| HEADER_NOT_ALLOWED = 7 + 822| SEPARATOR_NOT_ALLOWED = 8 + 823| FILESIZE_NOT_ALLOWED = 9 + 824| HEADER_TOO_LONG = 10 + 825| DP_ERROR_CREATE = 11 + 826| DP_ERROR_SEND = 12 + 827| DP_ERROR_WRITE = 13 + 828| UNKNOWN_DP_ERROR = 14 + 829| ACCESS_DENIED = 15 + 830| DP_OUT_OF_MEMORY = 16 + 831| DISK_FULL = 17 + 832| DP_TIMEOUT = 18 + 833| FILE_NOT_FOUND = 19 + 834| DATAPROVIDER_EXCEPTION = 20 + 835| CONTROL_FLUSH_ERROR = 21 + 836| OTHERS = 22. + 837| + 838| IF SY-SUBRC = 0. + 839| MESSAGE S000 WITH 'Success.'. + 840| ELSE. + 841| MESSAGE I000 WITH 'Failure'. + 842| ENDIF. + 843| ELSE. + 844| MESSAGE I000 WITH 'Cancled'. + 845| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zfi_common-727-l_fname), [`L_EXT_FILENAME`](#decl-zfi_common-728-l_ext_filename), [`L_PATH`](#decl-zfi_common-730-l_path), [`L_FULLPATH`](#decl-zfi_common-729-l_fullpath), [`L_USR_ACT`](#decl-zfi_common-725-l_usr_act), [`L_FILE_LEN`](#decl-zfi_common-726-l_file_len), [``](#decl-zfi_common-732--fs_table-) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L792-L845` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZFI_COMMON` L859-L878 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 862| IF P_FCURR = P_LCURR. + 863| P_LAMT = P_FAMT. + 864| ELSE. + 865| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 866| EXPORTING + 867| CLIENT = SY-MANDT + 868| DATE = P_BUDAT + 869| FOREIGN_CURRENCY = P_FCURR + 870| FOREIGN_AMOUNT = P_FAMT + 871| LOCAL_CURRENCY = P_LCURR + 872| IMPORTING + 873| LOCAL_AMOUNT = P_LAMT + 874| EXCEPTIONS + 875| NO_RATE_FOUND = 01. + 876| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZFIR0020/ZFI_COMMON#L862-L876` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZFI_COMMON` L888-L915 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 892| CALL FUNCTION 'STRING_REPLACE' + 893| EXPORTING + 894| PATTERN = ',' + 895| SUBSTITUTE = '' + 896| CHANGING + 897| TEXT = P_VALUE. + 898| + 899| IF SY-SUBRC NE 0. + 900| + 901| ENDIF. + 902| + 903| LV_EXT = P_VALUE. + 904| + 905| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 906| EXPORTING + 907| CURRENCY = P_WAERS + 908| AMOUNT_EXTERNAL = LV_EXT + 909| MAX_NUMBER_OF_DIGITS = '11' + 910| IMPORTING + 911| AMOUNT_INTERNAL = LV_AMT. + 912| + 913| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zfi_common-890-lv_ext), [`LV_AMT`](#decl-zfi_common-889-lv_amt) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L892-L913` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZFI_COMMON` L966-L979 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 971| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 972| EXPORTING + 973| TEXTLINE1 = PV_QUESTION1 + 974| TEXTLINE2 = PV_QUESTION2 + 975| TITEL = PV_TITLE + 976| IMPORTING + 977| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZFIR0020/ZFI_COMMON#L971-L977` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZFI_COMMON` L991-L1016 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 997| CALL FUNCTION 'POPUP_TO_CONFIRM' + 998| EXPORTING + 999| TITLEBAR = P_TITLE + 1000| TEXT_QUESTION = P_TEXT + 1001| TEXT_BUTTON_1 = 'Yes' + 1002| TEXT_BUTTON_2 = 'No' + 1003| DEFAULT_BUTTON = P_DEFAULT + 1004| DISPLAY_CANCEL_BUTTON = P_CANC + 1005| IMPORTING + 1006| ANSWER = P_ANSWER + 1007| EXCEPTIONS + 1008| TEXT_NOT_FOUND = 1 + 1009| OTHERS = 2. + 1010| IF SY-SUBRC <> 0. + 1011| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1012| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1013| CLEAR P_ANSWER. + 1014| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZFIR0020/ZFI_COMMON#L997-L1014` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZFI_COMMON` L1025-L1035 (11줄) + +*입력 날짜가 속한 월의 마지막 날짜를 RP_LAST_DAY_OF_MONTHS 로 구하는 날짜 유틸리티다.* + +> 이 unit 의 조각 1개가 5/11줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] RP_LAST_DAY_OF_MONTHS FM 으로 기준일이 속한 월의 말일을 계산해 반환한다(기간 종료일·결산일 계산용). + +```abap + 1030| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1031| EXPORTING + 1032| DAY_IN = P_DATE + 1033| IMPORTING + 1034| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Compute the last day of the month for the given date using RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월말일, 말일 계산, 기간 종료일 +- English: Last Day of Month, Period End Date +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1030-L1034` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZFI_COMMON` L1043-L1052 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1045| TRANSLATE PA_DSMOD TO UPPER CASE. + 1046| + 1047| IF PA_DSMOD NA 'AEN'. + 1048| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1049| LEAVE LIST-PROCESSING. + 1050| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1045-L1050` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZFI_COMMON` L1061-L1092 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1070| CHECK P_FNAME IS NOT INITIAL. + 1071| + 1072| L_FILENM = P_FNAME. + 1073| + 1074| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1075| EXPORTING + 1076| FILE = L_FILENM + 1077| RECEIVING + 1078| RESULT = L_RESULT + 1079| EXCEPTIONS + 1080| CNTL_ERROR = 1 + 1081| ERROR_NO_GUI = 2 + 1082| WRONG_PARAMETER = 3 + 1083| NOT_SUPPORTED_BY_GUI = 4 + 1084| OTHERS = 5. + 1085| IF SY-SUBRC <> 0. + 1086| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1087| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1088| ENDIF. + 1089| + 1090| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zfi_common-1064-l_filenm), [`L_RESULT`](#decl-zfi_common-1063-l_result) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1070-L1090` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZFI_COMMON` L1101-L1118 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1106| L_INTERNAL = P_AMOUNT. + 1107| + 1108| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1109| EXPORTING + 1110| CURRENCY = P_WAERS + 1111| AMOUNT_EXTERNAL = L_INTERNAL + 1112| MAX_NUMBER_OF_DIGITS = 22 + 1113| IMPORTING + 1114| AMOUNT_INTERNAL = L_INTERNAL. + 1115| + 1116| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zfi_common-1104-l_internal) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1106-L1116` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZFI_COMMON` L1129-L1160 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1136| LV_NRRANG = P_NRRANG. + 1137| LV_OBJECT = P_OBJECT. + 1138| + 1139| CALL FUNCTION 'NUMBER_GET_NEXT' + 1140| EXPORTING + 1141| NR_RANGE_NR = LV_NRRANG + 1142| OBJECT = LV_OBJECT + 1143| IMPORTING + 1144| NUMBER = P_DOCNO + 1145| EXCEPTIONS + 1146| INTERVAL_NOT_FOUND = 1 + 1147| NUMBER_RANGE_NOT_INTERN = 2 + 1148| OBJECT_NOT_FOUND = 3 + 1149| QUANTITY_IS_0 = 4 + 1150| QUANTITY_IS_NOT_1 = 5 + 1151| INTERVAL_OVERFLOW = 6 + 1152| BUFFER_OVERFLOW = 7 + 1153| OTHERS = 8. + 1154| IF SY-SUBRC <> 0. + 1155| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1156| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1157| CLEAR P_DOCNO. + 1158| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zfi_common-1133-lv_nrrang), [`LV_OBJECT`](#decl-zfi_common-1134-lv_object) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1136-L1158` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZFI_COMMON` L1172-L1211 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1180| LV_NRRANG = P_NRRANG. + 1181| LV_OBJECT = P_OBJECT. + 1182| IF P_YEAR IS NOT INITIAL. + 1183| LV_YEAR = P_YEAR. + 1184| ELSE. + 1185| LV_YEAR = '0000'. + 1186| + 1187| ENDIF. + 1188| + 1189| CALL FUNCTION 'NUMBER_GET_NEXT' + 1190| EXPORTING + 1191| NR_RANGE_NR = LV_NRRANG + 1192| OBJECT = LV_OBJECT + 1193| TOYEAR = LV_YEAR + 1194| IMPORTING + 1195| NUMBER = P_DOCNO + 1196| EXCEPTIONS + 1197| INTERVAL_NOT_FOUND = 1 + 1198| NUMBER_RANGE_NOT_INTERN = 2 + 1199| OBJECT_NOT_FOUND = 3 + 1200| QUANTITY_IS_0 = 4 + 1201| QUANTITY_IS_NOT_1 = 5 + 1202| INTERVAL_OVERFLOW = 6 + 1203| BUFFER_OVERFLOW = 7 + 1204| OTHERS = 8. + 1205| IF SY-SUBRC <> 0. + 1206| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1207| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1208| CLEAR P_DOCNO. + 1209| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zfi_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zfi_common-1177-lv_object), [`LV_YEAR`](#decl-zfi_common-1178-lv_year) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1180-L1209` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZFI_COMMON` L1220-L1235 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1223| SELECT DOMVALUE_L DDTEXT + 1224| INTO TABLE P_TAB + 1225| FROM DD07T + 1226| WHERE DOMNAME EQ P_DOMAIN + 1227| AND DDLANGUAGE EQ SY-LANGU + 1228| AND AS4LOCAL EQ 'A'. + 1229| IF SY-SUBRC EQ 0. + 1230| SORT P_TAB. + 1231| ELSE. + 1232| REFRESH P_TAB. + 1233| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1223-L1233` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZFI_COMMON` L1268-L1298 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1274| IF P_MENGE IS INITIAL. + 1275| CLEAR PV_MENGE. + 1276| EXIT. + 1277| ELSEIF P_IN_ME EQ P_OUT_ME. + 1278| PV_MENGE = P_MENGE. + 1279| EXIT. + 1280| ENDIF. + 1281| + 1282| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1283| EXPORTING + 1284| I_MATNR = P_MATNR + 1285| I_IN_ME = P_IN_ME + 1286| I_OUT_ME = P_OUT_ME + 1287| I_MENGE = P_MENGE + 1288| IMPORTING + 1289| E_MENGE = PV_MENGE + 1290| EXCEPTIONS + 1291| ERROR_IN_APPLICATION = 1 + 1292| ERROR = 2 + 1293| OTHERS = 3. + 1294| IF SY-SUBRC <> 0. + 1295| CLEAR PV_MENGE. + 1296| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1274-L1296` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZFI_COMMON` L1306-L1316 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1308| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1309| EXPORTING + 1310| TITLE_TEXT = P_TITLE + 1311| SORT_BY_LEVEL = ' ' + 1312| SHOW_IDS = 'X' + 1313| MESSAGE_LIST = GT_HEAMSG + 1314| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zfi_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zfi_common-23-gt_detmsg) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1308-L1314` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZFI_COMMON` L1325-L1356 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1333| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1334| EXPORTING + 1335| WINDOW_TITLE = 'Upload' + 1336| MULTISELECTION = ' ' + 1337| DEFAULT_EXTENSION = 'XLS' + 1338| DEFAULT_FILENAME = ' ' + 1339| FILE_FILTER = '*.XLS' + 1340| CHANGING + 1341| FILE_TABLE = LT_FILETABLE + 1342| RC = RTN_CODE + 1343| USER_ACTION = USER_ACTION. + 1344| + 1345| CALL METHOD CL_GUI_CFW=>FLUSH. + 1346| + 1347| CASE USER_ACTION. + 1348| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1349| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1350| CHECK SY-SUBRC IS INITIAL. + 1351| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1352| + 1353| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1354| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zfi_common-1330-lt_filetable), [`RTN_CODE`](#decl-zfi_common-1329-rtn_code), [`USER_ACTION`](#decl-zfi_common-1328-user_action), [`LS_FILETABLE`](#decl-zfi_common-1331-ls_filetable) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1333-L1354` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZFI_COMMON` L1365-L1390 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1372| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1373| EXPORTING + 1374| FILE = LV_FILE + 1375| RECEIVING + 1376| RESULT = LV_RESULT. + 1377| + 1378| IF NOT SY-SUBRC IS INITIAL. + 1379| + 1380| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1381| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1382| + 1383| ELSEIF LV_RESULT IS INITIAL. + 1384| + 1385| MESSAGE S001(00) WITH 'Please check your file path'. + 1386| LEAVE LIST-PROCESSING. + 1387| + 1388| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zfi_common-1368-lv_file), [`LV_RESULT`](#decl-zfi_common-1367-lv_result) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1372-L1388` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZFI_COMMON` L1502-L1569 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1507| SELECT SINGLE AENNR + 1508| INTO P_AENNR + 1509| FROM AENR + 1510| WHERE AENNR EQ P_AENNR. + 1511| IF SY-SUBRC EQ 0. + 1512| P_MSGTY = 'S'. + 1513| EXIT. + 1514| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1507-L1514` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1516| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1517| CLEAR : GS_BDC_OPTION. + 1518| + 1519| GS_BDC_OPTION-DISMODE = 'N'. + 1520| GS_BDC_OPTION-UPDMODE = 'S'. + 1521| + 1522| PERFORM DYNPRO TABLES PT_TABLES USING: + 1523| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1524| ' ' 'BDC_OKCODE' '/00', + 1525| ' ' 'RC29A-AENNR' P_AENNR, + 1526| + 1527| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1528| ' ' 'BDC_OKCODE' '/00', + 1529| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1530| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1531| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1532| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1533| + 1534| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1535| ' ' 'BDC_OKCODE' '=ENT1', + 1536| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1537| + 1538| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1539| ' ' 'BDC_OKCODE' '=ENT1', + 1540| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1541| + 1542| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1543| ' ' 'BDC_OKCODE' '=ENT1', + 1544| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1545| + 1546| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1547| ' ' 'BDC_OKCODE' '/00', + 1548| + 1549| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1550| ' ' 'BDC_OKCODE' '=FCBU'. + 1551| + 1552| CALL TRANSACTION 'CC01' + 1553| USING GT_BDCDATA[] + 1554| OPTIONS FROM GS_BDC_OPTION + 1555| MESSAGES INTO GT_MESSTAB[]. + 1556| + 1557| *-- 메시지 처리 + 1558| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1559| MSGID = 'CC' + 1560| MSGNR = '001'. + 1561| IF SY-SUBRC EQ 0. + 1562| P_MSGTY = 'S'. + 1563| ELSE. + 1564| P_MSGTY = 'E'. + 1565| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1566| CHANGING P_MSGTX. + 1567| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zfi_common-63-gt_bdcdata), [`BDCMSGCOLL`](#decl-zfi_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zfi_common-64-gt_messtab), [`GS_BDC_OPTION`](#decl-zfi_common-62-gs_bdc_option) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1516-L1567` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZFI_COMMON` L1577-L1626 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1589| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1590| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1591| + 1592| CALL FUNCTION 'DYNP_VALUES_READ' + 1593| EXPORTING + 1594| DYNAME = LV_DYNAME + 1595| DYNUMB = LV_DYNUM + 1596| TABLES + 1597| DYNPFIELDS = LT_DYNPFIELDS + 1598| EXCEPTIONS + 1599| INVALID_ABAPWORKAREA = 1 + 1600| INVALID_DYNPROFIELD = 2 + 1601| INVALID_DYNPRONAME = 3 + 1602| INVALID_DYNPRONUMMER = 4 + 1603| INVALID_REQUEST = 5 + 1604| NO_FIELDDESCRIPTION = 6 + 1605| INVALID_PARAMETER = 7 + 1606| UNDEFIND_ERROR = 8 + 1607| DOUBLE_CONVERSION = 9 + 1608| STEPL_NOT_FOUND = 10 + 1609| OTHERS = 11. + 1610| + 1611| IF SY-SUBRC <> 0. + 1612| EXIT. + 1613| + 1614| ELSE. + 1615| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1616| WITH KEY FIELDNAME = P_FIELD. + 1617| IF SY-SUBRC EQ 0. + 1618| ASSIGN (P_FIELD) TO . + 1619| IF IS ASSIGNED. + 1620| = LS_DYNPFIELDS-FIELDVALUE. + 1621| ENDIF. + 1622| ENDIF. + 1623| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zfi_common-1580-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zfi_common-1579-lt_dynpfields), [`LV_DYNAME`](#decl-zfi_common-1581-lv_dyname), [`LV_DYNUM`](#decl-zfi_common-1582-lv_dynum), [``](#decl-zfi_common-1584--fs_field-) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1589-L1623` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZFI_COMMON` L1635-L1676 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1647| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1648| + 1649| ASSIGN (P_FIELD) TO . + 1650| IF IS ASSIGNED. + 1651| LS_DYNPFIELDS-FIELDVALUE = . + 1652| ENDIF. + 1653| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1654| + 1655| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1656| EXPORTING + 1657| DYNAME = LV_DYNAME + 1658| DYNUMB = LV_DYNUM + 1659| TABLES + 1660| DYNPFIELDS = LT_DYNPFIELDS + 1661| EXCEPTIONS + 1662| INVALID_ABAPWORKAREA = 1 + 1663| INVALID_DYNPROFIELD = 2 + 1664| INVALID_DYNPRONAME = 3 + 1665| INVALID_DYNPRONUMMER = 4 + 1666| INVALID_REQUEST = 5 + 1667| NO_FIELDDESCRIPTION = 6 + 1668| UNDEFIND_ERROR = 7 + 1669| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zfi_common-1638-ls_dynpfields), [``](#decl-zfi_common-1642--fs_field-), [`LT_DYNPFIELDS`](#decl-zfi_common-1637-lt_dynpfields), [`LV_DYNAME`](#decl-zfi_common-1639-lv_dyname), [`LV_DYNUM`](#decl-zfi_common-1640-lv_dynum) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1647-L1669` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZFI_COMMON` L1682-L1695 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1686| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1687| ID 'TCD' FIELD SY-TCODE. + 1688| + 1689| IF SY-SUBRC NE 0. + 1690| MESSAGE E077(S#) WITH SY-TCODE. + 1691| ELSEIF SY-TCODE CP '*1'. + 1692| GV_DIP_MOD = 'X'. + 1693| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zfi_common-43-gv_dip_mod) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1686-L1693` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZFI_COMMON` L1734-L1799 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1749| LT_OTF[] = P_JOB-OTFDATA. + 1750| + 1751| CALL FUNCTION 'CONVERT_OTF' + 1752| EXPORTING + 1753| FORMAT = 'PDF' + 1754| IMPORTING + 1755| BIN_FILESIZE = LV_BIN_FILESIZE + 1756| BIN_FILE = LV_BIN_FILE + 1757| TABLES + 1758| OTF = LT_OTF + 1759| LINES = LT_LINES + 1760| EXCEPTIONS + 1761| ERR_MAX_LINEWIDTH = 1 + 1762| ERR_FORMAT = 2 + 1763| ERR_CONV_NOT_POSSIBLE = 3 + 1764| ERR_BAD_OTF = 4 + 1765| OTHERS = 5. + 1766| + 1767| LOOP AT LT_OTF. + 1768| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1769| APPEND LS_OTF TO LT_CONTENT_TXT. + 1770| ENDLOOP. + 1771| + 1772| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1773| EXPORTING + 1774| FORMAT_SRC = 'OTF' + 1775| FORMAT_DST = 'PDF' + 1776| DEVTYPE = 'PRINTER' + 1777| CHANGING + 1778| TRANSFER_BIN = LV_TRANSFER_BIN + 1779| CONTENT_TXT = LT_CONTENT_TXT + 1780| CONTENT_BIN = LT_CONTENT_BIN + 1781| OBJHEAD = LT_OBJHEAD + 1782| LEN = LV_LEN_IN + 1783| EXCEPTIONS + 1784| ERR_CONV_FAILED = 1 + 1785| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zfi_common-1747-lt_otf), [`LV_BIN_FILESIZE`](#decl-zfi_common-1742-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zfi_common-1743-lv_bin_file), [`LT_LINES`](#decl-zfi_common-1744-lt_lines), [`LS_OTF`](#decl-zfi_common-1741-ls_otf), [`LT_CONTENT_TXT`](#decl-zfi_common-1737-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zfi_common-1736-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zfi_common-1738-lt_content_bin), [`LT_OBJHEAD`](#decl-zfi_common-1739-lt_objhead), [`LV_LEN_IN`](#decl-zfi_common-1740-lv_len_in) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1749-L1785` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1788| LV_FILESIZE = LV_LEN_IN. + 1789| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1790| + 1791| CALL FUNCTION 'GUI_DOWNLOAD' + 1792| EXPORTING + 1793| BIN_FILESIZE = LV_FILESIZE + 1794| FILENAME = LV_FILENAME + 1795| FILETYPE = 'BIN' + 1796| TABLES + 1797| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zfi_common-1745-lv_filesize), [`LV_LEN_IN`](#decl-zfi_common-1740-lv_len_in), [`LV_FILENAME`](#decl-zfi_common-1746-lv_filename), [`LT_CONTENT_BIN`](#decl-zfi_common-1738-lt_content_bin) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1788-L1797` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZFI_COMMON` L1808-L1864 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1825| LV_DEFAULT_EXTENSION = P_EXT. + 1826| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1827| LV_INITIAL_DIRECTORY = 'C:\'. + 1828| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1829| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1830| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1831| INTO LV_FILE_FILTER. + 1832| + 1833| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1834| EXPORTING + 1835| * WINDOW_TITLE + 1836| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1837| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1838| * WITH_ENCODING = ABAP_TRUE + 1839| FILE_FILTER = LV_FILE_FILTER + 1840| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1841| CHANGING + 1842| FILENAME = LV_FILENAME + 1843| PATH = LV_PATH + 1844| FULLPATH = LV_FULLPATH + 1845| USER_ACTION = LV_USER_ACTION + 1846| EXCEPTIONS + 1847| CNTL_ERROR = 2 + 1848| ERROR_NO_GUI = 3 + 1849| NOT_SUPPORTED_BY_GUI = 4 + 1850| OTHERS = 5. + 1851| IF SY-SUBRC <> 0. + 1852| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1853| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1854| EXIT. + 1855| ELSE. + 1856| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1857| EXIT. + 1858| ENDIF. + 1859| + 1860| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zfi_common-1815-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zfi_common-1818-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zfi_common-1817-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zfi_common-1816-lv_file_filter), [`LV_FILENAME`](#decl-zfi_common-1812-lv_filename), [`LV_PATH`](#decl-zfi_common-1813-lv_path), [`LV_FULLPATH`](#decl-zfi_common-1814-lv_fullpath), [`LV_USER_ACTION`](#decl-zfi_common-1821-lv_user_action) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1825-L1860` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZFI_COMMON` L1874-L1902 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1881| ASSIGN : (PT_EXCEL_TABLE) TO . + 1882| ASSIGN : (PS_EXCEL_STRUC) TO . + 1883| + 1884| LOOP AT PT_INTERN. + 1885| AT NEW ROW. + 1886| CLEAR : . + 1887| ENDAT. + 1888| + 1889| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1890| + 1891| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1892| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1893| ENDIF. + 1894| + 1895| MOVE PT_INTERN-VALUE TO . + 1896| + 1897| AT END OF ROW. + 1898| APPEND TO . + 1899| ENDAT. + 1900| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zfi_common-1878--itab-), [``](#decl-zfi_common-1879--iline-), [``](#decl-zfi_common-1877--field-) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1881-L1900` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZFI_COMMON` L1910-L1930 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1917| CALL FUNCTION 'POSTING_INTERFACE_START' + 1918| EXPORTING + 1919| I_FUNCTION = 'C' " Using Call Transaction + 1920| I_KEEP = 'Y' + 1921| I_MODE = P_MODE + 1922| I_UPDATE = 'S' + 1923| EXCEPTIONS + 1924| CLIENT_INCORRECT = 1 + 1925| FUNCTION_INVALID = 2 + 1926| GROUP_NAME_MISSING = 3 + 1927| MODE_INVALID = 4 + 1928| UPDATE_INVALID = 5 + 1929| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1917-L1929` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZFI_COMMON` L1937-L1947 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1938| CALL FUNCTION 'POSTING_INTERFACE_END' + 1939| EXPORTING + 1940| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1938-L1940` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZFI_COMMON` L1957-L1980 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 1961| CHECK FVAL NE SPACE. + 1962| + 1963| FTPOST-FNAM = FNAM. + 1964| FTPOST-STYPE = GV_FTPOST_TYPE. + 1965| FTPOST-COUNT = GV_FTPOST_CNT. + 1966| + 1967| " 금액 필드일 경우. + 1968| IF FCURR_X = 'X'. + 1969| WRITE FVAL TO LV_CURR CURRENCY + 1970| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 1971| CONDENSE LV_CURR NO-GAPS. + 1972| WRITE LV_CURR TO FTPOST-FVAL. + 1973| ELSE. + 1974| WRITE FVAL TO FTPOST-FVAL. + 1975| ENDIF. + 1976| + 1977| APPEND FTPOST. + 1978| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zfi_common-70-ftpost), [`GV_FTPOST_TYPE`](#decl-zfi_common-73-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zfi_common-74-gv_ftpost_cnt), [`LV_CURR`](#decl-zfi_common-1959-lv_curr), [`GV_FTPOST_WAERS`](#decl-zfi_common-75-gv_ftpost_waers) +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1961-L1978` · confidence 0.85 · `ZFIR0020#ZFI_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZFI_COMMON` L1989-L2004 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 1994| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1995| EXPORTING + 1996| MSGID = PS_MESSAGE-MSGID + 1997| MSGNR = PS_MESSAGE-MSGNO + 1998| MSGV1 = PS_MESSAGE-MSGV1 + 1999| MSGV2 = PS_MESSAGE-MSGV2 + 2000| MSGV3 = PS_MESSAGE-MSGV3 + 2001| MSGV4 = PS_MESSAGE-MSGV4 + 2002| IMPORTING + 2003| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZFIR0020/ZFI_COMMON#L1994-L2003` · confidence 0.9 · `ZFIR0020#ZFI_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZFI_COMMON` L2014-L2041 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2019| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2020| EXPORTING + 2021| I_BUKRS = PV_BUKRS + 2022| I_BUDAT = PV_DATE + 2023| IMPORTING + 2024| E_GJAHR = P_LFGJA + 2025| E_MONAT = P_LFMON + 2026| EXCEPTIONS + 2027| FISCAL_YEAR = 1 + 2028| PERIOD = 2 + 2029| PERIOD_VERSION = 3 + 2030| POSTING_PERIOD = 4 + 2031| SPECIAL_PERIOD = 5 + 2032| VERSION = 6 + 2033| POSTING_DATE = 7 + 2034| OTHERS = 8. + 2035| + 2036| IF SY-SUBRC NE 0. + 2037| P_LFGJA = PV_DATE(4). + 2038| P_LFMON = PV_DATE+4(2). + 2039| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZFIR0020/ZFI_COMMON#L2019-L2039` · confidence 0.95 · `ZFIR0020#ZFI_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CALL_FB03 — `ZFIR0020F01` L142-L157 (16줄) + +*ALV 행의 전표번호를 파라미터(BLN/BUK/GJR)로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 행 번호가 숫자인지 확인 후 GT_DATA 의 해당 행에 전표번호(BELNR)가 있으면 SET PARAMETER ID BLN/BUK/GJR 로 전표번호·회사코드·회계연도를 넘겨 FB03 을 SKIP FIRST SCREEN 으로 호출한다. + +```abap + 144| CHECK P_ROW CO '0123456789 '. + 145| READ TABLE GT_DATA INDEX P_ROW. + 146| CHECK SY-SUBRC EQ 0. + 147| + 148| CHECK GT_DATA-BELNR IS NOT INITIAL. + 149| + 150| SET PARAMETER ID 'BLN' FIELD GT_DATA-BELNR. + 151| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 152| SET PARAMETER ID 'GJR' FIELD GT_DATA-GJAHR. + 153| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Validates the row index, and if the row has a document number sets BLN/BUK/GJR parameters and calls FB03 to display the FI document. +- 호출(파서): FB03 +- SAP 객체: FB03, GT_DATA +- 업무 키워드: 전표 조회, 핫스팟, 전표번호, 회계연도 +- English: Display Document, FB03, Navigation +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0020top-43-gt_data), [`P_BUKRS`](#decl-zfir0020top-79-p_bukrs) +- 위치: `abap://ZFIR0020/ZFIR0020F01#L144-L153` · confidence 0.95 · `ZFIR0020#ZFIR0020F01#FORM#CALL_FB03#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0020I01` L6-L28 (23줄) + +*화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| + 24| WHEN OTHERS. + 25| * LEAVE PROGRAM. + 26| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제, 뒤로가기 +- English: OK code, PAI, ALV container, LEAVE TO SCREEN +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zfir0020top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zfi_alv-202-lcl_def_grid), [`GO_ALV1`](#decl-zfi_alv-160-go_alv1), [`GO_DOCKING_CONT1`](#decl-zfi_alv-182-go_docking_cont1), [`GO_SPLITTER1`](#decl-zfi_alv-166-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zfi_alv-148-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zfi_alv-149-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zfi_alv-192-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zfir0020c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zfi_alv-178-go_event_receiver1) +- 위치: `abap://ZFIR0020/ZFIR0020I01#L9-L26` · confidence 0.85 · `ZFIR0020#ZFIR0020I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (285건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0020C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zfir0020c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZFIR0020TOP` (29건) + +#### IBRTT — type-pool · L1-L1 {#decl-zfir0020top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zfir0020top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zfir0020top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zfir0020top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zfir0020top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zfir0020top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### BKPF — tables · L4-L4 {#decl-zfir0020top-4-bkpf} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### BSEG — tables · L4-L4 {#decl-zfir0020top-4-bseg} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### DD03L — tables · L4-L4 {#decl-zfir0020top-4-dd03l} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### LFA1 — tables · L4-L4 {#decl-zfir0020top-4-lfa1} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zfir0020top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zfir0020top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zfir0020top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zfir0020top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zfir0020top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zfir0020top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zfir0020top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zfir0020top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zfir0020top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L38-L38 {#decl-zfir0020top-38-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L43-L56 {#decl-zfir0020top-43-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0050. + +DATA : + BTYPE_T LIKE DD07T-DDTEXT, + CANCELFLAG_T LIKE DD07T-DDTEXT, + LIFNR_T LIKE LFA1-NAME1, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_DATA. +``` + +#### GS_DATA — data · L58-L58 {#decl-zfir0020top-58-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_ERROR_LOG_POPUP — data · L60-L66 {#decl-zfir0020top-60-gt_error_log_popup} + +```abap +DATA : BEGIN OF GT_ERROR_LOG_POPUP OCCURS 0, + EXCEL_LINE TYPE I, + SCRTEXT_L LIKE DD03VT-SCRTEXT_L, + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_ERROR_LOG_POPUP. +``` + +#### GS_POPUP — data · L69-L69 {#decl-zfir0020top-69-gs_popup} + +```abap +DATA : GS_POPUP LIKE GT_ERROR_LOG_POPUP. +``` + +#### W_POPUP_GRID — data · L70-L70 {#decl-zfir0020top-70-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### P_BUKRS — parameter · L79-L80 {#decl-zfir0020top-79-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### S_BLDAT — select-option · L85-L85 {#decl-zfir0020top-85-s_bldat} + +```abap +SELECT-OPTIONS : S_BLDAT FOR BKPF-BLDAT OBLIGATORY. +``` + +#### S_GSBER — select-option · L86-L87 {#decl-zfir0020top-86-s_gsber} + +```abap +SELECT-OPTIONS : S_GSBER FOR BSEG-GSBER NO-EXTENSION + NO INTERVALS . +``` + +#### S_LIFNR — select-option · L88-L88 {#decl-zfir0020top-88-s_lifnr} + +```abap +SELECT-OPTIONS : S_LIFNR FOR LFA1-LIFNR. +``` + +### `ZFI_ALV` (125건) + +#### F4TYP — type-pool · L9-L9 {#decl-zfi_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zfi_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zfi_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zfi_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zfi_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zfi_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zfi_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zfi_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zfi_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zfi_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zfi_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zfi_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zfi_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zfi_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zfi_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zfi_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zfi_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zfi_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zfi_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zfi_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zfi_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zfi_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zfi_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zfi_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zfi_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zfi_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zfi_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zfi_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zfi_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zfi_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zfi_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zfi_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zfi_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zfi_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zfi_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zfi_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zfi_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zfi_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zfi_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zfi_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zfi_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zfi_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zfi_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zfi_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zfi_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zfi_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zfi_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zfi_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zfi_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zfi_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zfi_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zfi_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zfi_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zfi_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zfi_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zfi_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zfi_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zfi_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zfi_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zfi_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zfi_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zfi_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zfi_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zfi_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zfi_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zfi_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zfi_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zfi_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zfi_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zfi_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zfi_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zfi_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zfi_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zfi_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zfi_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zfi_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zfi_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zfi_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GV_TOP_OF_PAGE — data · L132-L132 {#decl-zfi_alv-132-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L142-L142 {#decl-zfi_alv-142-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L143-L143 {#decl-zfi_alv-143-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L144-L144 {#decl-zfi_alv-144-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L145-L145 {#decl-zfi_alv-145-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L148-L148 {#decl-zfi_alv-148-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L149-L149 {#decl-zfi_alv-149-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L151-L151 {#decl-zfi_alv-151-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L152-L152 {#decl-zfi_alv-152-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L154-L154 {#decl-zfi_alv-154-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L155-L155 {#decl-zfi_alv-155-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L157-L157 {#decl-zfi_alv-157-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L158-L158 {#decl-zfi_alv-158-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L160-L160 {#decl-zfi_alv-160-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L161-L161 {#decl-zfi_alv-161-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L162-L162 {#decl-zfi_alv-162-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L163-L163 {#decl-zfi_alv-163-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L165-L165 {#decl-zfi_alv-165-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L166-L166 {#decl-zfi_alv-166-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L167-L167 {#decl-zfi_alv-167-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L168-L168 {#decl-zfi_alv-168-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L169-L169 {#decl-zfi_alv-169-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L171-L171 {#decl-zfi_alv-171-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L173-L173 {#decl-zfi_alv-173-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L174-L174 {#decl-zfi_alv-174-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L175-L175 {#decl-zfi_alv-175-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L176-L176 {#decl-zfi_alv-176-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L178-L178 {#decl-zfi_alv-178-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L179-L179 {#decl-zfi_alv-179-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L180-L180 {#decl-zfi_alv-180-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L182-L182 {#decl-zfi_alv-182-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L183-L183 {#decl-zfi_alv-183-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L184-L184 {#decl-zfi_alv-184-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L185-L185 {#decl-zfi_alv-185-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L187-L187 {#decl-zfi_alv-187-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L188-L188 {#decl-zfi_alv-188-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L189-L189 {#decl-zfi_alv-189-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L190-L190 {#decl-zfi_alv-190-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L192-L192 {#decl-zfi_alv-192-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L193-L193 {#decl-zfi_alv-193-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L194-L194 {#decl-zfi_alv-194-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L195-L195 {#decl-zfi_alv-195-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L197-L197 {#decl-zfi_alv-197-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L202-L214 {#decl-zfi_alv-202-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +#### LV_ONE_SEL — data · unit 로컬 · L374-L374 {#decl-zfi_alv-374-lv_one_sel} + +```abap + DATA : LV_ONE_SEL TYPE C. +``` + +#### — field-symbol · unit 로컬 · L478-L478 {#decl-zfi_alv-478--fs_sort-} + +```abap + FIELD-SYMBOLS : TYPE LVC_S_SORT. +``` + +#### — field-symbol · unit 로컬 · L479-L479 {#decl-zfi_alv-479--fs_fcat-} + +```abap + FIELD-SYMBOLS : TYPE LVC_S_FCAT. +``` + +### `ZFI_COMMON` (129건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zfi_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zfi_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zfi_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zfi_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zfi_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zfi_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zfi_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zfi_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zfi_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zfi_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zfi_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zfi_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zfi_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zfi_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zfi_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zfi_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zfi_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zfi_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zfi_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zfi_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zfi_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zfi_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zfi_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zfi_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zfi_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zfi_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zfi_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zfi_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zfi_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zfi_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zfi_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zfi_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zfi_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zfi_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE '1000'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zfi_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE '1000'. +``` + +#### GS_BDC_OPTION — data · L62-L62 {#decl-zfi_common-62-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L63-L63 {#decl-zfi_common-63-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L64-L64 {#decl-zfi_common-64-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L70-L70 {#decl-zfi_common-70-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L71-L71 {#decl-zfi_common-71-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L72-L72 {#decl-zfi_common-72-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L73-L73 {#decl-zfi_common-73-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L74-L74 {#decl-zfi_common-74-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L75-L75 {#decl-zfi_common-75-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L77-L87 {#decl-zfi_common-77-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L91-L93 {#decl-zfi_common-91-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L102-L120 {#decl-zfi_common-102-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L122-L128 {#decl-zfi_common-122-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L130-L137 {#decl-zfi_common-130-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L163-L163 {#decl-zfi_common-163-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L164-L164 {#decl-zfi_common-164-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L165-L165 {#decl-zfi_common-165-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L210-L210 {#decl-zfi_common-210-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L236-L236 {#decl-zfi_common-236-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L237-L237 {#decl-zfi_common-237-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L238-L238 {#decl-zfi_common-238-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L239-L239 {#decl-zfi_common-239-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### L_MESSAGE — data · unit 로컬 · L240-L240 {#decl-zfi_common-240-l_message} + +```abap + DATA : L_MESSAGE TYPE STRING. +``` + +#### LS_BDCTAB — data · unit 로컬 · L309-L309 {#decl-zfi_common-309-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L480-L480 {#decl-zfi_common-480-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L481-L481 {#decl-zfi_common-481-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L513-L513 {#decl-zfi_common-513-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L590-L590 {#decl-zfi_common-590-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L591-L591 {#decl-zfi_common-591--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L592-L592 {#decl-zfi_common-592--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L593-L593 {#decl-zfi_common-593--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L718-L718 {#decl-zfi_common-718-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L719-L719 {#decl-zfi_common-719-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L723-L723 {#decl-zfi_common-723-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L724-L724 {#decl-zfi_common-724-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L725-L725 {#decl-zfi_common-725-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L726-L726 {#decl-zfi_common-726-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L727-L727 {#decl-zfi_common-727-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L728-L728 {#decl-zfi_common-728-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L729-L729 {#decl-zfi_common-729-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L730-L730 {#decl-zfi_common-730-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L732-L732 {#decl-zfi_common-732--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L733-L733 {#decl-zfi_common-733--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L734-L734 {#decl-zfi_common-734--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L889-L889 {#decl-zfi_common-889-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L890-L890 {#decl-zfi_common-890-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1063-L1063 {#decl-zfi_common-1063-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1064-L1064 {#decl-zfi_common-1064-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1104-L1104 {#decl-zfi_common-1104-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1133-L1133 {#decl-zfi_common-1133-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1134-L1134 {#decl-zfi_common-1134-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zfi_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zfi_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1178-L1178 {#decl-zfi_common-1178-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1328-L1328 {#decl-zfi_common-1328-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1329-L1329 {#decl-zfi_common-1329-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1330-L1330 {#decl-zfi_common-1330-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1331-L1331 {#decl-zfi_common-1331-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1367-L1367 {#decl-zfi_common-1367-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1368-L1368 {#decl-zfi_common-1368-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1579-L1579 {#decl-zfi_common-1579-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1580-L1580 {#decl-zfi_common-1580-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1581-L1581 {#decl-zfi_common-1581-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1582-L1582 {#decl-zfi_common-1582-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1584-L1584 {#decl-zfi_common-1584--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1637-L1637 {#decl-zfi_common-1637-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1638-L1638 {#decl-zfi_common-1638-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1639-L1639 {#decl-zfi_common-1639-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1640-L1640 {#decl-zfi_common-1640-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1642-L1642 {#decl-zfi_common-1642--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1736-L1736 {#decl-zfi_common-1736-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1737-L1737 {#decl-zfi_common-1737-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1738-L1738 {#decl-zfi_common-1738-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1739-L1739 {#decl-zfi_common-1739-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1740-L1740 {#decl-zfi_common-1740-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1741-L1741 {#decl-zfi_common-1741-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1742-L1742 {#decl-zfi_common-1742-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1743-L1743 {#decl-zfi_common-1743-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1744-L1744 {#decl-zfi_common-1744-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1745-L1745 {#decl-zfi_common-1745-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1746-L1746 {#decl-zfi_common-1746-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1747-L1747 {#decl-zfi_common-1747-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1812-L1812 {#decl-zfi_common-1812-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1813-L1813 {#decl-zfi_common-1813-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1814-L1814 {#decl-zfi_common-1814-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1815-L1815 {#decl-zfi_common-1815-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1816-L1816 {#decl-zfi_common-1816-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1817-L1817 {#decl-zfi_common-1817-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1818-L1818 {#decl-zfi_common-1818-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1821-L1821 {#decl-zfi_common-1821-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1877-L1877 {#decl-zfi_common-1877--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1878-L1878 {#decl-zfi_common-1878--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1879-L1879 {#decl-zfi_common-1879--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L1959-L1959 {#decl-zfi_common-1959-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +### `ZFIR0020F01` (1건) + +#### LT_ZFIT0050 — data · unit 로컬 · L90-L90 {#decl-zfir0020f01-90-lt_zfit0050} + +```abap + DATA : LT_ZFIT0050 LIKE ZFIT0050 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZFIR0020 L27-32 | 0 | INITIALIZATION 에서 SET_DYNP 를 호출하는 이벤트 블록이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0020 L33-42 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN 으로 화면 속성을 조정하는 이벤트 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0020 L43-49 | 0 | INITIALIZE_DATA 후 PROCESS_DATA 로 매입채무 연계 내역을 조회하는 START-OF-SELECTION 이벤트 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0020 L50-61 | 0 | 온라인 실행 시 조회 결과가 있으면 ALV 화면 100 을 호출하고 없으면 'No Data Found' 메시지를 내는 END-OF-SELECTION 이벤트 블록이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZFIR0020C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZFIR0020C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0020C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0020C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZFIR0020C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0020C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0020C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0020C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZFIR0020C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZFIR0020C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZFIR0020C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZFIR0020C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZFIR0020C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZFIR0020C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZFIR0020C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZFIR0020C01 L210-216 | 0 | | +| ON_F4 | FORM | ZFIR0020C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZFIR0020C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZFIR0020C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZFIR0020C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZFIR0020C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZFIR0020C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZFIR0020C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZFIR0020C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZFIR0020C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZFIR0020F01 L6-17 | 0 | 회사코드 권한(GV_BUKRS_O)이 없으면 선택화면 그룹 MG1 필드를 입력 불가로 바꾸는 화면 속성 FORM 이다. | +| SET_DYNP | FORM | ZFIR0020F01 L24-35 | 0 | 회사코드 기본정보와 텍스트를 세팅하고 전표일자 선택조건 기본값을 오늘로 초기화하는 선택화면 초기화 FORM 이다. | +| INITIALIZE_DATA | FORM | ZFIR0020F01 L41-72 | 0 | 회사코드 기본정보·필드카탈로그·오류로그·플래그를 초기화하고 도메인 ZDBTYPE/ZDCANCELFLAG 텍스트를 준비하는 초기화 FORM 이다. | +| PROCESS_DATA | FORM | ZFIR0020F01 L78-80 | 0 | SELECT_DATA 를 호출하는 단순 디스패치 FORM 이다. | +| SELECT_DATA | FORM | ZFIR0020F01 L89-133 | 2 | 매입채무 연계 내역을 조건에 맞게 읽어 도메인 텍스트·공급업체명·처리상태 아이콘을 붙여 표시용 데이터를 만든다. | +| CALL_FB03 | FORM | ZFIR0020F01 L142-157 | 1 | ALV 행의 전표번호를 파라미터(BLN/BUK/GJR)로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0020I01 L6-28 | 1 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0020O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZFIR0020O01 L26-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZFIR0020O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZFIR0020O01 L127-147 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZFIR0020O01 L155-164 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZFIR0020O01 L172-194 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZFIR0020O01 L203-231 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZFIR0020O01 L304-319 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZFIR0020O01 L329-461 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZFIR0020O01 L469-497 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZFI_ALV L221-225 | 0 | ALV 그리드 첫 행을 고정하는 SET_FIXED_ROWS 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZFI_ALV L227-231 | 0 | ALV 컬럼 폭 조정 가능 여부를 설정하는 SET_RESIZE_COLS 래퍼 메서드다. | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZFI_ALV L233-235 | 0 | ALV 그리드를 맨 아래로 스크롤하는 SCROLL_TO_BOTTOM 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZFI_ALV L237-242 | 0 | ALV 그리드의 현재 셀 위치를 지정하는 SET_CURRENT_CELL_BASE 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZFI_ALV L244-248 | 0 | ALV 모든 컬럼 폭을 헤더 포함 최적화하는 OPTIMIZE_ALL_COLS 래퍼 메서드다. | +| CLEAR_CONTAINER_PROC | FORM | ZFI_ALV L262-310 | 0 | HTML 뷰어·ALV 그리드·컨테이너·스플리터 객체를 순서대로 FREE 하고 CFW FLUSH 하는 화면 정리 루틴이다. | +| UCOMM_PROC | FORM | ZFI_ALV L319-342 | 0 | 화면 PAI 에서 ALV 변경 데이터를 확정(CHECK_CHANGED_DATA)하고 CL_GUI_CFW=>DISPATCH 로 컨트롤 이벤트를 분배한 뒤 OK 코드를 정리하는 ALV PAI 공통 처리다. | +| GET_SELECTED_ROW | FORM | ZFI_ALV L351-360 | 0 | ALV 그리드의 선택 행 인덱스를 GET_SELECTED_ROWS 로 GT_ROWS 에 가져오는 유틸리티다. | +| GET_SELECTED_ROW2 | FORM | ZFI_ALV L369-397 | 1 | ALV 그리드에서 선택된 행 인덱스를 GT_ROWS 로 가져오고 미선택/복수 선택 시 오류 메시지를 표시하는 유틸리티다. | +| REFRESH_CONTAINER | FORM | ZFI_ALV L406-436 | 0 | ALV 그리드의 프런트엔드 레이아웃을 재설정하고 REFRESH_TABLE_DISPLAY(안정 스크롤/소프트 리프레시)로 화면을 갱신하는 ALV 유틸리티다. | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZFI_ALV L445-453 | 0 | ALV 툴바 제외 기능 코드(UI_FUNC)를 제외 목록 테이블에 추가하는 유틸리티다. | +| REGISTER_ALV_EVENT | FORM | ZFI_ALV L462-465 | 0 | ALV 이벤트 등록용 빈 FORM(구현 없음)이다. | +| CHECK_SORT_PARAMETER | FORM | ZFI_ALV L472-493 | 1 | ALV 정렬 설정(LVC_T_SORT)의 필드가 필드카탈로그에 존재하는지 검사해 누락 필드명을 돌려주는 검증 루틴이다. | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZFI_COMMON L145-150 | 0 | BDC 생성 시 값이 비어 있으면 제외할 필드명을 GT_EXCP_INIT_FIELD 목록에 등록하는 유틸리티다. | +| GET_FCAT_LIKE_ITAB | FORM | ZFI_COMMON L159-200 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZFI_COMMON L209-226 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZFI_COMMON L232-295 | 1 | 세트 클래스(코스트센터/원가요소/오더/손익센터/계정과목 그룹)와 세트명으로 K_HIERARCHY_TABLES_READ 를 호출해 세트 값 목록(GT_VALUE_SET)을 읽는 공통 루틴이다. | +| DYNPRO | FORM | ZFI_COMMON L307-333 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZFI_COMMON L347-364 | 0 | CALL TRANSACTION 옵션 구조(CTU_PARAMS)에 표시모드·업데이트모드·커밋 등 BDC 실행 옵션을 채우는 유틸리티다. | +| ZERO_O | FORM | ZFI_COMMON L373-379 | 0 | CONVERSION_EXIT_ALPHA_OUTPUT 로 선행 0을 제거해 출력 형식으로 바꾸는 유틸리티다. | +| ZERO_I | FORM | ZFI_COMMON L388-394 | 0 | CONVERSION_EXIT_ALPHA_INPUT 로 선행 0을 채워 내부 형식으로 바꾸는 유틸리티다. | +| F4_DATE_FORMAT_YYYYMM | FORM | ZFI_COMMON L403-419 | 0 | POPUP_TO_SELECT_MONTH 로 YYYYMM 월을 선택받는 F4 유틸리티(기본값은 현재 월)다. | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZFI_COMMON L428-434 | 0 | F4_DATE 달력 팝업으로 YYYYMMDD 날짜를 선택받는 F4 유틸리티다. | +| DATE_CHK | FORM | ZFI_COMMON L444-453 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZFI_COMMON L463-468 | 0 | 백분율과 텍스트로 SAPGUI_PROGRESS_INDICATOR 진행 표시줄을 갱신하는 한 줄 유틸리티다. | +| BAR_MSG_PER | FORM | ZFI_COMMON L479-503 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZFI_COMMON L512-522 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZFI_COMMON L531-537 | 0 | CLOI_PUT_SIGN_IN_FRONT 로 숫자 문자열의 음수 부호를 앞으로 옮기는 표시 유틸리티다. | +| F4_FNAME | FORM | ZFI_COMMON L545-568 | 0 | 파일 열기 대화상자로 업로드 파일명을 선택받는 F4 유틸리티다. | +| UPLOAD_DATA | FORM | ZFI_COMMON L582-639 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZFI_COMMON L648-654 | 0 | BDC 전송용 날짜 문자열에서 '.', '-', '/' 구분자를 제거해 YYYYMMDD 형식으로 만드는 유틸리티다. | +| BDC_CURR | FORM | ZFI_COMMON L663-667 | 0 | BDC 전송용 금액 문자열에서 천단위 콤마를 제거하는 한 줄 유틸리티다. | +| BDC_CHECKBOX | FORM | ZFI_COMMON L676-678 | 0 | BDC 체크박스 입력값을 대문자로 변환하는 한 줄 유틸리티다. | +| BUILD_MESSAGE | FORM | ZFI_COMMON L688-709 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZFI_COMMON L716-846 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZFI_COMMON L859-878 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZFI_COMMON L888-915 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFI_COMMON L927-955 | 0 | 내부테이블 값 목록으로 F4 검색도움(F4IF_INT_TABLE_VALUE_REQUEST)을 띄워 선택값을 화면 필드에 돌려주는 F4 공통 루틴이다. | +| POPUP_TO_CONFIRM_02 | FORM | ZFI_COMMON L966-979 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZFI_COMMON L991-1016 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZFI_COMMON L1025-1035 | 1 | 입력 날짜가 속한 월의 마지막 날짜를 RP_LAST_DAY_OF_MONTHS 로 구하는 날짜 유틸리티다. | +| SET_DSMOD | FORM | ZFI_COMMON L1043-1052 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZFI_COMMON L1061-1092 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZFI_COMMON L1101-1118 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZFI_COMMON L1129-1160 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZFI_COMMON L1172-1211 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZFI_COMMON L1220-1235 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZFI_COMMON L1244-1255 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZFI_COMMON L1268-1298 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZFI_COMMON L1306-1316 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZFI_COMMON L1325-1356 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZFI_COMMON L1365-1390 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZFI_COMMON L1401-1423 | 0 | 선택화면 기능 버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 UI 유틸리티다. | +| BDC_CREATE_AENNR | FORM | ZFI_COMMON L1502-1569 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZFI_COMMON L1577-1626 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZFI_COMMON L1635-1676 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZFI_COMMON L1682-1695 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZFI_COMMON L1705-1725 | 0 | 선택화면(1000)의 기능 버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 UI 유틸리티다. | +| F_PDF_DOWNLOAD | FORM | ZFI_COMMON L1734-1799 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZFI_COMMON L1808-1864 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZFI_COMMON L1874-1902 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZFI_COMMON L1910-1930 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZFI_COMMON L1937-1947 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZFI_COMMON L1957-1980 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZFI_COMMON L1989-2004 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZFI_COMMON L2014-2041 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | diff --git a/wiki/programs/ZFIR0030.md b/wiki/programs/ZFIR0030.md new file mode 100644 index 0000000..dab1311 --- /dev/null +++ b/wiki/programs/ZFIR0030.md @@ -0,0 +1,5009 @@ +--- +type: abap-program +title: "ZFIR0030 — 매출 및 입금내역 인터페이스" +description: "POS·영업 시스템에서 받은 매출 및 입금 내역(CBO 테이블 ZFIT0060)을 검증해 SAP 회계전표로 자동 생성하는 인터페이스 배치다. 거래유형별(상품매출 B01, 모바일판매 B03, 이통예수금 B53, 이통대납금 B55, 판매장려금 B59 등)로 전기 로직이 갈라지며, 전표 헤더·아이템·세금라인·전표분할 라인을 만들어 FB01 BDC 로 전기하고 결과를 ZFIT0060 에 다시 기록한다. 매일 배치로 도는 핵심 매출 계상 프로그램이다." +resource: "abap://ZFIR0030" +tags: ["인터페이스", "전표", "매출", "채권관리", "배치작업", "자동기표", "FI", "인터페이스로그", "고유키", "공통로그", "전송키", "중단", "재전송", "결과전송", "RFC", "매출채권", "상태값전송", "CBO갱신", "전표생성", "전기"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:19+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "DD07T", "J_1BBRANCH", "KNB1", "LTDX", "SKAT", "T007S", "TCURC", "USR01", "V_USERNAME", "ZFIT0040", "ZFIT0060", "ZFIT0070", "ZFIT0080", "ZFIT0160"] +x-tables-write: ["ZFIT0060"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "ef9946d1a81392bea929bb74dfc76e6864c69a145e777b0244ff228aa08ca395" +x-unit-count: 101 +x-chunk-count: 67 +x-declaration-count: 289 +--- + +## 업무 목적 + +POS·영업 시스템에서 받은 매출 및 입금 내역(CBO 테이블 ZFIT0060)을 검증해 SAP 회계전표로 자동 생성하는 인터페이스 배치다. 거래유형별(상품매출 B01, 모바일판매 B03, 이통예수금 B53, 이통대납금 B55, 판매장려금 B59 등)로 전기 로직이 갈라지며, 전표 헤더·아이템·세금라인·전표분할 라인을 만들어 FB01 BDC 로 전기하고 결과를 ZFIT0060 에 다시 기록한다. 매일 배치로 도는 핵심 매출 계상 프로그램이다. + +## 주 흐름 + +1. 처리 기준일을 받고 도메인 텍스트를 준비한다 (GET_DOMAIN) +2. 매출채권·입금 내역을 수신하거나 미전송 건을 추출한다 (RECEIVE_AR / GET_ZFIT0060) +3. 전송받은 데이터 값을 검증한다 — 계정·거래처·금액·통화 등 (CHECK_DATA) +4. 거래유형별 전기 로직으로 분기한다 (PROCESS_B01 상품매출 / B03 모바일 / B53 이통예수금 / B55 이통대납금 / B59 판매장려금 / B63) +5. 전표 헤더와 아이템, 세금라인, 전표분할 라인을 구성한다 (MAKE_BKPF / MAKE_BSEG / MAKE_BSEG_TX / MAKE_BSEG_SP) +6. FB01 BDC 로 매출전표를 생성하고 결과를 CBO 테이블에 저장한다 (BDC_TRANSACTION_FB01 → POSTING_DOCUMENT) +7. 오류 건은 재전송 경로로 다시 보낸다 (SEND_AR) + +## 핵심 내부테이블 + +- `GT_ZFIT0060` — 매출·입금 인터페이스 수신 내역 (채움: GET_ZFIT0060, RECEIVE_AR / 소비: CHECK_DATA, PROCESS_B01) +- `GT_BKPF / GT_BSEG` — 생성할 전표 헤더·아이템 (채움: MAKE_BKPF, MAKE_BSEG / 소비: BDC_TRANSACTION_FB01) + +## 테이블 / 외부 호출 + +- read: CSKT, DD07T, J_1BBRANCH, KNB1, LTDX, SKAT, T007S, TCURC, USR01, V_USERNAME, ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, ZFIT0160 +- write: ZFIT0060 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (67건 / unit 45개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0030F01` L9-L58 (50줄) + +*검증에 쓰일 도메인 고정값(발생취소·거래유형·결제유형·결제시점)을 DD07T 에서 읽고 선수금계정을 ZFIT0080 에서 조회하는 FORM 이다.* + +> 이 unit 의 조각 2개가 42/50줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T 에서 로그온 언어 기준으로 도메인 ZDGUBUN(발생/취소)·ZDBTYPE2(거래유형)·ZDPTYPE(결제유형)·ZDPFLAG(결제시점)의 고정값과 텍스트를 GT_DOMAIN 에 모아 수신 데이터 값 검증에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDGUBUN' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ 'A'. + 21| + 22| * 거래유형(ZDBTYPE2) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDBTYPE2' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ 'A'. + 31| + 32| * 결제유형(ZDPTYPE) + 33| SELECT DOMNAME + 34| DOMVALUE_L + 35| DDTEXT + 36| APPENDING TABLE GT_DOMAIN + 37| FROM DD07T + 38| WHERE DD07T~DOMNAME EQ 'ZDPTYPE' + 39| AND DD07T~DDLANGUAGE EQ SY-LANGU + 40| AND DD07T~AS4LOCAL EQ 'A'. + 41| + 42| * 결제시점(ZDPFLAG) + 43| SELECT DOMNAME + 44| DOMVALUE_L + 45| DDTEXT + 46| APPENDING TABLE GT_DOMAIN + 47| FROM DD07T + 48| WHERE DD07T~DOMNAME EQ 'ZDPFLAG' + 49| AND DD07T~DDLANGUAGE EQ SY-LANGU + 50| AND DD07T~AS4LOCAL EQ 'A'. +``` + +- **EN**: Reads fixed values and texts of domains ZDGUBUN, ZDBTYPE2, ZDPTYPE and ZDPFLAG from DD07T into GT_DOMAIN for validating interface data. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, ZDGUBUN, ZDBTYPE2, ZDPTYPE, ZDPFLAG +- 업무 키워드: 도메인 고정값, 발생/취소 구분, 거래유형, 결제유형, 결제시점 +- English: Domain Fixed Values, Validation Lookup +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0030top-31-gt_domain) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L13-L50` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#GET_DOMAIN#C1` + +#### [sql_select] 결제유형 매핑 테이블 ZFIT0080 에서 결제유형 10(선수금대체)의 계정을 읽어 선수금계정 GV_HKONT 로 사용한다. + +```abap + 53| SELECT SINGLE HKONT + 54| INTO GV_HKONT + 55| FROM ZFIT0080 + 56| WHERE PTYPE EQ '10'. +``` + +- **EN**: Reads the advance-payment G/L account for payment type 10 from ZFIT0080 into GV_HKONT. +- 테이블(파서): read [ZFIT0080](/tables/ZFIT0080.md) / write - +- SAP 객체: ZFIT0080 +- 업무 키워드: 선수금계정, 결제유형 매핑 +- English: Down Payment Account, Account Mapping +- 정의부(복사 시 함께 필요): [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L53-L56` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#GET_DOMAIN#C2` + +### FORM GET_ZFIT0060 — `ZFIR0030F01` L411-L504 (94줄) + +*전송받은 매출·입금 내역을 건별로 돌며 거래유형에 따라 전표를 만들어 전기한다 — 이 프로그램의 주 처리 루프다.* + +> 이 unit 의 조각 2개가 87/94줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전송 플래그(PRCHK)가 설정된 미처리 매출·입금 건을 ZFIT0060 에서 읽고, 결제유형별 계정 매핑 테이블 ZFIT0080 을 회사코드·결제유형 기준으로 함께 읽어온다. + +```abap + 415| SELECT * + 416| INTO TABLE GT_Z0060 + 417| FROM ZFIT0060 + 418| WHERE PRCHK EQ C_X. "전송받은 건 + 419| + 420| CHECK GT_Z0060[] IS NOT INITIAL. + 421| + 422| * 결제유형별 계정 매핑내역 추출 + 423| SELECT * + 424| INTO TABLE GT_Z0080 + 425| FROM ZFIT0080 + 426| FOR ALL ENTRIES IN GT_Z0060 + 427| WHERE BUKRS EQ GT_Z0060-BUKRS + 428| AND PTYPE EQ GT_Z0060-PTYPE. +``` + +- **EN**: Reads unprocessed inbound sales/payment records from ZFIT0060 and the payment-type-to-account mapping from ZFIT0080. +- 테이블(파서): read [ZFIT0060](/tables/ZFIT0060.md), [ZFIT0080](/tables/ZFIT0080.md) / write - +- SAP 객체: ZFIT0060, ZFIT0080, PRCHK, PTYPE +- 업무 키워드: 매출내역, 입금내역, 미전송, 결제유형, 계정매핑, 인터페이스수신 +- English: sales record, incoming payment, unprocessed, payment type, account mapping +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`C_X`](#decl-zficom-231-c_x), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L415-L428` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#GET_ZFIT0060#C1` + +#### [control_flow] 오류가 없는 건마다 결제유형별 계정매핑을 읽고, 발생취소(GUBUN=R) 건은 금액 부호를 반전한 뒤, 거래유형 코드(B01 상품매출·B03 모바일판매·B53 이통예수금·B55 이통대납금 등)에 따라 전기 로직으로 분기해 전표 헤더를 만들고 전기 함수를 호출한다. + +```abap + 430| LOOP AT GT_Z0060. + 431| CLEAR GT_Z0060-PRCHK. + 432| MOVE-CORRESPONDING GT_Z0060 TO GT_RESULT. + 433| + 434| * 오류가 없는 경우 전표생성 + 435| IF GT_Z0060-STATS EQ SPACE. + 436| CLEAR: GV_XNEGP, GT_BBSEG[], GT_BBSEG. + 437| * 결제유형에 따른 계정매핑 값.. + 438| READ TABLE GT_Z0080 WITH KEY BUKRS = GT_Z0060-BUKRS + 439| PTYPE = GT_Z0060-PTYPE. + 440| + 441| * 발생취소구분 + 442| IF GT_Z0060-GUBUN EQ C_R. + 443| GV_XNEGP = C_X. + 444| * 마이너스 금액 변환 + 445| GT_Z0060-DMBTR_C = 0 - GT_Z0060-DMBTR_C. + 446| GT_Z0060-HWBAS_C = 0 - GT_Z0060-HWBAS_C. + 447| GT_Z0060-MWSTS_C = 0 - GT_Z0060-MWSTS_C. + 448| ENDIF. + 449| + 450| * 거래유형에 따라 POSTING + 451| CASE GT_Z0060-BTYPE. + 452| WHEN 'B01'. "상품매출 + 453| PERFORM PROCESS_B01. + 454| WHEN 'B03'. "모바일판매_모바일상품 + 455| PERFORM PROCESS_B03. + 456| WHEN 'B05'. "모바일판매_모바일할부 + 457| PERFORM PROCESS_B03. + 458| WHEN 'B07'. "모바일판매_USIM할부 + 459| PERFORM PROCESS_B03. + 460| WHEN 'B09'. "모바일판매_모바일악세서리 + 461| PERFORM PROCESS_B03. + 462| WHEN 'B11'. "모바일판매_통신사고객장려금(미수금) + 463| PERFORM PROCESS_B03. + 464| WHEN 'B13'. "PC판매-PC할부 + 465| PERFORM PROCESS_B03. + 466| WHEN 'B15'. "PC판매-미수금-PC + 467| PERFORM PROCESS_B03. + 468| WHEN 'B31'. "서비스매출-SVC대행수수료용역 + 469| PERFORM PROCESS_B01. + 470| WHEN 'B33'. "서비스매출-물류대행용역(공동물류) + 471| PERFORM PROCESS_B03. + 472| WHEN 'B35'. "서비스매출-SVC유료수익금 + 473| PERFORM PROCESS_B03. + 474| WHEN 'B37'. "서비스매출-물류이전설치 + 475| PERFORM PROCESS_B03. + 476| WHEN 'B51'. "임대을 + 477| PERFORM PROCESS_B01. + 478| WHEN 'B53'. "이통예수금 + 479| PERFORM PROCESS_B53. + 480| WHEN 'B55'. "이통대납금-가입비 + 481| PERFORM PROCESS_B55. + 482| WHEN 'B57'. "이통대납금-위약금 + 483| PERFORM PROCESS_B55. + 484| * WHEN 'B59'. "장려금-판매장려금(구매정산) + 485| * PERFORM PROCESS_B59. + 486| * WHEN 'B61'. "장려금-매입장려금(구매정산) + 487| * PERFORM PROCESS_B59. + 488| * WHEN 'B63'. "장려금-설치수수료(구매정산) + 489| * PERFORM PROCESS_B63. + 490| WHEN OTHERS. + 491| ENDCASE. + 492| + 493| * 전표헤더내역 + 494| PERFORM MAKE_BKPF USING GV_BUDAT. + 495| * 전표생성 Function Call + 496| PERFORM BDC_TRANSACTION_FB01. + 497| + 498| ENDIF. + 499| + 500| MODIFY GT_Z0060. + 501| APPEND GT_RESULT. CLEAR GT_RESULT. + 502| ENDLOOP. +``` + +- **EN**: Per record: resolves the mapped account, flips amount signs for reversals, branches by transaction type (B01 goods sales, B03 mobile, B53/B55 telecom deposits) and posts the document. +- 호출(파서): PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B53, PROCESS_B55, PROCESS_B55, MAKE_BKPF, BDC_TRANSACTION_FB01 +- SAP 객체: ZFIT0060, ZFIT0080, BTYPE, GUBUN, XNEGP +- 업무 키워드: 거래유형, 상품매출, 모바일판매, 이통예수금, 이통대납금, 발생취소, 마이너스전기, 전기분기, 자동기표 +- English: transaction type, goods sales, mobile sales, telecom deposit, reversal, negative posting, posting branch +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GT_RESULT`](#decl-zfir0030top-21-gt_result), [`GV_XNEGP`](#decl-zfir0030top-40-gv_xnegp), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L430-L502` · confidence 0.86 · `ZFIR0030#ZFIR0030F01#FORM#GET_ZFIT0060#C2` + +### FORM PROCESS_B01 — `ZFIR0030F01` L818-L1162 (345줄) + +*상품매출(B01) 전표 아이템 생성 FORM 의 선언부(창 1/3)로 전기키 변수 선언만 있다.* + +> 이 unit 의 조각 8개가 333/345줄(96%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 01(카드) 건에 대해 선수금(PFLAG 1)은 카드고객 04/14 + 선수금계정 50/40, 수금(PFLAG 2)은 카드고객 04/14 + 지점고객 15/05 전기키로 MAKE_BSEG 라인을 만들고 수금 시 MAKE_BSEG_SP 로 전표분할 라인을 추가한다. + +```abap + 823| WHEN '01'. "카드 + 824| CASE GT_Z0060-PFLAG. + 825| WHEN '1'. "선수금 + 826| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 827| * 발생취소구분에따라.. + 828| IF GT_Z0060-GUBUN EQ C_N. + 829| LV_NEWBS = '04'. + 830| LV_NEWBS2 = '50'. + 831| ELSE. + 832| LV_NEWBS = '14'. + 833| LV_NEWBS2 = '40'. + 834| ENDIF. + 835| * 전표 아이템_1 + 836| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 837| GT_Z0060-KUNNR "고객 + 838| GT_Z0060-DMBTR "금액 + 839| GV_BUDAT "지정-결제일자 + 840| GT_Z0080-HKONT. "결제유형계정 + 841| * 전표 아이템_2 + 842| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 843| GV_HKONT "선수금계정 + 844| GT_Z0060-DMBTR "금액 + 845| GV_BUDAT "결제일자 + 846| SPACE. "G/L계정 + 847| WHEN '2'. "수금 + 848| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 849| * 발생취소구분에따라.. + 850| IF GT_Z0060-GUBUN EQ C_N. + 851| LV_NEWBS = '04'. + 852| LV_NEWBS2 = '15'. + 853| ELSE. + 854| LV_NEWBS = '14'. + 855| LV_NEWBS2 = '05'. + 856| ENDIF. + 857| * 전표 아이템_1 + 858| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 859| GT_Z0060-KUNNR "고객 + 860| GT_Z0060-DMBTR "금액 + 861| GV_BUDAT "지정-결제일자 + 862| GT_Z0080-HKONT. "결제유형계정 + 863| * 전표 아이템_2 + 864| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 865| GT_Z0060-KUNNR2 "지점고객 + 866| GT_Z0060-DMBTR "금액 + 867| GT_Z0060-RCDAT "지정-접수일자 + 868| GT_Z0060-HKONT. "채권채무계정 + 869| + 870| * 전표분할계정 + 871| PERFORM MAKE_BSEG_SP. + 872| ENDCASE. +``` + +- **EN**: For card payments builds the card-customer line (key 04/14) plus either the advance-payment G/L line or the branch-customer clearing line, adding document-split lines via MAKE_BSEG_SP on collection. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG_SP +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 카드 결제, 선수금, 수금, 전기키, 전표분할 +- English: Card Payment, Down Payment, Incoming Payment, Document Splitting +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L823-L872` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C1` + +#### [calculation] 결제유형 02(현금) 건에 대해 결제시점(PFLAG 1 선수금/2 수금)과 발생·취소 구분에 따라 전기키를 정하고 결제유형계정(ZFIT0080 HKONT)·선수금계정·지점고객 채권 라인을 MAKE_BSEG 로 생성한다. + +```abap + 873| WHEN '02'. "현금 + 874| CASE GT_Z0060-PFLAG. + 875| WHEN '1'. + 876| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 877| * 발생취소구분에따라.. + 878| IF GT_Z0060-GUBUN EQ C_N. + 879| LV_NEWBS = '40'. + 880| LV_NEWBS2 = '50'. + 881| ELSE. + 882| LV_NEWBS = '50'. + 883| LV_NEWBS2 = '40'. + 884| ENDIF. + 885| * 전표 아이템_1 + 886| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 887| GT_Z0080-HKONT "결제유형계정 + 888| GT_Z0060-DMBTR "금액 + 889| GV_BUDAT "지정-결제일자 + 890| SPACE. "GL계정 + 891| + 892| * 전표 아이템_2 + 893| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 894| GV_HKONT "선수금계정 + 895| GT_Z0060-DMBTR "금액 + 896| GV_BUDAT "결제일자 + 897| SPACE. "G/L계정 + 898| WHEN '2'. + 899| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 900| * 발생취소구분에따라.. + 901| IF GT_Z0060-GUBUN EQ C_N. + 902| LV_NEWBS = '40'. + 903| LV_NEWBS2 = '15'. + 904| ELSE. + 905| LV_NEWBS = '50'. + 906| LV_NEWBS2 = '05'. + 907| ENDIF. + 908| * 전표 아이템_1 + 909| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 910| GT_Z0080-HKONT "결제유형계정 + 911| GT_Z0060-DMBTR "금액 + 912| GV_BUDAT "지정-결제일자 + 913| SPACE. "GL계정 + 914| * 전표 아이템_2 + 915| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 916| GT_Z0060-KUNNR2 "지점고객 + 917| GT_Z0060-DMBTR "금액 + 918| GT_Z0060-RCDAT "지정-접수일자 + 919| GT_Z0060-HKONT. "채권채무계정 + 920| ENDCASE. +``` + +- **EN**: For payment type 02 (Cash) chooses posting keys by payment timing (advance vs. collection) and reversal flag, and builds the payment-type account, advance-payment and branch-customer receivable lines via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 현금, 전기키, 선수금, 수금, 발생/취소 +- English: Posting Key, Down Payment, Incoming Payment, Cash +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L873-L920` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C2` + +#### [calculation] 결제유형 03(가상계좌) 건에 대해 결제시점(PFLAG 1 선수금/2 수금)과 발생·취소 구분에 따라 전기키를 정하고 결제유형계정(ZFIT0080 HKONT)·선수금계정·지점고객 채권 라인을 MAKE_BSEG 로 생성한다. + +```abap + 921| WHEN '03'. "가상계좌 + 922| CASE GT_Z0060-PFLAG. + 923| WHEN '1'. + 924| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 925| * 발생취소구분에따라.. + 926| IF GT_Z0060-GUBUN EQ C_N. + 927| LV_NEWBS = '40'. + 928| LV_NEWBS2 = '50'. + 929| ELSE. + 930| LV_NEWBS = '50'. + 931| LV_NEWBS2 = '40'. + 932| ENDIF. + 933| * 전표 아이템_1 + 934| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 935| GT_Z0080-HKONT "결제유형계정 + 936| GT_Z0060-DMBTR "금액 + 937| GV_BUDAT "지정-결제일자 + 938| SPACE. "GL계정 + 939| * 전표 아이템_2 + 940| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 941| GV_HKONT "선수금계정 + 942| GT_Z0060-DMBTR "금액 + 943| GV_BUDAT "결제일자 + 944| SPACE. "GL계정 + 945| WHEN '2'. + 946| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 947| * 발생취소구분에따라.. + 948| IF GT_Z0060-GUBUN EQ C_N. + 949| LV_NEWBS = '40'. + 950| LV_NEWBS2 = '15'. + 951| ELSE. + 952| LV_NEWBS = '50'. + 953| LV_NEWBS2 = '05'. + 954| ENDIF. + 955| * 전표 아이템_1 + 956| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 957| GT_Z0080-HKONT "결제유형계정 + 958| GT_Z0060-DMBTR "금액 + 959| GV_BUDAT "지정-결제일자 + 960| SPACE. "GL계정 + 961| * 전표 아이템_2 + 962| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 963| GT_Z0060-KUNNR2 "지점고객 + 964| GT_Z0060-DMBTR "금액 + 965| GT_Z0060-RCDAT "지정-접수일자 + 966| GT_Z0060-HKONT. "채권채무계정 + 967| ENDCASE. +``` + +- **EN**: For payment type 03 (Virtual Account) chooses posting keys by payment timing (advance vs. collection) and reversal flag, and builds the payment-type account, advance-payment and branch-customer receivable lines via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 가상계좌, 전기키, 선수금, 수금, 발생/취소 +- English: Posting Key, Down Payment, Incoming Payment, Virtual Account +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L921-L967` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C3` + +#### [calculation] 결제유형 04(본지점수금) 건에 대해 결제시점(PFLAG 1 선수금/2 수금)과 발생·취소 구분에 따라 전기키를 정하고 결제유형계정(ZFIT0080 HKONT)·선수금계정·지점고객 채권 라인을 MAKE_BSEG 로 생성한다. + +```abap + 968| WHEN '04'. "본지점수금 + 969| CASE GT_Z0060-PFLAG. + 970| WHEN '1'. + 971| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 972| * 발생취소구분에따라.. + 973| IF GT_Z0060-GUBUN EQ C_N. + 974| LV_NEWBS = '40'. + 975| LV_NEWBS2 = '50'. + 976| ELSE. + 977| LV_NEWBS = '50'. + 978| LV_NEWBS2 = '40'. + 979| ENDIF. + 980| * 전표 아이템_1 + 981| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 982| GT_Z0080-HKONT "결제유형금계정 + 983| GT_Z0060-DMBTR "금액 + 984| GV_BUDAT "지정-결제일자 + 985| SPACE. "GL계정 + 986| * 전표 아이템_2 + 987| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 988| GV_HKONT "선수금계정 + 989| GT_Z0060-DMBTR "금액 + 990| GV_BUDAT "결제일자 + 991| SPACE. "G/L계정 + 992| WHEN '2'. + 993| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 994| * 발생취소구분에따라.. + 995| IF GT_Z0060-GUBUN EQ C_N. + 996| LV_NEWBS = '40'. + 997| LV_NEWBS2 = '15'. + 998| ELSE. + 999| LV_NEWBS = '50'. + 1000| LV_NEWBS2 = '05'. + 1001| ENDIF. + 1002| * 전표 아이템_1 + 1003| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1004| GT_Z0080-HKONT "결제유형계정 + 1005| GT_Z0060-DMBTR "금액 + 1006| GV_BUDAT "지정-결제일자 + 1007| SPACE. "GL계정 + 1008| * 전표 아이템_2 + 1009| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1010| GT_Z0060-KUNNR2 "지점고객 + 1011| GT_Z0060-DMBTR "금액 + 1012| GT_Z0060-RCDAT "지정-접수일자 + 1013| GT_Z0060-HKONT. "채권채무계정 + 1014| ENDCASE. +``` + +- **EN**: For payment type 04 (Head Office/Branch Collection) chooses posting keys by payment timing (advance vs. collection) and reversal flag, and builds the payment-type account, advance-payment and branch-customer receivable lines via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 본지점수금, 전기키, 선수금, 수금, 발생/취소 +- English: Posting Key, Down Payment, Incoming Payment, Head Office/Branch Collection +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L968-L1014` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C4` + +#### [calculation] 결제유형 06/08(하이마트적립금·상품권) 건에 대해 결제시점(PFLAG 1 선수금/2 수금)과 발생·취소 구분에 따라 전기키를 정하고 결제유형계정(ZFIT0080 HKONT)·선수금계정·지점고객 채권 라인을 MAKE_BSEG 로 생성한다. + +```abap + 1016| WHEN '06' OR '08'. "하이마트적립금/하이마트상품권 + 1017| CASE GT_Z0060-PFLAG. + 1018| WHEN '1'. + 1019| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1020| * 발생취소구분에따라.. + 1021| IF GT_Z0060-GUBUN EQ C_N. + 1022| LV_NEWBS = '40'. + 1023| LV_NEWBS2 = '50'. + 1024| ELSE. + 1025| LV_NEWBS = '50'. + 1026| LV_NEWBS2 = '40'. + 1027| ENDIF. + 1028| * 전표 아이템_1 + 1029| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1030| GT_Z0080-HKONT "결제유형계정 + 1031| GT_Z0060-DMBTR "금액 + 1032| GV_BUDAT "지정-결제일자 + 1033| SPACE. "GL계정 + 1034| * 전표 아이템_2 + 1035| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1036| GV_HKONT "선수금계정 + 1037| GT_Z0060-DMBTR "금액 + 1038| GV_BUDAT "결제일자 + 1039| SPACE. "G/L계정 + 1040| WHEN '2'. + 1041| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1042| * 발생취소구분에따라.. + 1043| IF GT_Z0060-GUBUN EQ C_N. + 1044| LV_NEWBS = '40'. + 1045| LV_NEWBS2 = '15'. + 1046| ELSE. + 1047| LV_NEWBS = '50'. + 1048| LV_NEWBS2 = '05'. + 1049| ENDIF. + 1050| + 1051| * 전표 아이템_1 + 1052| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1053| GT_Z0080-HKONT "결제유형계정 + 1054| GT_Z0060-DMBTR "금액 + 1055| GV_BUDAT "지정-결제일자 + 1056| SPACE. "GL계정 + 1057| * 전표 아이템_2 + 1058| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1059| GT_Z0060-KUNNR2 "지점고객 + 1060| GT_Z0060-DMBTR "금액 + 1061| GT_Z0060-RCDAT "지정-접수일자 + 1062| GT_Z0060-HKONT. "채권채무계정 + 1063| ENDCASE. +``` + +- **EN**: For payment type 06/08 (Store Points/Gift Certificate) chooses posting keys by payment timing (advance vs. collection) and reversal flag, and builds the payment-type account, advance-payment and branch-customer receivable lines via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 하이마트적립금·상품권, 전기키, 선수금, 수금, 발생/취소 +- English: Posting Key, Down Payment, Incoming Payment, Store Points/Gift Certificate +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1016-L1063` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C5` + +#### [calculation] 결제유형 07/09(롯데멤버스포인트·타사상품권) 건에 대해 결제시점과 발생취소에 따라 카드고객 04/14 전기키와 선수금계정 또는 지점고객 15/05 라인을 MAKE_BSEG 로 만들고 수금 시 MAKE_BSEG_SP 로 전표분할 라인을 추가한다. + +```abap + 1064| WHEN '07' OR '09'. "롯데맴버스포인트 / 타사상품권 + 1065| CASE GT_Z0060-PFLAG. + 1066| WHEN '1'. + 1067| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1068| * 발생취소구분에따라.. + 1069| IF GT_Z0060-GUBUN EQ C_N. + 1070| LV_NEWBS = '04'. + 1071| LV_NEWBS2 = '50'. + 1072| ELSE. + 1073| LV_NEWBS = '14'. + 1074| LV_NEWBS2 = '40'. + 1075| ENDIF. + 1076| * 전표 아이템_1 + 1077| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1078| GT_Z0060-KUNNR "카드고객 + 1079| GT_Z0060-DMBTR "금액 + 1080| GV_BUDAT "지정 + 1081| GT_Z0080-HKONT. "결제유형계정 + 1082| * 전표 아이템_2 + 1083| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1084| GV_HKONT "선수금계정 + 1085| GT_Z0060-DMBTR "금액 + 1086| GV_BUDAT "결제일자 + 1087| SPACE. "G/L계정 + 1088| WHEN '2'. + 1089| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1090| * 발생취소구분에따라.. + 1091| IF GT_Z0060-GUBUN EQ C_N. + 1092| LV_NEWBS = '04'. + 1093| LV_NEWBS2 = '15'. + 1094| ELSE. + 1095| LV_NEWBS = '14'. + 1096| LV_NEWBS2 = '05'. + 1097| ENDIF. + 1098| * 전표 아이템_1 + 1099| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1100| GT_Z0060-KUNNR "지점고객 + 1101| GT_Z0060-DMBTR "금액 + 1102| GV_BUDAT "지정 + 1103| GT_Z0080-HKONT. "결제유형계정 + 1104| * 전표 아이템_2 + 1105| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1106| GT_Z0060-KUNNR2 "지점고객 + 1107| GT_Z0060-DMBTR "금액 + 1108| GT_Z0060-RCDAT "지정-접수일자 + 1109| GT_Z0060-HKONT. "채권채무계정 + 1110| * 전표분할계정 + 1111| PERFORM MAKE_BSEG_SP. + 1112| + 1113| ENDCASE. +``` + +- **EN**: For membership points and third-party gift certificates builds the customer line (key 04/14) with advance-payment or branch-customer lines and adds document-split lines on collection. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG_SP +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 상품매출, 포인트 결제, 타사상품권, 전기키, 전표분할 +- English: Points Payment, Gift Certificate, Document Splitting +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`GV_HKONT`](#decl-zfir0030top-39-gv_hkont) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1064-L1113` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C6` + +#### [calculation] 결제유형 10(선수금대체) 수금 건에 대해 매출일자를 전기일로 하고 발생이면 40/17, 취소면 50/07 전기키로 결제유형계정 라인과 지점고객 채권 라인을 MAKE_BSEG 로 생성한다. + +```abap + 1116| WHEN '10'. "선수금대체 + 1117| CASE GT_Z0060-PFLAG. + 1118| WHEN '1'. + 1119| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1120| WHEN '2'. + 1121| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1122| * 발생취소구분에따라.. + 1123| IF GT_Z0060-GUBUN EQ C_N. + 1124| LV_NEWBS = '40'. + 1125| LV_NEWBS2 = '17'. + 1126| ELSE. + 1127| LV_NEWBS = '50'. + 1128| LV_NEWBS2 = '07'. + 1129| ENDIF. + 1130| * 전표 아이템_1 + 1131| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1132| GT_Z0080-HKONT "결제유형계정 + 1133| GT_Z0060-DMBTR "금액 + 1134| GT_Z0060-PYDAT "지정-결제일자 + 1135| SPACE. "GL계정 + 1136| * 전표 아이템_2 + 1137| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1138| GT_Z0060-KUNNR2 "지점고객 + 1139| GT_Z0060-DMBTR "금액 + 1140| GT_Z0060-RCDAT "지정-접수일자 + 1141| GT_Z0060-HKONT. "채권채무계정 + 1142| ENDCASE. +``` + +- **EN**: For down-payment transfer builds the payment-type account line and the branch-customer line with posting keys 40/17 (or 50/07 on reversal) as of the sales date. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 선수금 대체, 전기키, 지점고객, 매출일자 +- English: Down Payment Transfer, Posting Key +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-820-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1116-L1142` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C7` + +#### [calculation] 결제유형 90(매출) 건에 대해 발생 01/취소 11 전기키로 지점고객 채권 라인을 접수일자 기준으로 만들고 MAKE_BSEG_TX 로 수익·부가세 라인을 추가한다. + +```abap + 1143| WHEN '90'. "매출 + 1144| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1145| * 발생취소구분에따라.. + 1146| IF GT_Z0060-GUBUN EQ C_N. + 1147| LV_NEWBS = '01'. + 1148| ELSE. + 1149| LV_NEWBS = '11'. + 1150| ENDIF. + 1151| * 전표 아이템_1 + 1152| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1153| GT_Z0060-KUNNR2 "지점고객 + 1154| GT_Z0060-DMBTR "금액 + 1155| GT_Z0060-RCDAT "지정-접수일자 + 1156| GT_Z0060-HKONT. "채권채무계정 + 1157| * 전표 아이템_2&3 + 1158| PERFORM MAKE_BSEG_TX. +``` + +- **EN**: For the sales posting builds the branch-customer receivable line (key 01/11) and adds revenue and VAT lines via MAKE_BSEG_TX. +- 호출(파서): MAKE_BSEG, MAKE_BSEG_TX +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 상품매출, 채권, 부가세, 전기키 +- English: Sales Posting, Customer Receivable, VAT +- 정의부(복사 시 함께 필요): [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-819-lv_newbs) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1143-L1158` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B01#C8` + +### FORM MAKE_BSEG — `ZFIR0030F01` L626-L667 (42줄) + +*FB01 전기용 전표 아이템(BBSEG) 한 줄을 전기키·계정·금액과 업무 규칙에 따라 구성한다.* + +> 이 unit 의 조각 1개가 29/42줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 전기키·계정·채권채무계정·금액·적요를 세팅하고, 이통예수금(B53)은 지정 필드에 통신사 고객코드를, 그 외는 전기일을 넣는다. 판촉비 계정(0053397913/0053397915)이면 코스트센터를, 전기키 40/50 이면 손익센터를 채우고, 발생취소 건은 마이너스 전기 지시자를 세운다. + +```abap + 637| LV_NEWKO = P_NEWKO. + 638| IF GT_Z0060-BTYPE EQ 'B53'. "지정 - 통신사 값.. + 639| LV_ZUONR = GT_Z0060-KUNNR3. + 640| ELSE. + 641| LV_ZUONR = P_BUDAT. + 642| ENDIF. + 643| GT_BBSEG-NEWBS = P_NEWBS. "전기키 + 644| GT_BBSEG-NEWKO = LV_NEWKO. "계정 + 645| GT_BBSEG-HKONT = P_HKONT. + 646| GT_BBSEG-WRBTR = P_WRBTR. "금액 + 647| GT_BBSEG-ZUONR = LV_ZUONR. "지정 + 648| GT_BBSEG-SGTXT = GT_Z0060-SGTXT. "적요 + 649| * GT_BBSEG-GSBER = GT_Z0060-GSBER. "사업영역 + 650| + 651| IF GT_Z0060-HKONT EQ '0053397913' OR + 652| GT_Z0060-HKONT EQ '0053397915'. "판촉비계정 + 653| GT_BBSEG-KOSTL = GT_Z0060-KOSTL. "코스트센터 + 654| ENDIF. + 655| + 656| IF P_NEWBS EQ '40' OR P_NEWBS EQ '50'. + 657| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. + 658| ENDIF. + 659| + 660| * 발생취소구분에따라.. + 661| IF GT_Z0060-GUBUN EQ C_R. + 662| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 663| ENDIF. + 664| + 665| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds one BBSEG line: posting key, account, amount, assignment (telecom customer code for B53 else posting date), cost center for promotion-expense accounts, profit center for keys 40/50, and the negative-posting flag on reversals. +- SAP 객체: BBSEG, BSEG, NEWBS, NEWKO, HKONT, ZUONR, KOSTL, PRCTR, XNEGP +- 업무 키워드: 전표아이템, 전기키, 계정, 지정, 적요, 코스트센터, 손익센터, 판촉비, 마이너스전기, 발생취소 +- English: document line item, posting key, account, assignment, cost center, profit center, promotion expense, negative posting +- 정의부(복사 시 함께 필요): [`LV_NEWKO`](#decl-zfir0030f01-632-lv_newko), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`LV_ZUONR`](#decl-zfir0030f01-633-lv_zuonr), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L637-L665` · confidence 0.88 · `ZFIR0030#ZFIR0030F01#FORM#MAKE_BSEG#C1` + +### FORM MAKE_BSEG_SP — `ZFIR0030F01` L722-L738 (17줄) + +*전표분할 계정으로 차변·대변 한 쌍을 만들어 손익센터 단위 분개를 맞춘다.* + +> 이 unit 의 조각 1개가 11/17줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 전표분할 전용 계정으로 전기키 50(대변)과 40(차변) 두 줄을 같은 총금액·손익센터로 생성해, 손익센터가 다른 라인 간 분개 균형을 맞추는 상계 쌍을 만든다. + +```abap + 726| GT_BBSEG-NEWBS = '50'. "전기키 + 727| GT_BBSEG-NEWKO = C_HKONT. "전표분할계정 + 728| GT_BBSEG-WRBTR = GT_Z0060-DMBTR. "총금액 + 729| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 730| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 731| + 732| GT_BBSEG-NEWBS = '40'. "전기키 + 733| GT_BBSEG-NEWKO = C_HKONT. "전표분할계정 + 734| GT_BBSEG-WRBTR = GT_Z0060-DMBTR. "총금액 + 735| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 736| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Creates an offsetting debit/credit pair (posting keys 40/50) on the document-splitting account with the same amount and profit center. +- SAP 객체: BBSEG, PRCTR, NEWBS, NEWKO +- 업무 키워드: 전표분할, 분할계정, 손익센터, 차변, 대변, 상계, 분개균형 +- English: document splitting, splitting account, profit center, debit, credit, offsetting entry +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_HKONT`](#decl-zfir0030top-46-c_hkont), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L726-L736` · confidence 0.82 · `ZFIR0030#ZFIR0030F01#FORM#MAKE_BSEG_SP#C1` + +### FORM MAKE_BSEG_TX — `ZFIR0030F01` L673-L716 (44줄) + +*매출 전표의 수익 라인(총금액-부가세)과 부가세 라인(세금코드·공급가액)을 GT_BBSEG 에 생성하고 취소 건은 마이너스 전기(XNEGP)와 전기키 40 으로 처리하는 FORM 이다.* + +> 이 unit 의 조각 2개가 38/44줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수익계정(HKONT2)에 전기키 50 으로 총금액에서 부가세를 뺀 순매출액을 사업장·손익센터·매출일자(지정)·적요와 함께 세팅하고 취소(C_R)면 XNEGP 마이너스 전기·전기키 40 으로 바꿔 GT_BBSEG 에 추가한다. + +```abap + 675| CLEAR GT_BBSEG. + 676| + 677| GT_BBSEG-NEWBS = '50'. "전기키 + 678| GT_BBSEG-NEWKO = GT_Z0060-HKONT2. "수익비용계정 + 679| GT_BBSEG-WRBTR = GT_Z0060-DMBTR - GT_Z0060-MWSTS. " 총금액 - 부가세액 + 680| * GT_BBSEG-MWSKZ = C_MWSKZ. "세금코드 + 681| GT_BBSEG-BUPLA = GT_Z0060-BUPLA. "사업장 + 682| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 683| * GT_BBSEG-KOSTL = GT_Z0060-KOSTL. "코스트센터 + 684| GT_BBSEG-ZUONR = GT_Z0060-SADAT. "매출일자 + 685| GT_BBSEG-SGTXT = GT_Z0060-SGTXT. "적요 + 686| *** 매출계정인 경우(004*) 오더입력 + 687| ** IF GT_Z0060-HKONT2(3) EQ '004'. + 688| ** GT_BBSEG-AUFNR = GT_Z0060-AUFNR. + 689| ** ENDIF. + 690| * 발생취소구분에따라.. + 691| IF GT_Z0060-GUBUN EQ C_R. + 692| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 693| GT_BBSEG-NEWBS = '40'. "전기키 + 694| ENDIF. + 695| + 696| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds the revenue line (amount net of VAT) on the revenue G/L account with business place, profit center and assignment, switching to negative posting with key 40 for reversals. +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 수익 라인, 순매출액, 손익센터, 사업장, 마이너스 전기 +- English: Revenue Line, Net Amount, Negative Posting, Profit Center +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L675-L696` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#MAKE_BSEG_TX#C1` + +#### [calculation] 부가세계정(C_HKONT_TX)에 전기키 50 으로 세액(MWSTS)·공급가액(FWBAS)·세금코드(C_MWSKZ)·사업장·손익센터를 세팅해 부가세 라인을 만들고 취소 건은 마이너스 전기·전기키 40 으로 GT_BBSEG 에 추가한다. + +```abap + 699| GT_BBSEG-NEWBS = '50'. "전기키 + 700| GT_BBSEG-NEWKO = C_HKONT_TX. "부가세계정 + 701| GT_BBSEG-WRBTR = GT_Z0060-MWSTS. "부가세액 + 702| GT_BBSEG-FWBAS = GT_Z0060-HWBAS. "공급금액 + 703| GT_BBSEG-MWSKZ = C_MWSKZ. "세금코드 + 704| GT_BBSEG-BUPLA = GT_Z0060-BUPLA. "사업장 + 705| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 706| GT_BBSEG-ZUONR = GT_Z0060-SADAT. "매출일자 + 707| GT_BBSEG-SGTXT = GT_Z0060-SGTXT. "적요 + 708| * 발생취소구분에따라.. + 709| IF GT_Z0060-GUBUN EQ C_R. + 710| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 711| GT_BBSEG-NEWBS = '40'. "전기키 + 712| ENDIF. + 713| + 714| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds the output VAT line on the tax G/L account with tax amount, tax base and tax code, using negative posting with key 40 for reversals. +- SAP 객체: BBSEG, C_HKONT_TX +- 업무 키워드: 부가세 라인, 세금코드, 공급가액, 세액 +- English: VAT Line, Tax Code, Tax Base Amount +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_HKONT_TX`](#decl-zfir0030top-45-c_hkont_tx), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`C_MWSKZ`](#decl-zfir0030top-47-c_mwskz), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L699-L714` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#MAKE_BSEG_TX#C2` + +### FORM PROCESS_B03 — `ZFIR0030F01` L1168-L1191 (24줄) + +*모바일판매·PC판매·서비스매출(B03 계열) 매출 건에 대해 지점고객 채권 라인을 만들고 MAKE_BSEG_TX 로 수익·부가세 라인을 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 90(매출)일 때 발생이면 전기키 01, 취소면 11 로 지점고객(KUNNR2) 채권계정 라인을 접수일자 기준으로 MAKE_BSEG 로 만들고 MAKE_BSEG_TX 로 수익 라인과 부가세 라인을 추가한다. + +```abap + 1172| CASE GT_Z0060-PTYPE. + 1173| WHEN '90'. "매출 + 1174| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1175| * 발생취소구분에따라.. + 1176| IF GT_Z0060-GUBUN EQ C_N. + 1177| LV_NEWBS = '01'. + 1178| ELSE. + 1179| LV_NEWBS = '11'. + 1180| ENDIF. + 1181| * 전표 아이템_1 + 1182| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1183| GT_Z0060-KUNNR2 "지점고객 + 1184| GT_Z0060-DMBTR "금액 + 1185| GT_Z0060-RCDAT "지정-접수일자 + 1186| GT_Z0060-HKONT. "채권채무계정 + 1187| * 전표 아이템_2&3 + 1188| PERFORM MAKE_BSEG_TX. + 1189| ENDCASE. +``` + +- **EN**: For sales (PTYPE 90) posts the branch-customer receivable line with key 01/11 via MAKE_BSEG and adds revenue and VAT lines via MAKE_BSEG_TX. +- 호출(파서): MAKE_BSEG, MAKE_BSEG_TX +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 모바일판매, 지점고객, 전기키, 채권, 부가세 +- English: Posting Key, Customer Receivable, VAT Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-1169-lv_newbs) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1172-L1189` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B03#C1` + +### FORM PROCESS_B53 — `ZFIR0030F01` L1197-L1231 (35줄) + +*이통예수금(B53) 현금 수금 건에 대해 발생/취소 구분에 따라 전기키를 정해 결제유형계정 라인과 예수금(수익비용)계정 라인을 MAKE_BSEG 로 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 29/35줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 02(현금)·결제시점 2(수금)일 때 결제일자를 전기일로 하고 발생이면 40/50, 취소면 50/40 전기키로 결제유형계정(ZFIT0080 HKONT)과 예수금계정(HKONT2) G/L 라인을 MAKE_BSEG 로 만든다. + +```abap + 1201| CASE GT_Z0060-PTYPE. + 1202| WHEN '02'. "현금 + 1203| CASE GT_Z0060-PFLAG. + 1204| WHEN '1'. + 1205| WHEN '2'. + 1206| GV_BUDAT = GT_Z0060-PYDAT. "결제일자 + 1207| * 발생취소구분에따라.. + 1208| IF GT_Z0060-GUBUN EQ C_N. + 1209| LV_NEWBS = '40'. + 1210| LV_NEWBS2 = '50'. + 1211| ELSE. + 1212| LV_NEWBS = '50'. + 1213| LV_NEWBS2 = '40'. + 1214| ENDIF. + 1215| * 전표 아이템_1 + 1216| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1217| GT_Z0080-HKONT "결제유형계정 + 1218| GT_Z0060-DMBTR "금액 + 1219| GV_BUDAT "지정-결제일자 + 1220| SPACE. "GL계정 + 1221| * 전표 아이템_2 + 1222| PERFORM MAKE_BSEG USING LV_NEWBS2 + 1223| GT_Z0060-HKONT2 "수익비용계정 + 1224| GT_Z0060-DMBTR "금액 + 1225| GV_BUDAT "지정-통신사 + 1226| SPACE. "GL계정 + 1227| ENDCASE. + 1228| WHEN OTHERS. + 1229| ENDCASE. +``` + +- **EN**: For cash collection of telecom deposits builds the payment-type G/L line and the deposit account line with posting keys 40/50 (reversed on cancellation) via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060, GT_Z0080 +- 업무 키워드: 이통예수금, 현금 수금, 전기키, 예수금계정 +- English: Deposit Received, Cash Receipt, Posting Key, G/L Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-1198-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-1199-lv_newbs2), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1201-L1229` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B53#C1` + +### FORM PROCESS_B55 — `ZFIR0030F01` L1237-L1267 (31줄) + +*이통대납금(가입비·위약금, B55/B57) 매출 건에 대해 발생/취소 구분에 따라 공급업체 전기키(31/21)와 비용 전기키(40/50)를 정해 두 개의 전표 아이템을 MAKE_BSEG 로 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 25/31줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 90(매출)일 때 발생이면 전기키 31/40, 취소면 21/50 으로 이통사 거래처 채무계정(HKONT) 라인과 비용계정(HKONT2) 라인을 매출일자 기준으로 MAKE_BSEG 로 만든다. + +```abap + 1241| CASE GT_Z0060-PTYPE. + 1242| WHEN '90'. "매출 + 1243| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1244| * 발생취소구분에따라.. + 1245| IF GT_Z0060-GUBUN EQ C_N. + 1246| LV_NEWBS = '31'. + 1247| LV_NEWBS2 = '40'. + 1248| ELSE. + 1249| LV_NEWBS = '21'. + 1250| LV_NEWBS2 = '50'. + 1251| ENDIF. + 1252| * 전표 아이템_1 + 1253| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1254| GT_Z0060-KUNNR "거래처 + 1255| GT_Z0060-DMBTR "금액 + 1256| GV_BUDAT "지정-매출일자 + 1257| GT_Z0060-HKONT. "채권채무계정 + 1258| * 전표 아이템_2 + 1259| PERFORM MAKE_BSEG USING LV_NEWBS2 + 1260| GT_Z0060-HKONT2 "수익비용계정 + 1261| GT_Z0060-DMBTR "금액 + 1262| GV_BUDAT "지정-매출일자 + 1263| SPACE. "GL계정 + 1264| WHEN OTHERS. + 1265| ENDCASE. +``` + +- **EN**: For sales (PTYPE 90) posts the telecom partner payable line with key 31/21 and the expense line with key 40/50 via MAKE_BSEG according to the reversal flag. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 이통대납금, 가입비, 전기키, 채무계정, 비용계정 +- English: Posting Key, Vendor Payable, Expense Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-1238-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-1239-lv_newbs2) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1241-L1265` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B55#C1` + +### FORM MAKE_BKPF — `ZFIR0030F01` L600-L614 (15줄) + +*FB01 전기용 전표 헤더(BBKPF)를 인터페이스 데이터로 채운다.* + +> 이 unit 의 조각 1개가 9/15줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 전기 트랜잭션을 FB01 로 고정하고 증빙일·전기일은 전달받은 기준일로, 전표유형·회사코드·통화는 인터페이스 레코드에서, 헤더텍스트는 거래내역 앞 25자로 잘라 전표 헤더를 구성한다. + +```abap + 604| GT_BBKPF-TCODE = 'FB01'. + 605| GT_BBKPF-BLDAT = P_BUDAT. + 606| GT_BBKPF-BUDAT = P_BUDAT. + 607| GT_BBKPF-BLART = GT_Z0060-BLART. + 608| GT_BBKPF-BUKRS = GT_Z0060-BUKRS. + 609| GT_BBKPF-WAERS = GT_Z0060-WAERS. + 610| GT_BBKPF-BKTXT = GT_Z0060-SGTXT(25). "거래내역 + 611| + 612| APPEND GT_BBKPF. +``` + +- **EN**: Builds the FB01 document header (BBKPF) from the interface record: document/posting date, document type, company code, currency and a 25-char header text. +- SAP 객체: BBKPF, BKPF, FB01, BLART, WAERS, BKTXT +- 업무 키워드: 전표헤더, 증빙일, 전기일, 전표유형, 통화, 헤더텍스트, 전기준비 +- English: document header, document date, posting date, document type, currency, header text, BBKPF +- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L604-L612` · confidence 0.92 · `ZFIR0030#ZFIR0030F01#FORM#MAKE_BKPF#C1` + +### FORM BDC_TRANSACTION_FB01 — `ZFIR0030F01` L744-L812 (69줄) + +*구성한 전표 헤더·아이템으로 실제 전기를 수행하고 결과(전표번호 또는 오류메시지)를 인터페이스 레코드에 기록한다.* + +> 이 unit 의 조각 2개가 62/69줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 커스텀 전기 함수 Z_FI_DOCUMENT_POSTING 에 전표 헤더(BBKPF)·아이템(BBSEG) 테이블을 넘겨 전표를 생성하고, 생성된 전표번호·회계연도·회사코드와 메시지 테이블을 받는다. + +```abap + 748| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 749| EXPORTING + 750| I_BDC_MODE = GV_MODE + 751| * I_BDC_MODE = 'A' + 752| I_MESSAGE = SPACE + 753| IMPORTING + 754| E_BELNR = GV_BELNR + 755| E_GJAHR = GV_GJAHR + 756| E_BUKRS = GV_BUKRS + 757| TABLES + 758| T_BBKPF = GT_BBKPF + 759| T_BBSEG = GT_BBSEG + 760| T_MESSTAB = GT_FIMSG. +``` + +- **EN**: Posts the document by calling the custom FM Z_FI_DOCUMENT_POSTING with the BBKPF/BBSEG tables, receiving document number, fiscal year and messages. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, BBKPF, BBSEG, BELNR, GJAHR +- 업무 키워드: 전표생성, 전기, 전표번호, 회계연도, 전기함수 +- English: document posting, document number, fiscal year, posting function, BDC mode +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L748-L760` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#BDC_TRANSACTION_FB01#C1` + +#### [control_flow] 전표번호가 돌아왔으면 성공 상태(S)와 전표번호·회계연도를 기록하고, 실패면 오류(E) 상태로 두고 메시지 테이블에서 E/A 타입 메시지를 찾아 MESSAGE_TEXT_BUILD 로 사람이 읽을 오류문구를 만들어 저장한 뒤, 처리일시·처리자와 재전송용 결과 레코드를 채운다. + +```abap + 762| IF GV_BELNR NE SPACE. + 763| GT_Z0060-GJAHR = GV_GJAHR. + 764| GT_Z0060-BELNR = GV_BELNR. + 765| GT_Z0060-STATS = C_S. + 766| ELSE. + 767| GT_Z0060-STATS = C_E. + 768| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 769| IF SY-SUBRC <> 0. + 770| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 771| ENDIF. + 772| IF GT_FIMSG IS INITIAL. + 773| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 774| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 775| READ TABLE GT_MESS INDEX GV_INDEX. + 776| IF SY-SUBRC EQ 0. + 777| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 778| EXPORTING + 779| MSGID = GT_FIMSG-MSGID + 780| MSGNR = GT_FIMSG-MSGNO + 781| MSGV1 = GT_FIMSG-MSGV1 + 782| MSGV2 = GT_FIMSG-MSGV2 + 783| MSGV3 = GT_FIMSG-MSGV3 + 784| MSGV4 = GT_FIMSG-MSGV4 + 785| IMPORTING + 786| MESSAGE_TEXT_OUTPUT = GT_Z0060-MESSG. + 787| ENDIF. + 788| ELSE. + 789| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 790| EXPORTING + 791| MSGID = GT_FIMSG-MSGID + 792| MSGNR = GT_FIMSG-MSGNO + 793| MSGV1 = GT_FIMSG-MSGV1 + 794| MSGV2 = GT_FIMSG-MSGV2 + 795| MSGV3 = GT_FIMSG-MSGV3 + 796| MSGV4 = GT_FIMSG-MSGV4 + 797| IMPORTING + 798| MESSAGE_TEXT_OUTPUT = GT_Z0060-MESSG. + 799| ENDIF. + 800| ENDIF. + 801| + 802| * 로그 + 803| GT_Z0060-UDATE = SY-DATUM. + 804| GT_Z0060-UTIME = SY-UZEIT. + 805| GT_Z0060-UNAME = SY-UNAME. + 806| * 재전송 + 807| GT_RESULT-BELNR = GT_Z0060-BELNR. + 808| GT_RESULT-GJAHR = GT_Z0060-GJAHR. + 809| GT_RESULT-STATS = GT_Z0060-STATS. + 810| GT_RESULT-MESSG = GT_Z0060-MESSG. +``` + +- **EN**: Records success (document number, status S) or failure (status E) with a human-readable message built from the message table, plus audit fields and the result record used for re-transmission. +- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, ZFIT0060, BELNR, STATS, MESSG +- 업무 키워드: 전기결과, 성공, 오류, 오류메시지, 처리상태, 처리일시, 재전송, 로그 +- English: posting result, success, error, error message, processing status, audit fields, re-transmission +- 정의부(복사 시 함께 필요): [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`C_S`](#decl-zficom-226-c_s), [`C_E`](#decl-zficom-212-c_e), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index), [`GT_RESULT`](#decl-zfir0030top-21-gt_result) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L762-L810` · confidence 0.87 · `ZFIR0030#ZFIR0030F01#FORM#BDC_TRANSACTION_FB01#C2` + +### FORM SEND_AR — `ZFIR0030F01` L132-L178 (47줄) + +*처리 결과를 인터페이스 공통 로그 키와 함께 송신 시스템으로 RFC 재전송하고 CBO 테이블을 갱신한다.* + +> 이 unit 의 조각 2개가 37/47줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 인터페이스 공통 로그의 고유키(UNQID)를 프로그램 ID·모듈(FI) 기준으로 발급받고, 발급 실패 시 메시지를 띄우고 처리를 중단한다. + +```abap + 139| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 140| EXPORTING + 141| I_PGMID = SY-REPID + 142| I_MODUL = 'FI' + 143| IMPORTING + 144| E_MESSG = LV_MESSG + 145| ES_CMLOG = LS_CMLOG. + 146| + 147| IF LV_MESSG NE SPACE. + 148| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 149| LEAVE LIST-PROCESSING. + 150| ELSE. + 151| APPEND LS_CMLOG TO LT_CMLOG. + 152| ENDIF. +``` + +- **EN**: Obtains the interface common-log unique key (UNQID) for this program/module and aborts on failure. +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZIFS0010, UNQID +- 업무 키워드: 인터페이스로그, 고유키, 공통로그, 전송키, 중단 +- English: interface log, unique key, common log, UNQID +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0030f01-135-lv_messg), [`LS_CMLOG`](#decl-zfir0030f01-134-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0030f01-133-lt_cmlog) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L139-L152` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#SEND_AR#C1` + +#### [interface] 발급받은 고유키를 아직 키가 없는 건에 채워 ZFIT0060 을 갱신하고, 처리 결과를 RFC destination 'ZFI01' 의 Z_FI_SAVE_AR_RETURN 으로 재전송한 뒤 성공/실패를 사용자에게 알린다. + +```abap + 154| GT_Z0060-UNQID = LS_CMLOG-UNQID. + 155| MODIFY GT_Z0060 TRANSPORTING UNQID + 156| WHERE UNQID EQ SPACE. + 157| * CBO테이블 업데이트 + 158| MODIFY ZFIT0060 FROM TABLE GT_Z0060. + 159| + 160| + 161| * 데이터 가공하여 테이블에 저장 및 상태 값 전송 + 162| CALL FUNCTION 'Z_FI_SAVE_AR_RETURN' + 163| DESTINATION 'ZFI01' + 164| TABLES + 165| IT_RESULT = GT_RESULT + 166| IT_CMLOG = LT_CMLOG + 167| EXCEPTIONS + 168| SYSTEM_FAILURE = 1 + 169| COMMUNICATION_FAILURE = 2 + 170| OTHERS = 3. + 171| IF SY-SUBRC EQ 0. + 172| MESSAGE S000 WITH '성공적으로 저장하였습니다.'. + 173| ELSE. + 174| MESSAGE S000 WITH '데이터 재전송 중 오류가 발생했습니다.' + 175| DISPLAY LIKE C_E. + 176| ENDIF. +``` + +- **EN**: Stamps the unique key onto ZFIT0060 and re-transmits the results to the sender via RFC (Z_FI_SAVE_AR_RETURN, destination ZFI01), reporting success or failure. +- 테이블(파서): read - / write [ZFIT0060](/tables/ZFIT0060.md) +- 호출(파서): Z_FI_SAVE_AR_RETURN +- SAP 객체: Z_FI_SAVE_AR_RETURN, ZFIT0060, ZIFS0010, ZFI01 +- 업무 키워드: 재전송, 결과전송, RFC, 매출채권, 상태값전송, CBO갱신 +- English: re-transmission, result send, RFC destination, AR return, status feedback +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`LS_CMLOG`](#decl-zfir0030f01-134-ls_cmlog), [`GT_RESULT`](#decl-zfir0030top-21-gt_result), [`LT_CMLOG`](#decl-zfir0030f01-133-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L154-L176` · confidence 0.88 · `ZFIR0030#ZFIR0030F01#FORM#SEND_AR#C2` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0030/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0030/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0030/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0030/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0030/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0030/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0030#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0030/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 정의부(복사 시 함께 필요): [`P_DATE`](#decl-zfir0030top-52-p_date) +- 위치: `abap://ZFIR0030/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0030/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0030/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0030/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0030/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0030/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0030/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0030/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0030/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0030/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0030/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0030/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0030/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0030/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0030#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0030/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0030/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0030/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0030/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 위치: `abap://ZFIR0030/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0030#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0030/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0030#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM RECEIVE_AR — `ZFIR0030F01` L86-L126 (41줄) + +*인터페이스 공통 로그 키를 발급받은 뒤 RFC 목적지 ZFI01 의 Z_FI_SAVE_AR 을 호출해 매출채권·입금 내역을 GT_INFO 로 수신하는 FORM 이다.* + +> 이 unit 의 조각 2개가 29/41줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_IF_GET_UNQKEY 로 프로그램·모듈(FI) 기준 인터페이스 공통 로그 고유키(ZIFS0010)를 발급받고 오류 메시지가 있으면 처리를 중단한다. + +```abap + 93| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 94| EXPORTING + 95| I_PGMID = SY-REPID + 96| I_MODUL = 'FI' + 97| IMPORTING + 98| E_MESSG = LV_MESSG + 99| ES_CMLOG = LS_CMLOG. + 100| + 101| IF LV_MESSG NE SPACE. + 102| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 103| LEAVE LIST-PROCESSING. + 104| ELSE. + 105| APPEND LS_CMLOG TO LT_CMLOG. + 106| ENDIF. +``` + +- **EN**: Obtains the interface common-log unique key via Z_IF_GET_UNQKEY and aborts if an error message is returned. +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZIFS0010 +- 업무 키워드: 인터페이스 로그, 고유키 발급, 공통 로그 +- English: Interface Log, Unique Key +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0030f01-89-lv_messg), [`LS_CMLOG`](#decl-zfir0030f01-88-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0030f01-87-lt_cmlog) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L93-L106` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#RECEIVE_AR#C1` + +#### [interface] RFC 목적지 ZFI01 로 Z_FI_SAVE_AR 을 호출해 매출채권·입금 내역을 GT_INFO 에 수신하고 수신 데이터가 없으면 메시지 후 처리를 종료한다. + +```abap + 110| CALL FUNCTION 'Z_FI_SAVE_AR' + 111| DESTINATION 'ZFI01' + 112| TABLES + 113| ET_INFO = GT_INFO + 114| IT_CMLOG = LT_CMLOG + 115| EXCEPTIONS + 116| SYSTEM_FAILURE = 1 + 117| COMMUNICATION_FAILURE = 2 + 118| OTHERS = 3. + 119| + 120| IF GT_INFO[] IS INITIAL. + 121| MESSAGE S000 WITH '전송받은데이터가 존재하지 않습니다.' + 122| DISPLAY LIKE C_E. + 123| LEAVE LIST-PROCESSING. + 124| ENDIF. +``` + +- **EN**: Calls RFC Z_FI_SAVE_AR on destination ZFI01 to receive AR and receipt data into GT_INFO, stopping if nothing was received. +- 호출(파서): Z_FI_SAVE_AR +- SAP 객체: Z_FI_SAVE_AR, ZFI01 +- 업무 키워드: 매출채권 수신, 입금 내역, RFC 호출, 인터페이스 +- English: RFC, Accounts Receivable, Interface Inbound +- 정의부(복사 시 함께 필요): [`GT_INFO`](#decl-zfir0030top-20-gt_info), [`LT_CMLOG`](#decl-zfir0030f01-87-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L110-L124` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#RECEIVE_AR#C2` + +### FORM CHECK_DATA — `ZFIR0030F01` L184-L405 (222줄) + +*수신한 매출·입금 데이터(GT_INFO)에 대해 매핑 테이블·고객 마스터·통화키를 조회한 뒤 필수값·도메인값·고객코드·손익센터·계정매핑·통화를 검증하고 결과를 GT_Z0060/GT_RESULT 에 적재하는 FORM 이다.* + +> 이 unit 의 조각 5개가 164/222줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 수신 건의 회사코드·거래유형·결제유형·통화로 손익센터/오더 매핑(ZFIT0040), 거래유형별 계정매핑(ZFIT0070), 결제유형별 계정매핑(ZFIT0080), 통화키(TCURC)를 FOR ALL ENTRIES 로 읽어 검증용 내부테이블을 준비한다. + +```abap + 192| SELECT * + 193| INTO TABLE GT_Z0040 + 194| FROM ZFIT0040 + 195| FOR ALL ENTRIES IN GT_INFO + 196| WHERE BUKRS EQ GT_INFO-BUKRS. + 197| + 198| * 거래유형별 계정 매핑내역 추출 + 199| SELECT * + 200| INTO TABLE GT_Z0070 + 201| FROM ZFIT0070 + 202| FOR ALL ENTRIES IN GT_INFO + 203| WHERE BUKRS EQ GT_INFO-BUKRS + 204| AND BTYPE EQ GT_INFO-BTYPE. + 205| + 206| * 결제유형별 계정 매핑내역 추출 + 207| SELECT * + 208| INTO TABLE GT_Z0080 + 209| FROM ZFIT0080 + 210| FOR ALL ENTRIES IN GT_INFO + 211| WHERE BUKRS EQ GT_INFO-BUKRS + 212| AND PTYPE EQ GT_INFO-PTYPE. + 213| + 214| * 통화키 + 215| SELECT * + 216| INTO TABLE GT_TCURC + 217| FROM TCURC + 218| FOR ALL ENTRIES IN GT_INFO + 219| WHERE WAERS EQ GT_INFO-WAERS. +``` + +- **EN**: Reads profit-center/order mapping ZFIT0040, business-type account mapping ZFIT0070, payment-type mapping ZFIT0080 and currency keys TCURC for all interface rows. +- 테이블(파서): read [ZFIT0040](/tables/ZFIT0040.md), [ZFIT0070](/tables/ZFIT0070.md), [ZFIT0080](/tables/ZFIT0080.md), [TCURC](/tables/TCURC.md) / write - +- SAP 객체: ZFIT0040, ZFIT0070, ZFIT0080, TCURC +- 업무 키워드: 손익센터 매핑, 계정 매핑, 거래유형, 결제유형, 통화키 +- English: Profit Center Mapping, Account Determination, Currency Key +- 정의부(복사 시 함께 필요): [`ZFIT0040`](#decl-zfir0030top-7-zfit0040), [`GT_Z0040`](#decl-zfir0030top-15-gt_z0040), [`GT_INFO`](#decl-zfir0030top-20-gt_info), [`ZFIT0070`](#decl-zfir0030top-7-zfit0070), [`GT_Z0070`](#decl-zfir0030top-17-gt_z0070), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`TCURC`](#decl-zfir0030top-7-tcurc), [`GT_TCURC`](#decl-zfir0030top-19-gt_tcurc) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L192-L219` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#CHECK_DATA#C1` + +#### [sql_select] KNB1 에서 이전 계정번호(ALTKN)로 고객코드·지점 고객코드(GSBER2)·예수금 거래처(ALTKN2)에 해당하는 SAP 고객번호(KUNNR)를 조회해 GT_KNB1 에 모은다. + +```abap + 222| SELECT BUKRS KUNNR ALTKN + 223| INTO TABLE GT_KNB1 + 224| FROM KNB1 + 225| FOR ALL ENTRIES IN GT_INFO + 226| WHERE BUKRS EQ GT_INFO-BUKRS + 227| AND ALTKN EQ GT_INFO-ALTKN. + 228| * 고객코드(지점) 추출 + 229| SELECT BUKRS KUNNR ALTKN + 230| APPENDING TABLE GT_KNB1 + 231| FROM KNB1 + 232| FOR ALL ENTRIES IN GT_INFO + 233| WHERE BUKRS EQ GT_INFO-BUKRS + 234| AND ALTKN EQ GT_INFO-GSBER2. + 235| * 에수금거래처 추출 + 236| SELECT BUKRS KUNNR ALTKN + 237| APPENDING TABLE GT_KNB1 + 238| FROM KNB1 + 239| FOR ALL ENTRIES IN GT_INFO + 240| WHERE BUKRS EQ GT_INFO-BUKRS + 241| AND ALTKN EQ GT_INFO-ALTKN2. +``` + +- **EN**: Looks up SAP customer numbers in KNB1 by previous account number (ALTKN) for the customer, branch customer and deposit partner. +- 테이블(파서): read [KNB1](/tables/KNB1.md) / write - +- SAP 객체: KNB1 +- 업무 키워드: 고객 마스터, 이전계정번호, 지점 고객, 예수금 거래처 +- English: Customer Master, Previous Account Number, Company Code Data +- 정의부(복사 시 함께 필요): [`GT_KNB1`](#decl-zfir0030top-24-gt_knb1), [`KNB1`](#decl-zficom-39-knb1), [`GT_INFO`](#decl-zfir0030top-20-gt_info) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L222-L241` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#CHECK_DATA#C2` + +#### [validation] 수신 건마다 필수 필드(회사코드·처리일·발생취소구분·거래유형·결제유형·통화·지점) 누락과 도메인 ZDGUBUN/ZDBTYPE2/ZDPTYPE/ZDPFLAG 허용값 여부를 검사해 오류 시 상태 E 와 메시지를 GT_Z0060/GS_RESULT 에 기록한다. + +```abap + 244| LOOP AT GT_INFO INTO GS_INFO. + 245| CLEAR GV_ERR. + 246| MOVE-CORRESPONDING: GS_INFO TO GT_Z0060, + 247| GS_INFO TO GS_RESULT. + 248| * 필수입력값 체크 + 249| IF GS_INFO-BUKRS IS INITIAL OR GS_INFO-PRC_DT IS INITIAL OR + 250| GS_INFO-GUBUN IS INITIAL OR GS_INFO-BTYPE IS INITIAL OR + 251| GS_INFO-PTYPE IS INITIAL OR GS_INFO-WAERS IS INITIAL OR + 252| GS_INFO-GSBER2 IS INITIAL. + 253| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 254| GS_RESULT-MESSG = GT_Z0060-MESSG = '필수입력필드 입력 누락'. + 255| GV_ERR = 'X'. + 256| ENDIF. + 257| + 258| * 발생취소구분 + 259| IF GV_ERR EQ SPACE. + 260| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDGUBUN' + 261| DOMVALUE_L = GS_INFO-GUBUN. + 262| IF SY-SUBRC NE 0. + 263| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 264| GS_RESULT-MESSG = GT_Z0060-MESSG = '발생/취소 구분필드 오류'. + 265| GV_ERR = 'X'. + 266| ENDIF. + 267| ENDIF. + 268| + 269| * 거래유형 + 270| IF GV_ERR EQ SPACE. + 271| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDBTYPE2' + 272| DOMVALUE_L = GS_INFO-BTYPE. + 273| IF SY-SUBRC NE 0. + 274| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 275| GS_RESULT-MESSG = GT_Z0060-MESSG = '거래유형필드 오류'. + 276| GV_ERR = 'X'. + 277| ENDIF. + 278| ENDIF. + 279| + 280| * 결제유형 + 281| IF GV_ERR EQ SPACE. + 282| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPTYPE' + 283| DOMVALUE_L = GS_INFO-PTYPE. + 284| IF SY-SUBRC NE 0. + 285| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 286| GS_RESULT-MESSG = GT_Z0060-MESSG = '결제유형필드 오류'. + 287| GV_ERR = 'X'. + 288| ENDIF. + 289| ENDIF. + 290| + 291| * 결제시점(결재유형이 매출(90)이 아닌 경우에만) + 292| IF GV_ERR EQ SPACE AND GS_INFO-PTYPE NE '90'. + 293| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPFLAG' + 294| DOMVALUE_L = GS_INFO-PFLAG. + 295| IF SY-SUBRC NE 0. + 296| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 297| GS_RESULT-MESSG = GT_Z0060-MESSG = '결제시점필드 오류'. + 298| GV_ERR = 'X'. + 299| ENDIF. + 300| ENDIF. +``` + +- **EN**: Validates mandatory fields and domain values (reversal flag, business type, payment type, payment timing) for each interface row, marking errors with status E and a message. +- SAP 객체: ZDGUBUN, ZDBTYPE2, ZDPTYPE, ZDPFLAG +- 업무 키워드: 필수값 검증, 도메인 값 검증, 발생/취소 구분, 거래유형, 결제유형 +- English: Mandatory Field Check, Domain Value Check, Validation +- 정의부(복사 시 함께 필요): [`GT_INFO`](#decl-zfir0030top-20-gt_info), [`GS_INFO`](#decl-zfir0030top-12-gs_info), [`GV_ERR`](#decl-zfir0030top-37-gv_err), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GS_RESULT`](#decl-zfir0030top-13-gs_result), [`C_E`](#decl-zficom-212-c_e), [`GT_DOMAIN`](#decl-zfir0030top-31-gt_domain) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L244-L300` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#CHECK_DATA#C3` + +#### [validation] 지점·예수금·일반 고객코드를 KNB1 조회 결과로 KUNNR2/KUNNR3/KUNNR 에 매핑하고 손익센터·오더·사업장·코스트센터(ZFIT0040), 전표유형·계정(ZFIT0070), 결제유형 계정매핑(ZFIT0080), 통화키(TCURC) 존재를 검증해 누락 시 오류 상태와 메시지를 기록한다. + +```abap + 259| IF GV_ERR EQ SPACE. + 260| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDGUBUN' + 261| DOMVALUE_L = GS_INFO-GUBUN. + 262| IF SY-SUBRC NE 0. + 263| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 264| GS_RESULT-MESSG = GT_Z0060-MESSG = '발생/취소 구분필드 오류'. + 265| GV_ERR = 'X'. + 266| ENDIF. + 267| ENDIF. + 268| + 269| * 거래유형 + 270| IF GV_ERR EQ SPACE. + 271| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDBTYPE2' + 272| DOMVALUE_L = GS_INFO-BTYPE. + 273| IF SY-SUBRC NE 0. + 274| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 275| GS_RESULT-MESSG = GT_Z0060-MESSG = '거래유형필드 오류'. + 276| GV_ERR = 'X'. + 277| ENDIF. + 278| ENDIF. + 279| + 280| * 결제유형 + 281| IF GV_ERR EQ SPACE. + 282| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPTYPE' + 283| DOMVALUE_L = GS_INFO-PTYPE. + 284| IF SY-SUBRC NE 0. + 285| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 286| GS_RESULT-MESSG = GT_Z0060-MESSG = '결제유형필드 오류'. + 287| GV_ERR = 'X'. + 288| ENDIF. + 289| ENDIF. + 290| + 291| * 결제시점(결재유형이 매출(90)이 아닌 경우에만) + 292| IF GV_ERR EQ SPACE AND GS_INFO-PTYPE NE '90'. + 293| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPFLAG' + 294| DOMVALUE_L = GS_INFO-PFLAG. + 295| IF SY-SUBRC NE 0. + 296| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 297| GS_RESULT-MESSG = GT_Z0060-MESSG = '결제시점필드 오류'. + 298| GV_ERR = 'X'. + 299| ENDIF. + 300| ENDIF. + 301| + 302| * 지점고객코드 체크 + 303| IF GV_ERR EQ SPACE. + 304| READ TABLE GT_KNB1 WITH KEY BUKRS = GS_INFO-BUKRS + 305| ALTKN = GS_INFO-GSBER2. + 306| IF SY-SUBRC EQ 0. + 307| GT_Z0060-KUNNR2 = GT_KNB1-KUNNR. + 308| ELSE. + 309| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 310| GS_RESULT-MESSG = GT_Z0060-MESSG = '해당 고객코드 마스터 미생성'. + 311| GV_ERR = 'X'. + 312| ENDIF. + 313| ENDIF. + 314| + 315| * 예수금거래처 체크 + 316| IF GV_ERR EQ SPACE AND GS_INFO-ALTKN2 NE SPACE. + 317| READ TABLE GT_KNB1 WITH KEY BUKRS = GS_INFO-BUKRS + 318| ALTKN = GS_INFO-ALTKN2. + 319| IF SY-SUBRC EQ 0. + 320| GT_Z0060-KUNNR3 = GT_KNB1-KUNNR. + 321| ELSE. + 322| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 323| GS_RESULT-MESSG = GT_Z0060-MESSG = '예수금 거래처 마스터 미생성'. + 324| GV_ERR = 'X'. + 325| ENDIF. + 326| ENDIF. + 327| + 328| * 사업영역&사업장 + 329| IF GV_ERR EQ SPACE. + 330| READ TABLE GT_Z0040 WITH KEY BUKRS = GS_INFO-BUKRS + 331| GSBER2 = GS_INFO-GSBER2(7). + 332| IF SY-SUBRC EQ 0. + 333| GT_Z0060-PRCTR = GT_Z0040-PRCTR. + 334| GT_Z0060-AUFNR = GT_Z0040-ZAUFNR2. + 335| GT_Z0060-BUPLA = GT_Z0040-BUPLA. + 336| GT_Z0060-KOSTL = GT_Z0040-KOSTL. + 337| ELSE. + 338| GS_RESULT-STATS = GT_Z0060-STATS = C_E. + 339| GS_RESULT-MESSG = GT_Z0060-MESSG = '손익센터 매핑 누락'. + 340| GV_ERR = 'X'. + 341| ENDIF. + 342| ENDIF. + 343| + 344| * 거래유형에 따른 계정매핑 + 345| IF GV_ERR EQ SPACE. + 346| READ TABLE GT_Z0070 WITH KEY BUKRS = GS_INFO-BUKRS + 347| BTYPE = GS_INFO-BTYPE. + 348| IF SY-SUBRC EQ 0. +``` + +- **EN**: Maps customer numbers and derives profit center, order, business place, cost center, document type and G/L accounts from mapping tables, flagging missing master or mapping entries as errors. +- SAP 객체: KNB1, ZFIT0040, ZFIT0070, ZFIT0080, TCURC +- 업무 키워드: 고객코드 매핑, 손익센터, 계정 결정, 전표유형, 통화키 검증 +- English: Customer Mapping, Profit Center, Account Determination, Document Type +- 정의부(복사 시 함께 필요): [`GV_ERR`](#decl-zfir0030top-37-gv_err), [`GT_DOMAIN`](#decl-zfir0030top-31-gt_domain), [`GS_INFO`](#decl-zfir0030top-12-gs_info), [`GS_RESULT`](#decl-zfir0030top-13-gs_result), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`C_E`](#decl-zficom-212-c_e), [`GT_KNB1`](#decl-zfir0030top-24-gt_knb1), [`ZFIT0040`](#decl-zfir0030top-7-zfit0040), [`GT_Z0040`](#decl-zfir0030top-15-gt_z0040), [`ZFIT0070`](#decl-zfir0030top-7-zfit0070), [`GT_Z0070`](#decl-zfir0030top-17-gt_z0070) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L259-L348` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#CHECK_DATA#C4` + +#### [calculation] CHANGE_CURRENCY_SAP 매크로로 금액·과세표준·세액을 통화 소수점에 맞게 SAP 내부 금액으로 변환하고 생성일시·생성자를 채워 GT_Z0060 과 GT_RESULT 에 추가한다. + +```abap + 393| * 금액컨버트 + 394| CHANGE_CURRENCY_SAP GS_INFO-DMBTR GT_Z0060-DMBTR_C GS_INFO-WAERS. + 395| CHANGE_CURRENCY_SAP GS_INFO-HWBAS GT_Z0060-HWBAS_C GS_INFO-WAERS. + 396| CHANGE_CURRENCY_SAP GS_INFO-MWSTS GT_Z0060-MWSTS_C GS_INFO-WAERS. + 397| + 398| GT_Z0060-CDATE = SY-DATUM. + 399| GT_Z0060-CTIME = SY-UZEIT. + 400| GT_Z0060-CNAME = SY-UNAME. + 401| APPEND GT_Z0060. CLEAR GT_Z0060. + 402| APPEND GS_RESULT TO GT_RESULT. CLEAR GS_RESULT. + 403| ENDLOOP. +``` + +- **EN**: Converts amount, tax base and tax to SAP internal currency format, stamps creation info and appends the row to GT_Z0060 and GT_RESULT. +- SAP 객체: GT_Z0060, GT_RESULT +- 업무 키워드: 금액 변환, 통화 소수점, 생성 정보 +- English: Currency Conversion, Amount Format +- 정의부(복사 시 함께 필요): [`CHANGE_CURRENCY_SAP`](#decl-zficom-346-change_currency_sap), [`GS_INFO`](#decl-zfir0030top-12-gs_info), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GS_RESULT`](#decl-zfir0030top-13-gs_result), [`GT_RESULT`](#decl-zfir0030top-21-gt_result) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L393-L403` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#CHECK_DATA#C5` + +### FORM POSTING_DOCUMENT — `ZFIR0030F01` L510-L592 (83줄) + +*오류 없는 매출·입금 수신 건마다 거래유형(BTYPE)별 전표 아이템 생성 FORM 으로 분기한 뒤 헤더를 만들고 FB01 BDC 로 전기하여 결과를 GT_Z0060/GT_RESULT 및 ZFIT0060 에 기록하는 FORM 이다.* + +> 이 unit 의 조각 3개가 72/83줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 상태가 정상인 수신 건을 돌며 재전송 결과(GT_RESULT)와 결제유형별 계정매핑(GT_Z0080)을 읽고 취소(C_R) 건이면 반전 전기 플래그 GV_XNEGP 를 세운다. + +```abap + 515| LOOP AT GT_Z0060 WHERE STATS EQ SPACE. + 516| CLEAR: GV_XNEGP, LV_INDEX, GT_BBSEG[], GT_BBSEG. + 517| * 전송할 데이터..READ + 518| READ TABLE GT_RESULT WITH KEY BUKRS = GT_Z0060-BUKRS + 519| PRC_DT = GT_Z0060-PRC_DT + 520| SEQ = GT_Z0060-SEQ. + 521| + 522| * 결제유형에 따른 계정매핑 값.. + 523| READ TABLE GT_Z0080 WITH KEY BUKRS = GT_Z0060-BUKRS + 524| PTYPE = GT_Z0060-PTYPE. + 525| + 526| * 발생취소구분 + 527| IF GT_Z0060-GUBUN EQ C_R. + 528| GV_XNEGP = C_X. + 529| ENDIF. +``` + +- **EN**: Loops over error-free interface rows, reads the result and payment-type account mapping entries and sets the negative posting flag for reversal rows. +- SAP 객체: GT_Z0060, GT_Z0080, ZFIT0080 +- 업무 키워드: 정상 건 선별, 결제유형 계정매핑, 반전 전기 +- English: Negative Posting, Payment Type Mapping +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_XNEGP`](#decl-zfir0030top-40-gv_xnegp), [`LV_INDEX`](#decl-zfir0030f01-511-lv_index), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_RESULT`](#decl-zfir0030top-21-gt_result), [`ZFIT0080`](#decl-zfir0030top-7-zfit0080), [`GT_Z0080`](#decl-zfir0030top-18-gt_z0080), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L515-L529` · confidence 0.8 · `ZFIR0030#ZFIR0030F01#FORM#POSTING_DOCUMENT#C1` + +#### [control_flow] 거래유형 BTYPE(B01 상품매출, B03~B15 모바일/PC 판매, B31~B37 서비스매출, B51 임대, B53 이통예수금, B55/B57 이통대납금)별로 PROCESS_B01/B03/B53/B55 전표 아이템 생성 로직으로 분기한다. + +```abap + 532| CASE GT_Z0060-BTYPE. + 533| WHEN 'B01'. "상품매출 + 534| PERFORM PROCESS_B01. + 535| WHEN 'B03'. "모바일판매_모바일상품 + 536| PERFORM PROCESS_B03. + 537| WHEN 'B05'. "모바일판매_모바일할부 + 538| PERFORM PROCESS_B03. + 539| WHEN 'B07'. "모바일판매_USIM할부 + 540| PERFORM PROCESS_B03. + 541| WHEN 'B09'. "모바일판매_모바일악세서리 + 542| PERFORM PROCESS_B03. + 543| WHEN 'B11'. "모바일판매_통신사고객장려금(미수금) + 544| PERFORM PROCESS_B03. + 545| WHEN 'B13'. "PC판매-PC할부 + 546| PERFORM PROCESS_B03. + 547| WHEN 'B15'. "PC판매-미수금-PC + 548| PERFORM PROCESS_B03. + 549| WHEN 'B31'. "서비스매출-SVC대행수수료용역 + 550| PERFORM PROCESS_B01. + 551| WHEN 'B33'. "서비스매출-물류대행용역(공동물류) + 552| PERFORM PROCESS_B03. + 553| WHEN 'B35'. "서비스매출-SVC유료수익금 + 554| PERFORM PROCESS_B03. + 555| WHEN 'B37'. "서비스매출-물류이전설치 + 556| PERFORM PROCESS_B03. + 557| WHEN 'B51'. "임대을 + 558| PERFORM PROCESS_B01. + 559| WHEN 'B53'. "이통예수금 + 560| PERFORM PROCESS_B53. + 561| WHEN 'B55'. "이통대납금-가입비 + 562| PERFORM PROCESS_B55. + 563| WHEN 'B57'. "이통대납금-위약금 + 564| PERFORM PROCESS_B55. + 565| * WHEN 'B59'. "장려금-판매장려금(구매정산) + 566| * PERFORM PROCESS_B59. + 567| * WHEN 'B61'. "장려금-매입장려금(구매정산) + 568| * PERFORM PROCESS_B59. + 569| * WHEN 'B63'. "장려금-설치수수료(구매정산) + 570| * PERFORM PROCESS_B63. + 571| WHEN OTHERS. + 572| ENDCASE. +``` + +- **EN**: Dispatches by business type (goods sales, mobile/PC sales, service revenue, rental, telecom deposit, telecom payment) to the matching PROCESS_Bxx line-item builder. +- 호출(파서): PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B53, PROCESS_B55, PROCESS_B55 +- SAP 객체: GT_Z0060 +- 업무 키워드: 거래유형, 상품매출, 모바일판매, 서비스매출, 이통예수금, 이통대납금 +- English: Business Type, Sales Posting, Line Item +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L532-L572` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#POSTING_DOCUMENT#C2` + +#### [db_write] MAKE_BKPF 로 전표 헤더를 만들고 BDC_TRANSACTION_FB01 로 FB01 전기 후 상태·메시지를 GT_Z0060 과 재전송용 GT_RESULT 에 반영하고 루프 종료 후 MODIFY ZFIT0060 으로 CBO 테이블에 저장한다. + +```abap + 575| PERFORM MAKE_BKPF USING GV_BUDAT. + 576| * 전표생성 Function Call + 577| PERFORM BDC_TRANSACTION_FB01. + 578| + 579| MODIFY GT_Z0060. + 580| + 581| * 재전송데이터 UPDATE + 582| MODIFY GT_RESULT TRANSPORTING STATS MESSG + 583| WHERE PRC_DT EQ GT_Z0060-PRC_DT + 584| AND SEQ EQ GT_Z0060-SEQ. + 585| ENDLOOP. + 586| + 587| * CBO테이블에 저장 + 588| IF GT_Z0060[] IS NOT INITIAL. + 589| MODIFY ZFIT0060 FROM TABLE GT_Z0060. + 590| ENDIF. +``` + +- **EN**: Builds the document header, posts via FB01 BDC, updates status/message in GT_Z0060 and GT_RESULT, and finally saves all rows to CBO table ZFIT0060. +- 테이블(파서): read - / write [ZFIT0060](/tables/ZFIT0060.md) +- 호출(파서): MAKE_BKPF, BDC_TRANSACTION_FB01 +- SAP 객체: FB01, ZFIT0060, GT_RESULT +- 업무 키워드: 전표 헤더, FB01 전기, 결과 저장, 재전송 데이터 +- English: Document Header, BDC Posting, CBO Table Update +- 정의부(복사 시 함께 필요): [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GT_RESULT`](#decl-zfir0030top-21-gt_result) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L575-L590` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#POSTING_DOCUMENT#C3` + +### FORM PROCESS_B59 — `ZFIR0030F01` L1273-L1303 (31줄) + +*판매장려금(구매정산, B59) 매출 건에 대해 발생/취소 구분에 따라 전기키를 정하고 채권 라인과 수익 라인 두 개의 전표 아이템을 MAKE_BSEG 로 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 25/31줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 90(매출)일 때 매출일자를 전기일로 두고 발생(C_N)이면 전기키 01/50, 취소면 11/40 으로 하여 거래처 채권계정(HKONT) 라인과 수익계정(HKONT2) 라인을 MAKE_BSEG 로 만든다. + +```abap + 1277| CASE GT_Z0060-PTYPE. + 1278| WHEN '90'. "매출 + 1279| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1280| * 발생취소구분에따라.. + 1281| IF GT_Z0060-GUBUN EQ C_N. + 1282| LV_NEWBS = '01'. + 1283| LV_NEWBS2 = '50'. + 1284| ELSE. + 1285| LV_NEWBS = '11'. + 1286| LV_NEWBS2 = '40'. + 1287| ENDIF. + 1288| * 전표 아이템_1 + 1289| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1290| GT_Z0060-KUNNR "거래처 + 1291| GT_Z0060-DMBTR "금액 + 1292| GV_BUDAT "지정-매출일자 + 1293| GT_Z0060-HKONT. "채권채무계정 + 1294| * 전표 아이템_2 + 1295| PERFORM MAKE_BSEG USING LV_NEWBS2 + 1296| GT_Z0060-HKONT2 "수익비용계정 + 1297| GT_Z0060-DMBTR "금액 + 1298| GV_BUDAT "지정-매출일자 + 1299| SPACE. "GL계정 + 1300| WHEN OTHERS. + 1301| ENDCASE. +``` + +- **EN**: For sales (PTYPE 90) sets posting keys 01/50 (or 11/40 for reversal) and builds the customer receivable line and the revenue line via MAKE_BSEG for the sales incentive. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 판매장려금, 전기키, 발생/취소, 채권계정, 수익계정 +- English: Posting Key, Sales Incentive, Customer Line, Revenue Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-1274-lv_newbs), [`LV_NEWBS2`](#decl-zfir0030f01-1275-lv_newbs2) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1277-L1301` · confidence 0.9 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B59#C1` + +### FORM PROCESS_B63 — `ZFIR0030F01` L1309-L1332 (24줄) + +*설치수수료(구매정산, B63) 매출 건에 대해 고객 채권 라인을 만들고 MAKE_BSEG_TX 로 세금 포함 수익 라인을 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 결제유형 90(매출)일 때 발생이면 전기키 01, 취소면 11 로 고객(KUNNR) 채권계정 라인을 접수일자 기준으로 MAKE_BSEG 로 만들고 MAKE_BSEG_TX 로 수익·세금 라인을 추가한다. + +```abap + 1313| CASE GT_Z0060-PTYPE. + 1314| WHEN '90'. "매출 + 1315| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 1316| * 발생취소구분에따라.. + 1317| IF GT_Z0060-GUBUN EQ C_N. + 1318| LV_NEWBS = '01'. + 1319| ELSE. + 1320| LV_NEWBS = '11'. + 1321| ENDIF. + 1322| * 전표 아이템_1 + 1323| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1324| GT_Z0060-KUNNR "고객 + 1325| GT_Z0060-DMBTR "금액 + 1326| GT_Z0060-RCDAT "지정-접수일자 + 1327| GT_Z0060-HKONT. "채권채무계정 + 1328| * 전표 아이템_2&3 + 1329| PERFORM MAKE_BSEG_TX. + 1330| ENDCASE. +``` + +- **EN**: For sales (PTYPE 90) posts the customer receivable line with key 01/11 via MAKE_BSEG and adds revenue and tax lines via MAKE_BSEG_TX. +- 호출(파서): MAKE_BSEG, MAKE_BSEG_TX +- SAP 객체: BBSEG, GT_Z0060 +- 업무 키워드: 설치수수료, 전기키, 고객 채권, 세금 라인 +- English: Posting Key, Customer Receivable, Tax Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0030top-7-zfit0060), [`GT_Z0060`](#decl-zfir0030top-16-gt_z0060), [`GV_BUDAT`](#decl-zfir0030top-38-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0030f01-1310-lv_newbs) +- 위치: `abap://ZFIR0030/ZFIR0030F01#L1313-L1330` · confidence 0.85 · `ZFIR0030#ZFIR0030F01#FORM#PROCESS_B63#C1` + +## 정의부 (320건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0030TOP` (24건) + +#### TCURC — tables · L7-L7 {#decl-zfir0030top-7-tcurc} + +```abap +TABLES: ZFIT0060, ZFIT0040, ZFIT0070, ZFIT0080, TCURC. +``` + +#### ZFIT0040 — tables · L7-L7 {#decl-zfir0030top-7-zfit0040} + +```abap +TABLES: ZFIT0060, ZFIT0040, ZFIT0070, ZFIT0080, TCURC. +``` + +#### ZFIT0060 — tables · L7-L7 {#decl-zfir0030top-7-zfit0060} + +```abap +TABLES: ZFIT0060, ZFIT0040, ZFIT0070, ZFIT0080, TCURC. +``` + +#### ZFIT0070 — tables · L7-L7 {#decl-zfir0030top-7-zfit0070} + +```abap +TABLES: ZFIT0060, ZFIT0040, ZFIT0070, ZFIT0080, TCURC. +``` + +#### ZFIT0080 — tables · L7-L7 {#decl-zfir0030top-7-zfit0080} + +```abap +TABLES: ZFIT0060, ZFIT0040, ZFIT0070, ZFIT0080, TCURC. +``` + +#### GS_INFO — data · L12-L12 {#decl-zfir0030top-12-gs_info} + +```abap +DATA: GS_INFO LIKE ZFIS0080. +``` + +#### GS_RESULT — data · L13-L13 {#decl-zfir0030top-13-gs_result} + +```abap +DATA: + GS_RESULT LIKE ZFIS0081. +``` + +#### GT_Z0040 — data · L15-L15 {#decl-zfir0030top-15-gt_z0040} + +```abap +DATA: GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0060 — data · L16-L16 {#decl-zfir0030top-16-gt_z0060} + +```abap +DATA: + GT_Z0060 LIKE ZFIT0060 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0070 — data · L17-L17 {#decl-zfir0030top-17-gt_z0070} + +```abap +DATA: + GT_Z0070 LIKE ZFIT0070 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0080 — data · L18-L18 {#decl-zfir0030top-18-gt_z0080} + +```abap +DATA: + GT_Z0080 LIKE ZFIT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_TCURC — data · L19-L19 {#decl-zfir0030top-19-gt_tcurc} + +```abap +DATA: + GT_TCURC LIKE TCURC OCCURS 0 WITH HEADER LINE. +``` + +#### GT_INFO — data · L20-L20 {#decl-zfir0030top-20-gt_info} + +```abap +DATA: + GT_INFO LIKE ZFIS0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RESULT — data · L21-L21 {#decl-zfir0030top-21-gt_result} + +```abap +DATA: + GT_RESULT LIKE ZFIS0081 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_KNB1 — data · L24-L28 {#decl-zfir0030top-24-gt_knb1} + +```abap +DATA: BEGIN OF GT_KNB1 OCCURS 0, + BUKRS LIKE KNB1-BUKRS, + KUNNR LIKE KNB1-KUNNR, + ALTKN LIKE KNB1-ALTKN, + END OF GT_KNB1. +``` + +#### GT_DOMAIN — data · L31-L35 {#decl-zfir0030top-31-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### GV_ERR — data · L37-L37 {#decl-zfir0030top-37-gv_err} + +```abap +DATA: GV_ERR(1) TYPE C. +``` + +#### GV_BUDAT — data · L38-L38 {#decl-zfir0030top-38-gv_budat} + +```abap +DATA: + GV_BUDAT LIKE BKPF-BUDAT. +``` + +#### GV_HKONT — data · L39-L39 {#decl-zfir0030top-39-gv_hkont} + +```abap +DATA: + GV_HKONT LIKE BSEG-HKONT. +``` + +#### GV_XNEGP — data · L40-L40 {#decl-zfir0030top-40-gv_xnegp} + +```abap +DATA: + GV_XNEGP LIKE BSEG-XNEGP. +``` + +#### C_HKONT_TX — constants · L45-L45 {#decl-zfir0030top-45-c_hkont_tx} + +```abap +CONSTANTS: C_HKONT_TX LIKE BSEG-HKONT VALUE '0021350101'. " 부가세 +``` + +#### C_HKONT — constants · L46-L46 {#decl-zfir0030top-46-c_hkont} + +```abap +CONSTANTS: + C_HKONT LIKE BSEG-HKONT VALUE '0091000040'. " 전표분할 +``` + +#### C_MWSKZ — constants · L47-L47 {#decl-zfir0030top-47-c_mwskz} + +```abap +CONSTANTS: + C_MWSKZ LIKE BSEG-MWSKZ VALUE 'A1'. +``` + +#### P_DATE — parameter · L52-L52 {#decl-zfir0030top-52-p_date} + +```abap +PARAMETERS : P_DATE LIKE SY-DATUM. +``` + +### `ZFIR0030F01` (19건) + +#### LT_CMLOG — data · unit 로컬 · L87-L87 {#decl-zfir0030f01-87-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CMLOG — data · unit 로컬 · L88-L88 {#decl-zfir0030f01-88-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LV_MESSG — data · unit 로컬 · L89-L89 {#decl-zfir0030f01-89-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LT_CMLOG — data · unit 로컬 · L133-L133 {#decl-zfir0030f01-133-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CMLOG — data · unit 로컬 · L134-L134 {#decl-zfir0030f01-134-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LV_MESSG — data · unit 로컬 · L135-L135 {#decl-zfir0030f01-135-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LV_INDEX — data · unit 로컬 · L511-L511 {#decl-zfir0030f01-511-lv_index} + +```abap + DATA: LV_INDEX LIKE SY-TABIX. +``` + +#### LV_NEWKO — data · unit 로컬 · L632-L632 {#decl-zfir0030f01-632-lv_newko} + +```abap + DATA: LV_NEWKO LIKE BBSEG-NEWKO. +``` + +#### LV_ZUONR — data · unit 로컬 · L633-L633 {#decl-zfir0030f01-633-lv_zuonr} + +```abap +DATA: + LV_ZUONR LIKE BBSEG-ZUONR. +``` + +#### LV_NEWBS — data · unit 로컬 · L819-L819 {#decl-zfir0030f01-819-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L820-L820 {#decl-zfir0030f01-820-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1169-L1169 {#decl-zfir0030f01-1169-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1198-L1198 {#decl-zfir0030f01-1198-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L1199-L1199 {#decl-zfir0030f01-1199-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1238-L1238 {#decl-zfir0030f01-1238-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L1239-L1239 {#decl-zfir0030f01-1239-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1274-L1274 {#decl-zfir0030f01-1274-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L1275-L1275 {#decl-zfir0030f01-1275-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1310-L1310 {#decl-zfir0030f01-1310-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0030 L28-35 | 0 | 처리 기준일을 오늘로 초기화하고 GET_DOMAIN 으로 도메인 값을 준비하는 INITIALIZATION 이벤트 블록이다. | +| AT SELECTION-SCREEN | EVENT | ZFIR0030 L36-40 | 0 | 내용이 없는 AT SELECTION-SCREEN 이벤트 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0030 L41-47 | 0 | START-OF-SELECTION 에서 GET_DATA 를 호출하는 이벤트 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0030 L48-48 | 0 | 내용이 없는 END-OF-SELECTION 이벤트 블록이다. | +| GET_DOMAIN | FORM | ZFIR0030F01 L9-58 | 2 | 검증에 쓰일 도메인 고정값(발생취소·거래유형·결제유형·결제시점)을 DD07T 에서 읽고 선수금계정을 ZFIT0080 에서 조회하는 FORM 이다. | +| GET_DATA | FORM | ZFIR0030F01 L64-80 | 0 | 수신·검증·전기 흐름은 주석 처리되고 미재전송 건 추출(GET_ZFIT0060)과 매출채권 상태 재전송(SEND_AR)만 호출하는 메인 디스패치 FORM 이다. | +| RECEIVE_AR | FORM | ZFIR0030F01 L86-126 | 2 | 인터페이스 공통 로그 키를 발급받은 뒤 RFC 목적지 ZFI01 의 Z_FI_SAVE_AR 을 호출해 매출채권·입금 내역을 GT_INFO 로 수신하는 FORM 이다. | +| SEND_AR | FORM | ZFIR0030F01 L132-178 | 2 | 처리 결과를 인터페이스 공통 로그 키와 함께 송신 시스템으로 RFC 재전송하고 CBO 테이블을 갱신한다. | +| CHECK_DATA | FORM | ZFIR0030F01 L184-405 | 5 | 수신한 매출·입금 데이터(GT_INFO)에 대해 매핑 테이블·고객 마스터·통화키를 조회한 뒤 필수값·도메인값·고객코드·손익센터·계정매핑·통화를 검증하고 결과를 GT_Z0060/GT_RESULT 에 적재하는 FORM 이다. | +| GET_ZFIT0060 | FORM | ZFIR0030F01 L411-504 | 2 | 전송받은 매출·입금 내역을 건별로 돌며 거래유형에 따라 전표를 만들어 전기한다 — 이 프로그램의 주 처리 루프다. | +| POSTING_DOCUMENT | FORM | ZFIR0030F01 L510-592 | 3 | 오류 없는 매출·입금 수신 건마다 거래유형(BTYPE)별 전표 아이템 생성 FORM 으로 분기한 뒤 헤더를 만들고 FB01 BDC 로 전기하여 결과를 GT_Z0060/GT_RESULT 및 ZFIT0060 에 기록하는 FORM 이다. | +| MAKE_BKPF | FORM | ZFIR0030F01 L600-614 | 1 | FB01 전기용 전표 헤더(BBKPF)를 인터페이스 데이터로 채운다. | +| MAKE_BSEG | FORM | ZFIR0030F01 L626-667 | 1 | FB01 전기용 전표 아이템(BBSEG) 한 줄을 전기키·계정·금액과 업무 규칙에 따라 구성한다. | +| MAKE_BSEG_TX | FORM | ZFIR0030F01 L673-716 | 2 | 매출 전표의 수익 라인(총금액-부가세)과 부가세 라인(세금코드·공급가액)을 GT_BBSEG 에 생성하고 취소 건은 마이너스 전기(XNEGP)와 전기키 40 으로 처리하는 FORM 이다. | +| MAKE_BSEG_SP | FORM | ZFIR0030F01 L722-738 | 1 | 전표분할 계정으로 차변·대변 한 쌍을 만들어 손익센터 단위 분개를 맞춘다. | +| BDC_TRANSACTION_FB01 | FORM | ZFIR0030F01 L744-812 | 2 | 구성한 전표 헤더·아이템으로 실제 전기를 수행하고 결과(전표번호 또는 오류메시지)를 인터페이스 레코드에 기록한다. | +| PROCESS_B01 | FORM | ZFIR0030F01 L818-1162 | 8 | 상품매출(B01) 전표 아이템 생성 FORM 의 선언부(창 1/3)로 전기키 변수 선언만 있다. | +| PROCESS_B03 | FORM | ZFIR0030F01 L1168-1191 | 1 | 모바일판매·PC판매·서비스매출(B03 계열) 매출 건에 대해 지점고객 채권 라인을 만들고 MAKE_BSEG_TX 로 수익·부가세 라인을 생성하는 FORM 이다. | +| PROCESS_B53 | FORM | ZFIR0030F01 L1197-1231 | 1 | 이통예수금(B53) 현금 수금 건에 대해 발생/취소 구분에 따라 전기키를 정해 결제유형계정 라인과 예수금(수익비용)계정 라인을 MAKE_BSEG 로 생성하는 FORM 이다. | +| PROCESS_B55 | FORM | ZFIR0030F01 L1237-1267 | 1 | 이통대납금(가입비·위약금, B55/B57) 매출 건에 대해 발생/취소 구분에 따라 공급업체 전기키(31/21)와 비용 전기키(40/50)를 정해 두 개의 전표 아이템을 MAKE_BSEG 로 생성하는 FORM 이다. | +| PROCESS_B59 | FORM | ZFIR0030F01 L1273-1303 | 1 | 판매장려금(구매정산, B59) 매출 건에 대해 발생/취소 구분에 따라 전기키를 정하고 채권 라인과 수익 라인 두 개의 전표 아이템을 MAKE_BSEG 로 생성하는 FORM 이다. | +| PROCESS_B63 | FORM | ZFIR0030F01 L1309-1332 | 1 | 설치수수료(구매정산, B63) 매출 건에 대해 고객 채권 라인을 만들고 MAKE_BSEG_TX 로 세금 포함 수익 라인을 생성하는 FORM 이다. | diff --git a/wiki/programs/ZFIR0031.md b/wiki/programs/ZFIR0031.md new file mode 100644 index 0000000..1a040eb --- /dev/null +++ b/wiki/programs/ZFIR0031.md @@ -0,0 +1,4920 @@ +--- +type: abap-program +title: "ZFIR0031 — 매출 및 입금내역 I/F 이력 조회" +description: "ZFIR0030 이 처리한 매출·입금 인터페이스 내역의 이력을 조회하고, 오류로 전기되지 않은 건을 화면에서 직접 재전기할 수 있는 운영 화면이다. 처리일자·처리상태(전체/오류)로 ZFIT0060 을 조회해 ALV 로 보여주고, ZFIR0030 과 동일한 전표 생성 로직(PROCESS_B01, MAKE_BKPF/BSEG, FB01 BDC)을 내장해 재처리까지 한 화면에서 끝낸다." +resource: "abap://ZFIR0031" +tags: ["인터페이스", "매출", "채권관리", "리포트", "자동기표", "오류재처리", "FI", "번호범위", "채번", "일련번호", "키생성", "번호오브젝트", "권한체크", "회사코드권한", "권한오브젝트", "접근제어", "처리중단", "전표분할", "분할계정", "손익센터"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:19+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AUFK", "CEPCT", "CSKT", "DD07T", "J_1BBRANCH", "KNA1", "LTDX", "SKAT", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0060", "ZFIT0080", "ZFIT0160"] +x-tables-write: ["ZFIT0060"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN"] +x-code-hash: "1bf1bd30f3d126996129a73ccfca7f7da053ae9a0580100c3401d726b71658dd" +x-unit-count: 108 +x-chunk-count: 63 +x-declaration-count: 305 +--- + +## 업무 목적 + +ZFIR0030 이 처리한 매출·입금 인터페이스 내역의 이력을 조회하고, 오류로 전기되지 않은 건을 화면에서 직접 재전기할 수 있는 운영 화면이다. 처리일자·처리상태(전체/오류)로 ZFIT0060 을 조회해 ALV 로 보여주고, ZFIR0030 과 동일한 전표 생성 로직(PROCESS_B01, MAKE_BKPF/BSEG, FB01 BDC)을 내장해 재처리까지 한 화면에서 끝낸다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 처리일자·처리상태 조건으로 ZFIT0060 인터페이스 이력을 추출한다 (GET_ZFIT0060) +4. 고객(KNA1)·오더(AUFK)·손익센터(CEPCT)·코스트센터 텍스트를 붙여 표시 데이터를 만든다 (DISPLAY_DATA) +5. 화면 0100 에 ALV 로 출력한다 +6. 사용자가 재전기를 지시하면 거래유형별 로직으로 전표를 다시 만들어 FB01 BDC 로 전기한다 (POSTING_DOCUMET → PROCESS_B01 → BDC_TRANSACTION_FB01) +7. 재전송이 필요한 건은 송신 경로로 보낸다 (SEND_AR) + +## 핵심 내부테이블 + +- `GT_DATA` — 매출·입금 I/F 이력 표시 및 재전기 대상 (채움: GET_ZFIT0060 / 소비: DISPLAY_DATA, POSTING_DOCUMET) + +## 테이블 / 외부 호출 + +- read: AUFK, CEPCT, CSKT, DD07T, J_1BBRANCH, KNA1, LTDX, SKAT, T007S, TKA02, USR01, V_USERNAME, ZFIT0060, ZFIT0080, ZFIT0160 +- write: ZFIT0060 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET + +## 로직 조각 (63건 / unit 44개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0031F01` L9-L59 (51줄) + +*발생취소구분·거래유형·결제유형·결제시점 도메인 텍스트를 DD07T에서 읽고 선수금 G/L 계정(ZFIT0080 PTYPE 10)을 GV_HKONT에 담는 FORM이다.* + +> 이 unit 의 조각 2개가 42/51줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 ZDGUBUN(발생취소)·ZDBTYPE2(거래유형)·ZDPTYPE(결제유형)·ZDPFLAG(결제시점) 도메인의 로그인 언어 고정값 텍스트를 GT_DOMAIN에 적재한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDGUBUN' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. + 21| + 22| * 거래유형(ZDBTYPE2) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDBTYPE2' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ C_A. + 31| + 32| * 결제유형(ZDPTYPE) + 33| SELECT DOMNAME + 34| DOMVALUE_L + 35| DDTEXT + 36| APPENDING TABLE GT_DOMAIN + 37| FROM DD07T + 38| WHERE DD07T~DOMNAME EQ 'ZDPTYPE' + 39| AND DD07T~DDLANGUAGE EQ SY-LANGU + 40| AND DD07T~AS4LOCAL EQ C_A. + 41| + 42| * 결제시점(ZDPFLAG) + 43| SELECT DOMNAME + 44| DOMVALUE_L + 45| DDTEXT + 46| APPENDING TABLE GT_DOMAIN + 47| FROM DD07T + 48| WHERE DD07T~DOMNAME EQ 'ZDPFLAG' + 49| AND DD07T~DDLANGUAGE EQ SY-LANGU + 50| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Loads fixed-value texts of custom domains ZDGUBUN, ZDBTYPE2, ZDPTYPE and ZDPFLAG from DD07T for display. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 텍스트, 발생취소구분, 거래유형, 결제유형, 결제시점 +- English: Domain Fixed Values, DD07T, Transaction Type, Payment Type +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0031top-67-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L13-L50` · confidence 0.95 · `ZFIR0031#ZFIR0031F01#FORM#GET_DOMAIN#C1` + +#### [sql_select] 결제유형 계정매핑 ZFIT0080에서 PTYPE 10(선수금대체)의 계정을 읽어 선수금 G/L 계정 GV_HKONT로 사용한다. + +```abap + 54| SELECT SINGLE HKONT + 55| INTO GV_HKONT + 56| FROM ZFIT0080 + 57| WHERE PTYPE EQ '10'. +``` + +- **EN**: Reads the down-payment G/L account from ZFIT0080 for payment type 10 into GV_HKONT. +- 테이블(파서): read [ZFIT0080](/tables/ZFIT0080.md) / write - +- SAP 객체: ZFIT0080 +- 업무 키워드: 선수금계정, 계정매핑 +- English: Down Payment Account, Account Mapping +- 정의부(복사 시 함께 필요): [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L54-L57` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#GET_DOMAIN#C2` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0031#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0060 — `ZFIR0031F01` L79-L177 (99줄) + +*처리상태 라디오버튼과 선택조건으로 ZFIT0060 매출·입금 인터페이스 이력을 조회하고 결제유형 계정매핑(ZFIT0080)과 코스트센터·손익센터·오더·사업장·고객 명칭 테이블을 미리 읽어 두는 FORM이다.* + +> 이 unit 의 조각 3개가 78/99줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 라디오버튼(전체/성공 S/오류 E·F)에 따라 처리상태 범위 R_STATS를 만들고 회사코드·처리일자·손익센터·발생취소구분·거래유형·결제유형·결제시점 조건으로 ZFIT0060 이력을 조회한다. + +```abap + 85| R_STATS-SIGN = C_I. + 86| R_STATS-OPTION = C_EQ. + 87| CASE C_X. + 88| WHEN P_RA. + 89| WHEN P_RS. + 90| R_STATS-LOW = C_S. + 91| APPEND R_STATS. + 92| WHEN P_RE. + 93| R_STATS-LOW = C_E. + 94| APPEND R_STATS. + 95| R_STATS-LOW = C_F. + 96| APPEND R_STATS. + 97| ENDCASE. + 98| + 99| SELECT * + 100| INTO TABLE GT_Z0060 + 101| FROM ZFIT0060 + 102| WHERE BUKRS EQ P_BUKRS + 103| AND PRC_DT IN S_PRCDT + 104| AND PRCTR IN S_PRCTR + 105| AND GUBUN IN S_GUBUN + 106| AND BTYPE IN S_BTYPE + 107| AND PTYPE IN S_PTYPE + 108| AND PFLAG IN S_PFLAG + 109| AND STATS IN R_STATS. +``` + +- **EN**: Builds a status range from the radio buttons (all / success / error) and selects AR interface history records from ZFIT0060 by company code, processing date, profit center, indicator and type selections. +- 테이블(파서): read [ZFIT0060](/tables/ZFIT0060.md) / write - +- SAP 객체: ZFIT0060 +- 업무 키워드: 인터페이스 이력 조회, 처리상태, 처리일자, 거래유형, 결제유형 +- English: Interface History, Processing Status, Select-Options, CBO Table +- 정의부(복사 시 함께 필요): [`R_STATS`](#decl-zfir0031top-73-r_stats), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_X`](#decl-zficom-231-c_x), [`P_RA`](#decl-zfir0031top-108-p_ra), [`P_RS`](#decl-zfir0031top-110-p_rs), [`C_S`](#decl-zficom-226-c_s), [`P_RE`](#decl-zfir0031top-112-p_re), [`C_E`](#decl-zficom-212-c_e), [`C_F`](#decl-zficom-213-c_f), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060) 외 7건 +- 위치: `abap://ZFIR0031/ZFIR0031F01#L85-L109` · confidence 0.95 · `ZFIR0031#ZFIR0031F01#FORM#GET_ZFIT0060#C1` + +#### [sql_select] 조회된 이력의 회사코드·결제유형으로 결제유형별 G/L 계정 매핑 테이블 ZFIT0080을 FOR ALL ENTRIES로 읽어 재전기 시 결제유형계정으로 사용한다. + +```abap + 114| SELECT * + 115| INTO TABLE GT_Z0080 + 116| FROM ZFIT0080 + 117| FOR ALL ENTRIES IN GT_Z0060 + 118| WHERE BUKRS EQ GT_Z0060-BUKRS + 119| AND PTYPE EQ GT_Z0060-PTYPE. +``` + +- **EN**: Reads the payment-type to G/L account mapping (ZFIT0080) for all selected records, used as the payment-type account during reposting. +- 테이블(파서): read [ZFIT0080](/tables/ZFIT0080.md) / write - +- SAP 객체: ZFIT0080 +- 업무 키워드: 결제유형 계정매핑, 결제유형계정, CBO 테이블 +- English: Account Mapping, Payment Type, G/L Account +- 정의부(복사 시 함께 필요): [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L114-L119` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#GET_ZFIT0060#C2` + +#### [sql_select] 회사코드의 관리회계영역(TKA02)을 읽고 코스트센터명(CSKT)·손익센터명(CEPCT)·오더명(AUFK)·사업장명(J_1BBRANCH)·고객 및 지점고객명(KNA1)을 FOR ALL ENTRIES로 조회해 명칭 버퍼를 채운다. + +```abap + 129| SELECT SINGLE * + 130| FROM TKA02 + 131| WHERE BUKRS EQ P_BUKRS. + 132| * 코스트센터명 + 133| SELECT KOSTL LTEXT + 134| INTO TABLE GT_CSKT + 135| FROM CSKT + 136| FOR ALL ENTRIES IN GT_Z0060 + 137| WHERE SPRAS EQ SY-LANGU + 138| AND KOKRS EQ TKA02-KOKRS + 139| AND KOSTL EQ GT_Z0060-KOSTL. + 140| + 141| * 손익센터명 + 142| SELECT PRCTR KTEXT + 143| INTO TABLE GT_CEPCT + 144| FROM CEPCT + 145| FOR ALL ENTRIES IN GT_Z0060 + 146| WHERE SPRAS EQ SY-LANGU + 147| AND KOKRS EQ TKA02-KOKRS + 148| AND PRCTR EQ GT_Z0060-PRCTR. + 149| + 150| * 오더명 + 151| SELECT AUFNR KTEXT + 152| INTO TABLE GT_AUFK + 153| FROM AUFK + 154| FOR ALL ENTRIES IN GT_Z0060 + 155| WHERE AUFNR EQ GT_Z0060-AUFNR. + 156| + 157| * 사업장명 + 158| SELECT BRANCH NAME + 159| INTO TABLE GT_BRANCH + 160| FROM J_1BBRANCH + 161| FOR ALL ENTRIES IN GT_Z0060 + 162| WHERE BUKRS EQ P_BUKRS + 163| AND BRANCH EQ GT_Z0060-BUPLA. + 164| * 고객명 + 165| SELECT KUNNR NAME1 + 166| INTO TABLE GT_KNA1 + 167| FROM KNA1 + 168| FOR ALL ENTRIES IN GT_Z0060 + 169| WHERE KUNNR EQ GT_Z0060-KUNNR. + 170| * 지점고객명 + 171| SELECT KUNNR NAME1 + 172| APPENDING TABLE GT_KNA1 + 173| FROM KNA1 + 174| FOR ALL ENTRIES IN GT_Z0060 + 175| WHERE KUNNR EQ GT_Z0060-KUNNR2. +``` + +- **EN**: Determines the controlling area (TKA02) and prefetches cost center, profit center, order, business place and customer/branch-customer names for the selected records. +- 테이블(파서): read [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [CEPCT](/tables/CEPCT.md), [AUFK](/tables/AUFK.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [KNA1](/tables/KNA1.md) / write - +- SAP 객체: TKA02, CSKT, CEPCT, AUFK, J_1BBRANCH, KNA1 +- 업무 키워드: 관리회계영역, 코스트센터명, 손익센터명, 오더명, 사업장명, 고객명 +- English: Controlling Area, Cost Center Text, Profit Center Text, Order Text, Business Place, Customer Master +- 정의부(복사 시 함께 필요): [`TKA02`](#decl-zfir0031top-8-tka02), [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs), [`GT_CSKT`](#decl-zfir0031top-52-gt_cskt), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060), [`GT_CEPCT`](#decl-zfir0031top-41-gt_cepct), [`GT_AUFK`](#decl-zfir0031top-46-gt_aufk), [`GT_BRANCH`](#decl-zfir0031top-57-gt_branch), [`GT_KNA1`](#decl-zfir0031top-62-gt_kna1), [`KNA1`](#decl-zficom-38-kna1) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L129-L175` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#GET_ZFIT0060#C3` + +### FORM DISPLAY_DATA — `ZFIR0031F01` L183-L268 (86줄) + +*ZFIT0060 이력에 처리상태 아이콘과 발생/취소·거래유형·결제유형·결제시점 도메인 텍스트, 손익센터·오더·코스트센터·사업장·고객·지점고객 명칭을 붙여 ALV 표시 테이블 GT_DATA를 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 81/86줄(94%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 이력 건마다 상태(S 성공/F 수신오류/기타)별 신호등 아이콘을 정하고 ZDGUBUN·ZDBTYPE2·ZDPTYPE·ZDPFLAG 도메인 텍스트와 CEPCT·AUFK·CSKT·J_1BBRANCH·KNA1 버퍼의 명칭을 붙여 GT_DATA에 추가한 뒤 처리일자·순번으로 정렬하고 건수를 센다. + +```abap + 186| LOOP AT GT_Z0060. + 187| MOVE-CORRESPONDING GT_Z0060 TO GT_DATA. + 188| + 189| * 상태 아이콘 + 190| IF GT_Z0060-STATS EQ C_S. + 191| GT_DATA-CICON = ICON_GREEN_LIGHT. + 192| ELSEIF GT_Z0060-STATS EQ C_F. + 193| GT_DATA-CICON = ICON_RED_LIGHT. + 194| ELSE. + 195| GT_DATA-CICON = ICON_YELLOW_LIGHT. + 196| ENDIF. + 197| + 198| * 발생/취소구분 + 199| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDGUBUN' + 200| DOMVALUE_L = GT_Z0060-GUBUN. + 201| IF SY-SUBRC EQ 0. + 202| GT_DATA-GUBUN_T = GT_DOMAIN-DDTEXT. + 203| ENDIF. + 204| * 거래유형명 + 205| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDBTYPE2' + 206| DOMVALUE_L = GT_Z0060-BTYPE. + 207| IF SY-SUBRC EQ 0. + 208| GT_DATA-BTYPE_T = GT_DOMAIN-DDTEXT. + 209| ENDIF. + 210| * 결제유형명 + 211| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPTYPE' + 212| DOMVALUE_L = GT_Z0060-PTYPE. + 213| IF SY-SUBRC EQ 0. + 214| GT_DATA-PTYPE_T = GT_DOMAIN-DDTEXT. + 215| ENDIF. + 216| * 결제시점구분 + 217| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPFLAG' + 218| DOMVALUE_L = GT_Z0060-PFLAG. + 219| IF SY-SUBRC EQ 0. + 220| GT_DATA-PFLAG_T = GT_DOMAIN-DDTEXT. + 221| ENDIF. + 222| + 223| ** 사업영역명 + 224| * READ TABLE GT_TGSBT WITH KEY GSBER = GT_Z0060-GSBER. + 225| * IF SY-SUBRC EQ 0. + 226| * GT_DATA-GSBER_T = GT_TGSBT-GTEXT. + 227| * ENDIF. + 228| + 229| * 손익센터명 + 230| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0060-PRCTR. + 231| IF SY-SUBRC EQ 0. + 232| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 233| ENDIF. + 234| * 오더명 + 235| READ TABLE GT_AUFK WITH KEY AUFNR = GT_Z0060-AUFNR. + 236| IF SY-SUBRC EQ 0. + 237| GT_DATA-AUFNR_T = GT_AUFK-KTEXT. + 238| ENDIF. + 239| + 240| * 코스트센터명 + 241| READ TABLE GT_CSKT WITH KEY KOSTL = GT_Z0060-KOSTL. + 242| IF SY-SUBRC EQ 0. + 243| GT_DATA-KOSTL_T = GT_CSKT-LTEXT. + 244| ENDIF. + 245| * 사업장명 + 246| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_Z0060-BUPLA. + 247| IF SY-SUBRC EQ 0. + 248| GT_DATA-BUPLA_T = GT_BRANCH-NAME. + 249| ENDIF. + 250| * 고객명 + 251| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0060-KUNNR. + 252| IF SY-SUBRC EQ 0. + 253| GT_DATA-KUNNR_T = GT_KNA1-NAME1. + 254| ENDIF. + 255| * 지점고객명 + 256| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0060-KUNNR2. + 257| IF SY-SUBRC EQ 0. + 258| GT_DATA-KUNNR2_T = GT_KNA1-NAME1. + 259| ENDIF. + 260| + 261| APPEND GT_DATA. CLEAR GT_DATA. + 262| ENDLOOP. + 263| + 264| SORT GT_DATA BY PRC_DT SEQ. + 265| + 266| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: Builds the ALV display rows from the interface history with status traffic-light icon, domain texts for indicator/transaction/payment types and names of profit center, order, cost center, business place and customers, sorted by processing date and sequence. +- SAP 객체: ZFIT0060, CEPCT, AUFK, CSKT, J_1BBRANCH, KNA1 +- 업무 키워드: 표시 데이터 생성, 상태 아이콘, 도메인 텍스트, 손익센터명, 고객명, 사업장명 +- English: Display Data, Status Icon, Domain Text, Profit Center Text, Customer Name +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060), [`GT_DATA`](#decl-zfir0031top-14-gt_data), [`C_S`](#decl-zficom-226-c_s), [`C_F`](#decl-zficom-213-c_f), [`GT_DOMAIN`](#decl-zfir0031top-67-gt_domain), [`GT_CEPCT`](#decl-zfir0031top-41-gt_cepct), [`GT_AUFK`](#decl-zfir0031top-46-gt_aufk), [`GT_CSKT`](#decl-zfir0031top-52-gt_cskt), [`GT_BRANCH`](#decl-zfir0031top-57-gt_branch), [`GT_KNA1`](#decl-zfir0031top-62-gt_kna1), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L186-L266` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#DISPLAY_DATA#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0031/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0031/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0031/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0031/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0031/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0031/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0031/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0031/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0031/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0031/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0031/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0031/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0031/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0031/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0031/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0031/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0031/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0031/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0031/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0031/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0031/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0031#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0031/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0031/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0031/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0031/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs) +- 위치: `abap://ZFIR0031/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0031#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0031/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0031#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0031F01` L531-L559 (29줄) + +*ALV 핫스팟 클릭 시 고객/지점고객 코드는 FD03 고객 조회로, 전표번호는 FB03 전표 조회로 이동하는 FORM이다.* + +> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭 컬럼이 KUNNR/KUNNR2이면 SET PARAMETER KUN·BUK 후 FD03을, BELNR이면 BLN·BUK·GJR 후 FB03을 SKIP FIRST SCREEN으로 호출한다. + +```abap + 534| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 535| CHECK SY-SUBRC EQ 0. + 536| + 537| CASE P_COLUMN_ID. + 538| * 고객코드 + 539| WHEN 'KUNNR'. + 540| CHECK GT_DATA-KUNNR IS NOT INITIAL. + 541| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR. + 542| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 543| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 544| * 지점고객코드 + 545| WHEN 'KUNNR2'. + 546| CHECK GT_DATA-KUNNR2 IS NOT INITIAL. + 547| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR2. + 548| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 549| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 550| * 전표번호 + 551| WHEN 'BELNR'. + 552| CHECK GT_DATA-BELNR IS NOT INITIAL. + 553| SET PARAMETER ID 'BLN' FIELD GT_DATA-BELNR. + 554| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 555| SET PARAMETER ID 'GJR' FIELD GT_DATA-GJAHR. + 556| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 557| ENDCASE. +``` + +- **EN**: Navigates from hotspot columns to FD03 (customer display) or FB03 (document display) via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FD03, FD03, FB03 +- SAP 객체: FD03, FB03 +- 업무 키워드: 핫스팟 이동, 고객 조회, 전표 조회 +- English: Hotspot Navigation, Customer Display, Document Display, CALL TRANSACTION +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_DATA`](#decl-zfir0031top-14-gt_data), [`P_BUKRS`](#decl-zfir0031top-96-p_bukrs) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L534-L557` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0031F01` L328-L343 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 329| PERFORM SET_FIELD_CATALOGS. + 330| * Report Display. + 331| GV_VARI-REPORT = SY-REPID. + 332| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 333| EXPORTING + 334| I_STRUCTURE_NAME = 'GT_DATA' + 335| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 336| IS_LAYOUT = GV_LAYO + 337| IS_VARIANT = GV_VARI + 338| I_BUFFER_ACTIVE = C_X + 339| I_SAVE = C_A + 340| CHANGING + 341| IT_OUTTAB = GT_DATA[] + 342| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0031top-83-gv_vari), [`GV_ALV_GRID`](#decl-zfir0031top-81-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0031top-82-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_DATA`](#decl-zfir0031top-14-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L329-L342` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#ALV_GRID_DISPLAY#C1` + +### FORM POSTING_DOCUMET — `ZFIR0031F01` L565-L683 (119줄) + +*ALV에서 선택한 미전기 인터페이스 건을 검증·확인 후 결제유형별 계정매핑(ZFIT0080)과 거래유형(BTYPE)별 로직으로 전표 라인을 만들어 FB01 BDC로 전기하고 결과를 ZFIT0060 갱신·재전송(SEND_AR)하는 재전기 FORM이다.* + +> 이 unit 의 조각 4개가 103/119줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행이 없으면 중단하고, 이미 전표가 생성된 건(BELNR 존재)이나 수신값 오류(STATS F) 건이 포함되면 메시지 후 막으며, 건수를 담은 확인 팝업(CHECK_CONFIRM_STEP)에서 '예'일 때만 진행한다. + +```abap + 572| CALL METHOD GV_ALV_GRID->GET_SELECTED_ROWS + 573| IMPORTING + 574| ET_INDEX_ROWS = GT_ROWS[]. + 575| + 576| IF GT_ROWS[] IS INITIAL. + 577| MESSAGE S004. "선택된 데이터가 없습니다. + 578| EXIT. + 579| ELSE. + 580| * 선택된 데이터의 전표 생성여부 확인 + 581| LOOP AT GT_ROWS INTO GS_ROWS. + 582| READ TABLE GT_DATA INDEX GS_ROWS-INDEX. + 583| CHECK SY-SUBRC EQ 0. + 584| IF GT_DATA-BELNR EQ SPACE. + 585| IF GT_DATA-STATS EQ C_F. "전송받은 값 에러 + 586| MESSAGE I000 WITH TEXT-004. + 587| "선택한 데이터 중 오류가 있는 건이 존재합니다. + 588| GF_CHECK = C_X. EXIT. + 589| ENDIF. + 590| LV_CNT = LV_CNT + 1. + 591| ELSE. + 592| MESSAGE I000 WITH TEXT-001. + 593| "선택한 데이터 중 이미 전표가 생성된 건이 있습니다. + 594| GF_CHECK = C_X. EXIT. + 595| ENDIF. + 596| ENDLOOP. + 597| + 598| CHECK GF_CHECK IS INITIAL. + 599| CONCATENATE TEXT-002 LV_CNT TEXT-003 INTO GV_TEXT + 600| SEPARATED BY SPACE. + 601| "선택하신 N건의 데이터의 전표를 생성하시겠습니까? + 602| PERFORM CHECK_CONFIRM_STEP USING TEXT-005 GV_TEXT SPACE C_N. + 603| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Validates selected rows (no document yet, no received-data error status F) and asks the user to confirm document creation for N records. +- 호출(파서): GV_ALV_GRID->GET_SELECTED_ROWS, CHECK_CONFIRM_STEP +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 재전기 대상 검증, 전표 기생성 체크, 오류 건 제외, 확인 팝업 +- English: Validation, ALV Selected Rows, Confirmation Popup, Document Exists +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID`](#decl-zfir0031top-81-gv_alv_grid), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_DATA`](#decl-zfir0031top-14-gt_data), [`C_F`](#decl-zficom-213-c_f), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x), [`LV_CNT`](#decl-zfir0031f01-567-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer) 외 1건 +- 위치: `abap://ZFIR0031/ZFIR0031F01#L572-L603` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#POSTING_DOCUMET#C1` + +#### [calculation] 선택 건을 처리용 GT_Z0060_S로 옮기고 회사코드·결제유형으로 계정매핑 GT_Z0080(결제유형계정)을 읽으며, 취소(GUBUN R) 건은 마이너스 전기 플래그를 켜고 금액·공급가액·세액 부호를 반전한다. + +```abap + 605| LOOP AT GT_ROWS INTO GS_ROWS. + 606| CLEAR: GT_Z0060_S, GV_XNEGP. + 607| READ TABLE GT_DATA INDEX GS_ROWS-INDEX. + 608| CHECK SY-SUBRC EQ 0. + 609| MOVE-CORRESPONDING: GT_DATA TO GT_Z0060_S. + 610| CLEAR: GT_Z0060_S-STATS, GT_Z0060_S-MESSG. + 611| + 612| MOVE-CORRESPONDING: GT_Z0060_S TO GT_RESULT. + 613| + 614| CLEAR: GV_XNEGP, GT_BBSEG[], GT_BBSEG. + 615| * 결제유형에 따른 계정매핑 값.. + 616| READ TABLE GT_Z0080 WITH KEY BUKRS = GT_Z0060_S-BUKRS + 617| PTYPE = GT_Z0060_S-PTYPE. + 618| + 619| * 발생취소구분 + 620| IF GT_Z0060_S-GUBUN EQ C_R. + 621| GV_XNEGP = C_X. + 622| * 마이너스 금액 변환 + 623| GT_Z0060_S-DMBTR_C = 0 - GT_Z0060_S-DMBTR_C. + 624| GT_Z0060_S-HWBAS_C = 0 - GT_Z0060_S-HWBAS_C. + 625| GT_Z0060_S-MWSTS_C = 0 - GT_Z0060_S-MWSTS_C. + 626| ENDIF. +``` + +- **EN**: Prepares each selected record: looks up the payment-type account mapping (ZFIT0080) and, for cancellations, sets the negative posting flag and negates amount, tax base and tax. +- SAP 객체: ZFIT0080, ZFIT0060 +- 업무 키워드: 결제유형 계정매핑, 취소 건 부호 반전, 마이너스 전기, 재처리 준비 +- English: Account Mapping, Payment Type, Reversal, Negative Posting +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_XNEGP`](#decl-zfir0031top-75-gv_xnegp), [`GT_DATA`](#decl-zfir0031top-14-gt_data), [`GT_RESULT`](#decl-zfir0031top-33-gt_result), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L605-L626` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#POSTING_DOCUMET#C2` + +#### [control_flow] 거래유형 BTYPE(B01 상품매출, B03~B15 모바일/PC판매, B31~B37 서비스매출, B51 임대, B53 이통예수금, B55/B57 이통대납금)에 따라 PROCESS_B01/B03/B53/B55 전표 라인 생성 FORM으로 분기한다. + +```abap + 629| CASE GT_Z0060_S-BTYPE. + 630| WHEN 'B01'. "상품매출 + 631| PERFORM PROCESS_B01. + 632| WHEN 'B03'. "모바일판매_모바일상품 + 633| PERFORM PROCESS_B03. + 634| WHEN 'B05'. "모바일판매_모바일할부 + 635| PERFORM PROCESS_B03. + 636| WHEN 'B07'. "모바일판매_USIM할부 + 637| PERFORM PROCESS_B03. + 638| WHEN 'B09'. "모바일판매_모바일악세서리 + 639| PERFORM PROCESS_B03. + 640| WHEN 'B11'. "모바일판매_통신사고객장려금(미수금) + 641| PERFORM PROCESS_B03. + 642| WHEN 'B13'. "PC판매-PC할부 + 643| PERFORM PROCESS_B03. + 644| WHEN 'B15'. "PC판매-미수금-PC + 645| PERFORM PROCESS_B03. + 646| WHEN 'B31'. "서비스매출-SVC대행수수료용역 + 647| PERFORM PROCESS_B01. + 648| WHEN 'B33'. "서비스매출-물류대행용역(공동물류) + 649| PERFORM PROCESS_B03. + 650| WHEN 'B35'. "서비스매출-SVC유료수익금 + 651| PERFORM PROCESS_B03. + 652| WHEN 'B37'. "서비스매출-물류이전설치 + 653| PERFORM PROCESS_B03. + 654| WHEN 'B51'. "임대을 + 655| PERFORM PROCESS_B01. + 656| WHEN 'B53'. "이통예수금 + 657| PERFORM PROCESS_B53. + 658| WHEN 'B55'. "이통대납금-가입비 + 659| PERFORM PROCESS_B55. + 660| WHEN 'B57'. "이통대납금-위약금 + 661| PERFORM PROCESS_B55. + 662| WHEN OTHERS. + 663| ENDCASE. +``` + +- **EN**: Dispatches by business transaction type (merchandise sales, mobile/PC sales, service revenue, rent, carrier deposits and carrier-paid fees) to the corresponding line-building routine. +- 호출(파서): PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B03, PROCESS_B03, PROCESS_B03, PROCESS_B01, PROCESS_B53, PROCESS_B55, PROCESS_B55 +- 업무 키워드: 거래유형 분기, 상품매출, 모바일판매, 서비스매출, 이통예수금, 이통대납금 +- English: Transaction Type, Dispatch, Sales Posting, Service Revenue +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L629-L663` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#POSTING_DOCUMET#C3` + +#### [control_flow] 전기일로 전표 헤더를 만들고 BDC_TRANSACTION_FB01로 전기한 뒤 이력(GT_Z0060_S)·결과(GT_RESULT)에 추가하고, 루프 후 SEND_AR로 상태·메시지를 재전송하고 GET_DATA로 화면을 재조회한다. + +```abap + 666| PERFORM MAKE_BKPF USING GV_BUDAT. + 667| * 전표생성 Function Call + 668| PERFORM BDC_TRANSACTION_FB01. + 669| + 670| + 671| CLEAR GT_Z0060_S-PRCHK. + 672| APPEND GT_Z0060_S. CLEAR GT_Z0060_S. + 673| APPEND GT_RESULT. CLEAR GT_RESULT. + 674| ENDLOOP. + 675| + 676| * 매출채권 내역 재전송(상태 및 메시지 업데이트) + 677| PERFORM SEND_AR. + 678| + 679| PERFORM GET_DATA. +``` + +- **EN**: Builds the header, posts via FB01 batch input, collects history and result rows, then resends the status to the source system (SEND_AR) and refreshes the list. +- 호출(파서): MAKE_BKPF, BDC_TRANSACTION_FB01, SEND_AR, GET_DATA +- SAP 객체: FB01, ZFIT0060 +- 업무 키워드: 전표 헤더 생성, FB01 전기, 결과 재전송, 재조회 +- English: Document Posting, FB01, Result Return, Refresh +- 정의부(복사 시 함께 필요): [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GT_RESULT`](#decl-zfir0031top-33-gt_result) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L666-L679` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#POSTING_DOCUMET#C4` + +### FORM PROCESS_B01 — `ZFIR0031F01` L689-L1032 (344줄) + +*상품매출(B01) 전표 생성 FORM의 1번째 창으로, 전기키 로컬 변수 선언만 있는 시작 구간이다.* + +> 이 unit 의 조각 8개가 332/344줄(96%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 카드 결제(PTYPE 01)에서 선수금(PFLAG 1)은 카드고객 04/선수금계정 50, 수금(PFLAG 2)은 카드고객 04/지점고객 15(취소 시 14/05·40) 전기키로 MAKE_BSEG 라인을 만들고 수금 건은 MAKE_BSEG_SP로 전표분할 라인을 추가한다. + +```abap + 694| WHEN '01'. "카드 + 695| CASE GT_Z0060_S-PFLAG. + 696| WHEN '1'. "선수금 + 697| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 698| * 발생취소구분에따라.. + 699| IF GT_Z0060_S-GUBUN EQ C_N. + 700| LV_NEWBS = '04'. + 701| LV_NEWBS2 = '50'. + 702| ELSE. + 703| LV_NEWBS = '14'. + 704| LV_NEWBS2 = '40'. + 705| ENDIF. + 706| * 전표 아이템_1 + 707| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 708| GT_Z0060_S-KUNNR "고객 + 709| GT_Z0060_S-DMBTR "금액 + 710| GV_BUDAT "지정-결제일자 + 711| GT_Z0080-HKONT. "결제유형계정 + 712| * 전표 아이템_2 + 713| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 714| GV_HKONT "선수금계정 + 715| GT_Z0060_S-DMBTR "금액 + 716| GV_BUDAT "결제일자 + 717| SPACE. "G/L계정 + 718| WHEN '2'. "수금 + 719| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 720| * 발생취소구분에따라.. + 721| IF GT_Z0060_S-GUBUN EQ C_N. + 722| LV_NEWBS = '04'. + 723| LV_NEWBS2 = '15'. + 724| ELSE. + 725| LV_NEWBS = '14'. + 726| LV_NEWBS2 = '05'. + 727| ENDIF. + 728| * 전표 아이템_1 + 729| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 730| GT_Z0060_S-KUNNR "고객 + 731| GT_Z0060_S-DMBTR "금액 + 732| GV_BUDAT "지정-결제일자 + 733| GT_Z0080-HKONT. "결제유형계정 + 734| * 전표 아이템_2 + 735| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 736| GT_Z0060_S-KUNNR2 "지점고객 + 737| GT_Z0060_S-DMBTR "금액 + 738| GT_Z0060_S-RCDAT "지정-접수일자 + 739| GT_Z0060_S-HKONT. "채권채무계정 + 740| * 전표분할계정 + 741| PERFORM MAKE_BSEG_SP. + 742| ENDCASE. +``` + +- **EN**: Card payment: builds customer/down-payment or customer/branch-customer clearing lines with posting keys 04-50 (advance) or 04-15 (collection), reversed keys for cancellations, plus document split lines. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG_SP +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 카드 결제, 선수금, 수금, 전기키, 결제유형계정, 전표분할 +- English: Card Payment, Down Payment, Incoming Payment, Posting Key, Customer Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L694-L742` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C1` + +#### [calculation] 현금 결제(PTYPE 02)에서 선수금은 결제유형계정 40/선수금계정 50, 수금은 결제유형계정 40/지점고객 15(취소 시 반대) 전기키로 G/L 및 고객 라인을 생성한다. + +```abap + 743| WHEN '02'. "현금 + 744| CASE GT_Z0060_S-PFLAG. + 745| WHEN '1'. + 746| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 747| * 발생취소구분에따라.. + 748| IF GT_Z0060_S-GUBUN EQ C_N. + 749| LV_NEWBS = '40'. + 750| LV_NEWBS2 = '50'. + 751| ELSE. + 752| LV_NEWBS = '50'. + 753| LV_NEWBS2 = '40'. + 754| ENDIF. + 755| * 전표 아이템_1 + 756| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 757| GT_Z0080-HKONT "결제유형계정 + 758| GT_Z0060_S-DMBTR "금액 + 759| GV_BUDAT "지정-결제일자 + 760| SPACE. "GL계정 + 761| + 762| * 전표 아이템_2 + 763| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 764| GV_HKONT "선수금계정 + 765| GT_Z0060_S-DMBTR "금액 + 766| GV_BUDAT "결제일자 + 767| SPACE. "G/L계정 + 768| WHEN '2'. + 769| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 770| * 발생취소구분에따라.. + 771| IF GT_Z0060_S-GUBUN EQ C_N. + 772| LV_NEWBS = '40'. + 773| LV_NEWBS2 = '15'. + 774| ELSE. + 775| LV_NEWBS = '50'. + 776| LV_NEWBS2 = '05'. + 777| ENDIF. + 778| * 전표 아이템_1 + 779| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 780| GT_Z0080-HKONT "결제유형계정 + 781| GT_Z0060_S-DMBTR "금액 + 782| GV_BUDAT "지정-결제일자 + 783| SPACE. "GL계정 + 784| * 전표 아이템_2 + 785| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 786| GT_Z0060_S-KUNNR2 "지점고객 + 787| GT_Z0060_S-DMBTR "금액 + 788| GT_Z0060_S-RCDAT "지정-접수일자 + 789| GT_Z0060_S-HKONT. "채권채무계정 + 790| ENDCASE. +``` + +- **EN**: Cash payment: builds G/L line on the payment-type account against down-payment account (advance) or branch customer (collection) with keys 40/50 or 40/15, swapped for cancellations. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 현금 결제, 선수금, 수금, 결제유형계정, 지점고객 +- English: Cash Payment, Down Payment, Incoming Payment, G/L Line +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L743-L790` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C2` + +#### [calculation] 가상계좌 결제(PTYPE 03)에서 현금과 동일하게 결제유형계정 40과 선수금계정 50(선수금) 또는 지점고객 15(수금) 라인을 발생/취소 구분에 따라 생성한다. + +```abap + 791| WHEN '03'. "가상계좌 + 792| CASE GT_Z0060_S-PFLAG. + 793| WHEN '1'. + 794| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 795| * 발생취소구분에따라.. + 796| IF GT_Z0060_S-GUBUN EQ C_N. + 797| LV_NEWBS = '40'. + 798| LV_NEWBS2 = '50'. + 799| ELSE. + 800| LV_NEWBS = '50'. + 801| LV_NEWBS2 = '40'. + 802| ENDIF. + 803| * 전표 아이템_1 + 804| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 805| GT_Z0080-HKONT "결제유형계정 + 806| GT_Z0060_S-DMBTR "금액 + 807| GV_BUDAT "지정-결제일자 + 808| SPACE. "GL계정 + 809| * 전표 아이템_2 + 810| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 811| GV_HKONT "선수금계정 + 812| GT_Z0060_S-DMBTR "금액 + 813| GV_BUDAT "결제일자 + 814| SPACE. "GL계정 + 815| WHEN '2'. + 816| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 817| * 발생취소구분에따라.. + 818| IF GT_Z0060_S-GUBUN EQ C_N. + 819| LV_NEWBS = '40'. + 820| LV_NEWBS2 = '15'. + 821| ELSE. + 822| LV_NEWBS = '50'. + 823| LV_NEWBS2 = '05'. + 824| ENDIF. + 825| * 전표 아이템_1 + 826| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 827| GT_Z0080-HKONT "결제유형계정 + 828| GT_Z0060_S-DMBTR "금액 + 829| GV_BUDAT "지정-결제일자 + 830| SPACE. "GL계정 + 831| * 전표 아이템_2 + 832| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 833| GT_Z0060_S-KUNNR2 "지점고객 + 834| GT_Z0060_S-DMBTR "금액 + 835| GT_Z0060_S-RCDAT "지정-접수일자 + 836| GT_Z0060_S-HKONT. "채권채무계정 + 837| ENDCASE. +``` + +- **EN**: Virtual account payment: same pattern as cash, G/L payment-type account line against down-payment account or branch customer with 40/50 or 40/15 keys. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 가상계좌, 선수금, 수금, 전기키 +- English: Virtual Account, Down Payment, Incoming Payment +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L791-L837` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C3` + +#### [calculation] 본지점수금(PTYPE 04)에서 결제유형계정 40과 선수금계정 50(선수금) 또는 지점고객 15(수금) 라인을 발생/취소 구분에 따라 생성한다. + +```abap + 838| WHEN '04'. "본지점수금 + 839| CASE GT_Z0060_S-PFLAG. + 840| WHEN '1'. + 841| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 842| * 발생취소구분에따라.. + 843| IF GT_Z0060_S-GUBUN EQ C_N. + 844| LV_NEWBS = '40'. + 845| LV_NEWBS2 = '50'. + 846| ELSE. + 847| LV_NEWBS = '50'. + 848| LV_NEWBS2 = '40'. + 849| ENDIF. + 850| * 전표 아이템_1 + 851| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 852| GT_Z0080-HKONT "결제유형금계정 + 853| GT_Z0060_S-DMBTR "금액 + 854| GV_BUDAT "지정-결제일자 + 855| SPACE. "GL계정 + 856| * 전표 아이템_2 + 857| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 858| GV_HKONT "선수금계정 + 859| GT_Z0060_S-DMBTR "금액 + 860| GV_BUDAT "결제일자 + 861| SPACE. "G/L계정 + 862| WHEN '2'. + 863| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 864| * 발생취소구분에따라.. + 865| IF GT_Z0060_S-GUBUN EQ C_N. + 866| LV_NEWBS = '40'. + 867| LV_NEWBS2 = '15'. + 868| ELSE. + 869| LV_NEWBS = '50'. + 870| LV_NEWBS2 = '05'. + 871| ENDIF. + 872| * 전표 아이템_1 + 873| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 874| GT_Z0080-HKONT "결제유형계정 + 875| GT_Z0060_S-DMBTR "금액 + 876| GV_BUDAT "지정-결제일자 + 877| SPACE. "GL계정 + 878| * 전표 아이템_2 + 879| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 880| GT_Z0060_S-KUNNR2 "지점고객 + 881| GT_Z0060_S-DMBTR "금액 + 882| GT_Z0060_S-RCDAT "지정-접수일자 + 883| GT_Z0060_S-HKONT. "채권채무계정 + 884| ENDCASE. +``` + +- **EN**: Head-office/branch collection: builds payment-type G/L line against down-payment account or branch customer with 40/50 or 40/15 keys, reversed for cancellations. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 본지점수금, 선수금, 수금, 전기키 +- English: Intercompany Collection, Down Payment, Incoming Payment +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L838-L884` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C4` + +#### [calculation] 하이마트 적립금/상품권 결제(PTYPE 06/08)에서 결제유형계정 40과 선수금계정 50(선수금) 또는 지점고객 15(수금) 라인을 발생/취소 구분에 따라 생성한다. + +```abap + 886| WHEN '06' OR '08'. "하이마트적립금/하이마트상품권 + 887| CASE GT_Z0060_S-PFLAG. + 888| WHEN '1'. + 889| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 890| * 발생취소구분에따라.. + 891| IF GT_Z0060_S-GUBUN EQ C_N. + 892| LV_NEWBS = '40'. + 893| LV_NEWBS2 = '50'. + 894| ELSE. + 895| LV_NEWBS = '50'. + 896| LV_NEWBS2 = '40'. + 897| ENDIF. + 898| * 전표 아이템_1 + 899| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 900| GT_Z0080-HKONT "결제유형계정 + 901| GT_Z0060_S-DMBTR "금액 + 902| GV_BUDAT "지정-결제일자 + 903| SPACE. "GL계정 + 904| * 전표 아이템_2 + 905| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 906| GV_HKONT "선수금계정 + 907| GT_Z0060_S-DMBTR "금액 + 908| GV_BUDAT "결제일자 + 909| SPACE. "G/L계정 + 910| WHEN '2'. + 911| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 912| * 발생취소구분에따라.. + 913| IF GT_Z0060_S-GUBUN EQ C_N. + 914| LV_NEWBS = '40'. + 915| LV_NEWBS2 = '15'. + 916| ELSE. + 917| LV_NEWBS = '50'. + 918| LV_NEWBS2 = '05'. + 919| ENDIF. + 920| + 921| * 전표 아이템_1 + 922| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 923| GT_Z0080-HKONT "결제유형계정 + 924| GT_Z0060_S-DMBTR "금액 + 925| GV_BUDAT "지정-결제일자 + 926| SPACE. "GL계정 + 927| * 전표 아이템_2 + 928| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 929| GT_Z0060_S-KUNNR2 "지점고객 + 930| GT_Z0060_S-DMBTR "금액 + 931| GT_Z0060_S-RCDAT "지정-접수일자 + 932| GT_Z0060_S-HKONT. "채권채무계정 + 933| ENDCASE. +``` + +- **EN**: Store points/gift certificate payment: builds payment-type G/L line against down-payment account or branch customer with 40/50 or 40/15 keys. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 적립금, 상품권, 선수금, 수금, 전기키 +- English: Loyalty Points, Gift Certificate, Down Payment, Incoming Payment +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L886-L933` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C5` + +#### [calculation] 롯데멤버스포인트/타사상품권(PTYPE 07/09)은 카드와 같이 고객 04와 선수금계정 50(선수금) 또는 지점고객 15(수금) 라인을 만들고 수금 건은 MAKE_BSEG_SP 전표분할 라인을 추가한다. + +```abap + 934| WHEN '07' OR '09'. "롯데맴버스포인트 / 타사상품권 + 935| CASE GT_Z0060_S-PFLAG. + 936| WHEN '1'. + 937| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 938| * 발생취소구분에따라.. + 939| IF GT_Z0060_S-GUBUN EQ C_N. + 940| LV_NEWBS = '04'. + 941| LV_NEWBS2 = '50'. + 942| ELSE. + 943| LV_NEWBS = '14'. + 944| LV_NEWBS2 = '40'. + 945| ENDIF. + 946| * 전표 아이템_1 + 947| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 948| GT_Z0060_S-KUNNR "카드고객 + 949| GT_Z0060_S-DMBTR "금액 + 950| GV_BUDAT "지정 + 951| GT_Z0080-HKONT. "결제유형계정 + 952| * 전표 아이템_2 + 953| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 954| GV_HKONT "선수금계정 + 955| GT_Z0060_S-DMBTR "금액 + 956| GV_BUDAT "결제일자 + 957| SPACE. "G/L계정 + 958| WHEN '2'. + 959| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 960| * 발생취소구분에따라.. + 961| IF GT_Z0060_S-GUBUN EQ C_N. + 962| LV_NEWBS = '04'. + 963| LV_NEWBS2 = '15'. + 964| ELSE. + 965| LV_NEWBS = '14'. + 966| LV_NEWBS2 = '05'. + 967| ENDIF. + 968| * 전표 아이템_1 + 969| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 970| GT_Z0060_S-KUNNR "지점고객 + 971| GT_Z0060_S-DMBTR "금액 + 972| GV_BUDAT "지정 + 973| GT_Z0080-HKONT. "결제유형계정 + 974| * 전표 아이템_2 + 975| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 976| GT_Z0060_S-KUNNR2 "지점고객 + 977| GT_Z0060_S-DMBTR "금액 + 978| GT_Z0060_S-RCDAT "지정-접수일자 + 979| GT_Z0060_S-HKONT. "채권채무계정 + 980| * 전표분할계정 + 981| PERFORM MAKE_BSEG_SP. + 982| + 983| ENDCASE. +``` + +- **EN**: Third-party points/gift certificates: customer line with key 04 against down-payment account or branch customer (15), reversed for cancellations, plus document split lines on collection. +- 호출(파서): MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG, MAKE_BSEG_SP +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 멤버스포인트, 타사상품권, 카드고객, 전표분할, 전기키 +- English: Membership Points, Gift Certificate, Customer Line, Document Split +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080), [`GV_HKONT`](#decl-zfir0031top-77-gv_hkont) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L934-L983` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C6` + +#### [calculation] 선수금대체(PTYPE 10)의 수금(PFLAG 2)은 매출일자를 전기일로 하여 결제유형계정 40과 지점고객 17(취소 시 50/07) 전기키로 선수금을 채권과 상계하는 라인을 만든다(GT_Z0060 헤더라인을 참조). + +```abap + 986| WHEN '10'. "선수금대체 + 987| CASE GT_Z0060_S-PFLAG. + 988| WHEN '1'. + 989| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 990| WHEN '2'. + 991| GV_BUDAT = GT_Z0060-SADAT. "매출일자 + 992| * 발생취소구분에따라.. + 993| IF GT_Z0060-GUBUN EQ C_N. + 994| LV_NEWBS = '40'. + 995| LV_NEWBS2 = '17'. + 996| ELSE. + 997| LV_NEWBS = '50'. + 998| LV_NEWBS2 = '07'. + 999| ENDIF. + 1000| * 전표 아이템_1 + 1001| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1002| GT_Z0080-HKONT "결제유형계정 + 1003| GT_Z0060-DMBTR "금액 + 1004| GT_Z0060-PYDAT "지정-결제일자 + 1005| SPACE. "GL계정 + 1006| * 전표 아이템_2 + 1007| PERFORM MAKE_BSEG USING LV_NEWBS2 "전기키 + 1008| GT_Z0060-KUNNR2 "지점고객 + 1009| GT_Z0060-DMBTR "금액 + 1010| GT_Z0060-RCDAT "지정-접수일자 + 1011| GT_Z0060-HKONT. "채권채무계정 + 1012| ENDCASE. +``` + +- **EN**: Down-payment transfer: on collection, posts payment-type account (40) against branch customer with special G/L key 17 (07 for cancellation) using the sales date as posting date. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0080 +- 업무 키워드: 선수금대체, 특별 G/L, 채권 상계, 매출일자 +- English: Down Payment Transfer, Special G/L Indicator, Customer Clearing +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-691-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L986-L1012` · confidence 0.8 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C7` + +#### [calculation] 매출(PTYPE 90)은 매출일자를 전기일로 하여 지점고객 채권 라인(01, 취소 11)을 만들고 MAKE_BSEG_TX로 매출·부가세 라인을 추가한다. + +```abap + 1013| WHEN '90'. "매출 + 1014| GV_BUDAT = GT_Z0060_S-SADAT. "매출일자 + 1015| * 발생취소구분에따라.. + 1016| IF GT_Z0060_S-GUBUN EQ C_N. + 1017| LV_NEWBS = '01'. + 1018| ELSE. + 1019| LV_NEWBS = '11'. + 1020| ENDIF. + 1021| * 전표 아이템_1 + 1022| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1023| GT_Z0060_S-KUNNR2 "지점고객 + 1024| GT_Z0060_S-DMBTR "금액 + 1025| GT_Z0060_S-RCDAT "지정-접수일자 + 1026| GT_Z0060_S-HKONT. "채권채무계정 + 1027| * 전표 아이템_2&3 + 1028| PERFORM MAKE_BSEG_TX. +``` + +- **EN**: Sales: builds the branch-customer receivable line (key 01, or 11 for credit memo) and the revenue/VAT lines via MAKE_BSEG_TX. +- 호출(파서): MAKE_BSEG, MAKE_BSEG_TX +- SAP 객체: BBSEG +- 업무 키워드: 매출 전표, 고객 채권, 매출 부가세 라인, 전기키 01/11 +- English: Customer Invoice, Receivable, Revenue Line, VAT Line +- 정의부(복사 시 함께 필요): [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-690-lv_newbs) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1013-L1028` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B01#C8` + +### FORM MAKE_BSEG — `ZFIR0031F01` L1171-L1212 (42줄) + +*전기키·계정·금액·전기일·채권채무계정을 받아 BBSEG 배치입력 아이템 한 줄을 만들며, B53은 통신사 코드를 지정에 넣고 판촉비 계정은 코스트센터, G/L 전기키는 손익센터를 채우고 취소 건은 마이너스 전기 지시자를 켜는 FORM이다.* + +> 이 unit 의 조각 1개가 29/42줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 거래유형 B53이면 지정(ZUONR)에 통신사(KUNNR3), 아니면 전기일을 넣고 전기키·계정·조정계정·금액·적요를 채우며, 판촉비 계정(0053397913/15)은 코스트센터를, 전기키 40/50은 손익센터를 부여하고 취소(R) 건은 XNEGP를 설정해 BBSEG에 추가한다. + +```abap + 1182| LV_NEWKO = P_NEWKO. + 1183| IF GT_Z0060_S-BTYPE EQ 'B53'. "지정 - 통신사 값.. + 1184| LV_ZUONR = GT_Z0060_S-KUNNR3. + 1185| ELSE. + 1186| LV_ZUONR = P_BUDAT. + 1187| ENDIF. + 1188| GT_BBSEG-NEWBS = P_NEWBS. "전기키 + 1189| GT_BBSEG-NEWKO = LV_NEWKO. "계정 + 1190| GT_BBSEG-HKONT = P_HKONT. + 1191| GT_BBSEG-WRBTR = P_WRBTR. "금액 + 1192| GT_BBSEG-ZUONR = LV_ZUONR. "지정 + 1193| GT_BBSEG-SGTXT = GT_Z0060_S-SGTXT. "적요 + 1194| * GT_BBSEG-GSBER = GT_Z0060-GSBER. "사업영역 + 1195| + 1196| IF GT_Z0060_S-HKONT EQ '0053397913' OR + 1197| GT_Z0060_S-HKONT EQ '0053397915'. "판촉비계정 + 1198| GT_BBSEG-KOSTL = GT_Z0060_S-KOSTL. "코스트센터 + 1199| ENDIF. + 1200| + 1201| IF P_NEWBS EQ '40' OR P_NEWBS EQ '50'. + 1202| GT_BBSEG-PRCTR = GT_Z0060_S-PRCTR. + 1203| ENDIF. + 1204| + 1205| * 발생취소구분에따라.. + 1206| IF GT_Z0060_S-GUBUN EQ C_R. + 1207| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 1208| ENDIF. + 1209| + 1210| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds one BBSEG line item with posting key, account, reconciliation account, amount, assignment (carrier code for B53 else posting date), cost center for promotion expense accounts, profit center for G/L keys 40/50 and the negative posting indicator for reversals. +- SAP 객체: BBSEG, ZFIT0060 +- 업무 키워드: 전표 아이템 생성, 지정 필드, 코스트센터, 손익센터, 판촉비, 마이너스 전기 +- English: Line Item, Assignment ZUONR, Cost Center, Profit Center, Negative Posting, BBSEG +- 정의부(복사 시 함께 필요): [`LV_NEWKO`](#decl-zfir0031f01-1177-lv_newko), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`LV_ZUONR`](#decl-zfir0031f01-1178-lv_zuonr), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1182-L1210` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#MAKE_BSEG#C1` + +### FORM MAKE_BSEG_SP — `ZFIR0031F01` L1267-L1283 (17줄) + +*전표분할 계정으로 차변·대변 한 쌍을 만들어 손익센터 단위 분개를 맞춘다.* + +> 이 unit 의 조각 1개가 11/17줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 전표분할 전용 계정으로 전기키 50(대변)과 40(차변) 두 줄을 같은 총금액·손익센터로 생성해, 손익센터가 다른 라인 간 분개 균형을 맞추는 상계 쌍을 만든다. + +```abap + 1271| GT_BBSEG-NEWBS = '50'. "전기키 + 1272| GT_BBSEG-NEWKO = C_HKONT. "전표분할계정 + 1273| GT_BBSEG-WRBTR = GT_Z0060-DMBTR. "총금액 + 1274| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 1275| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 1276| + 1277| GT_BBSEG-NEWBS = '40'. "전기키 + 1278| GT_BBSEG-NEWKO = C_HKONT. "전표분할계정 + 1279| GT_BBSEG-WRBTR = GT_Z0060-DMBTR. "총금액 + 1280| GT_BBSEG-PRCTR = GT_Z0060-PRCTR. "손익센터 + 1281| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Creates an offsetting debit/credit pair (posting keys 40/50) on the document-splitting account with the same amount and profit center. +- SAP 객체: BBSEG, PRCTR, NEWBS, NEWKO +- 업무 키워드: 전표분할, 분할계정, 손익센터, 차변, 대변, 상계, 분개균형 +- English: document splitting, splitting account, profit center, debit, credit, offsetting entry +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_HKONT`](#decl-zfir0031top-89-c_hkont), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060`](#decl-zfir0031top-30-gt_z0060) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1271-L1281` · confidence 0.82 · `ZFIR0031#ZFIR0031F01#FORM#MAKE_BSEG_SP#C1` + +### FORM MAKE_BSEG_TX — `ZFIR0031F01` L1218-L1261 (44줄) + +*매출 전표의 수익 라인(총금액-부가세)과 부가세 라인(부가세계정·세금코드·공급가액)을 BBSEG에 만들고 취소 건은 마이너스 전기 지시자와 전기키 40으로 뒤집는 FORM이다.* + +> 이 unit 의 조각 2개가 36/44줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수익비용계정(HKONT2)에 총금액에서 부가세액을 뺀 공급가액을 대변(50)으로 놓고 사업장·손익센터·지정(매출일자)·적요를 채우며, 취소(R) 건은 XNEGP와 전기키 40으로 마이너스 전기한다. + +```abap + 1222| GT_BBSEG-NEWBS = '50'. "전기키 + 1223| GT_BBSEG-NEWKO = GT_Z0060_S-HKONT2. "수익비용계정 + 1224| GT_BBSEG-WRBTR = GT_Z0060_S-DMBTR - GT_Z0060_S-MWSTS. " 총금액 - 부가세액 + 1225| * GT_BBSEG-MWSKZ = C_MWSKZ. "세금코드 + 1226| GT_BBSEG-BUPLA = GT_Z0060_S-BUPLA. "사업장 + 1227| GT_BBSEG-PRCTR = GT_Z0060_S-PRCTR. "손익센터 + 1228| * GT_BBSEG-KOSTL = GT_Z0060-KOSTL. "코스트센터 + 1229| GT_BBSEG-ZUONR = GT_Z0060_S-SADAT. "매출일자 + 1230| GT_BBSEG-SGTXT = GT_Z0060_S-SGTXT. "적요 + 1231| *** 매출계정인 경우(004*) 오더입력 + 1232| ** IF GT_Z0060_S-HKONT2(3) EQ '004'. + 1233| ** GT_BBSEG-AUFNR = GT_Z0060_S-AUFNR. + 1234| ** ENDIF. + 1235| * 발생취소구분에따라.. + 1236| IF GT_Z0060_S-GUBUN EQ C_R. + 1237| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 1238| GT_BBSEG-NEWBS = '40'. "전기키 + 1239| ENDIF. + 1240| + 1241| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Creates the revenue line (amount net of VAT, posting key 50) with business place, profit center and assignment, using negative posting with key 40 for cancellations. +- SAP 객체: BBSEG +- 업무 키워드: 수익 라인, 공급가액, 손익센터, 사업장, 마이너스 전기 +- English: Revenue Line, Net Amount, Profit Center, Business Place, Negative Posting XNEGP +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1222-L1241` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#MAKE_BSEG_TX#C1` + +#### [calculation] 부가세계정(C_HKONT_TX)에 부가세액을 대변(50)으로, 공급가액(FWBAS)·세금코드(C_MWSKZ)·사업장·손익센터를 채운 부가세 라인을 만들고 취소 건은 XNEGP·전기키 40으로 뒤집는다. + +```abap + 1244| GT_BBSEG-NEWBS = '50'. "전기키 + 1245| GT_BBSEG-NEWKO = C_HKONT_TX. "부가세계정 + 1246| GT_BBSEG-WRBTR = GT_Z0060_S-MWSTS. "부가세액 + 1247| GT_BBSEG-FWBAS = GT_Z0060_S-HWBAS. "공급금액 + 1248| GT_BBSEG-MWSKZ = C_MWSKZ. "세금코드 + 1249| GT_BBSEG-BUPLA = GT_Z0060_S-BUPLA. "사업장 + 1250| GT_BBSEG-PRCTR = GT_Z0060_S-PRCTR. "손익센터 + 1251| GT_BBSEG-ZUONR = GT_Z0060_S-SADAT. "매출일자 + 1252| GT_BBSEG-SGTXT = GT_Z0060_S-SGTXT. "적요 + 1253| * 발생취소구분에따라.. + 1254| IF GT_Z0060_S-GUBUN EQ C_R. + 1255| GT_BBSEG-XNEGP = C_X. "마이너스전기지시자 + 1256| GT_BBSEG-NEWBS = '40'. "전기키 + 1257| ENDIF. + 1258| + 1259| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Creates the output VAT line on the tax G/L account with tax amount, tax base, tax code, business place and profit center, negated for cancellations. +- SAP 객체: BBSEG +- 업무 키워드: 부가세 라인, 세금코드, 공급가액, 부가세계정 +- English: Output Tax Line, Tax Code MWSKZ, Tax Base FWBAS, VAT +- 정의부(복사 시 함께 필요): [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_HKONT_TX`](#decl-zfir0031top-88-c_hkont_tx), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`C_MWSKZ`](#decl-zfir0031top-90-c_mwskz), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1244-L1259` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#MAKE_BSEG_TX#C2` + +### FORM PROCESS_B03 — `ZFIR0031F01` L1038-L1061 (24줄) + +*거래유형 B03(모바일판매_모바일상품)의 매출(PTYPE 90) 건에 대해 발생/취소 구분에 따라 전기키 01/11로 고객 채권 라인과 매출·부가세 라인을 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] PTYPE 90(매출)일 때 전기일을 매출일자(SADAT)로 두고 발생(N)은 전기키 01, 취소는 11로 정해 MAKE_BSEG로 지점고객 채권 라인을, MAKE_BSEG_TX로 매출·부가세 라인을 생성한다. + +```abap + 1042| CASE GT_Z0060_S-PTYPE. + 1043| WHEN '90'. "매출 + 1044| GV_BUDAT = GT_Z0060_S-SADAT. "매출일자 + 1045| * 발생취소구분에따라.. + 1046| IF GT_Z0060_S-GUBUN EQ C_N. + 1047| LV_NEWBS = '01'. + 1048| ELSE. + 1049| LV_NEWBS = '11'. + 1050| ENDIF. + 1051| * 전표 아이템_1 + 1052| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1053| GT_Z0060_S-KUNNR2 "지점고객 + 1054| GT_Z0060_S-DMBTR "금액 + 1055| GT_Z0060_S-RCDAT "지정-접수일자 + 1056| GT_Z0060_S-HKONT. "채권채무계정 + 1057| * 전표 아이템_2&3 + 1058| PERFORM MAKE_BSEG_TX. + 1059| ENDCASE. +``` + +- **EN**: For sales type 90, sets posting date from the sales date and posting key 01 (invoice) or 11 (credit memo) by cancel indicator, then builds the customer receivable line and the revenue/tax lines. +- 호출(파서): MAKE_BSEG, MAKE_BSEG_TX +- SAP 객체: BBSEG, ZFIT0060 +- 업무 키워드: 매출 전표, 전기키 결정, 발생 취소 구분, 고객 채권, 모바일판매 +- English: Posting Key, Customer Invoice, Credit Memo, Receivable, Sales Document +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-1039-lv_newbs) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1042-L1059` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B03#C1` + +### FORM PROCESS_B53 — `ZFIR0031F01` L1067-L1101 (35줄) + +*거래유형 B53(이통예수금)의 현금(PTYPE 02) 결제 중 PFLAG '2' 건에 대해 결제일자를 전기일로 하여 결제유형계정과 수익비용계정 간 G/L 대체 라인(40/50)을 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 29/35줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] PTYPE 02(현금)·PFLAG 2일 때 전기일을 결제일자(PYDAT)로 두고 발생은 40/50, 취소는 50/40 전기키로 결제유형계정(GT_Z0080-HKONT)과 수익비용계정(HKONT2) 라인을 MAKE_BSEG로 생성한다. + +```abap + 1071| CASE GT_Z0060_S-PTYPE. + 1072| WHEN '02'. "현금 + 1073| CASE GT_Z0060_S-PFLAG. + 1074| WHEN '1'. + 1075| WHEN '2'. + 1076| GV_BUDAT = GT_Z0060_S-PYDAT. "결제일자 + 1077| * 발생취소구분에따라.. + 1078| IF GT_Z0060_S-GUBUN EQ C_N. + 1079| LV_NEWBS = '40'. + 1080| LV_NEWBS2 = '50'. + 1081| ELSE. + 1082| LV_NEWBS = '50'. + 1083| LV_NEWBS2 = '40'. + 1084| ENDIF. + 1085| * 전표 아이템_1 + 1086| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1087| GT_Z0080-HKONT "결제유형계정 + 1088| GT_Z0060_S-DMBTR "금액 + 1089| GV_BUDAT "지정-결제일자 + 1090| SPACE. "GL계정 + 1091| * 전표 아이템_2 + 1092| PERFORM MAKE_BSEG USING LV_NEWBS2 + 1093| GT_Z0060_S-HKONT2 "수익비용계정 + 1094| GT_Z0060_S-DMBTR "금액 + 1095| GV_BUDAT "지정-통신사 + 1096| SPACE. "GL계정 + 1097| ENDCASE. + 1098| WHEN OTHERS. + 1099| ENDCASE. +``` + +- **EN**: For cash payment type 02 with flag 2, sets posting date to the payment date and builds two G/L lines (posting keys 40/50, swapped for reversal) between the payment-type account and the revenue/expense account. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0060, ZFIT0080 +- 업무 키워드: 이통예수금, 현금 결제, 결제일자, G/L 대체, 전기키 +- English: Deposit Received, Cash Payment, G/L Transfer Posting, Posting Key 40/50 +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-1068-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-1069-lv_newbs2), [`ZFIT0080`](#decl-zfir0031top-8-zfit0080), [`GT_Z0080`](#decl-zfir0031top-32-gt_z0080) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1071-L1099` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B53#C1` + +### FORM PROCESS_B55 — `ZFIR0031F01` L1107-L1137 (31줄) + +*거래유형 B55(이통대납금-가입비)의 매출(PTYPE 90) 건에 대해 발생/취소에 따라 전기키 31+40 또는 21+50으로 공급업체 채무 라인과 수익/비용 계정 라인을 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 25/31줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] PTYPE 90일 때 전기일을 매출일자로 두고 발생(N)은 31(대변 공급업체)/40(차변 G/L), 취소는 21/50 전기키를 정해 MAKE_BSEG로 거래처 채권채무 라인과 수익비용계정(HKONT2) 라인을 생성한다. + +```abap + 1111| CASE GT_Z0060_S-PTYPE. + 1112| WHEN '90'. "매출 + 1113| GV_BUDAT = GT_Z0060_S-SADAT. "매출일자 + 1114| * 발생취소구분에따라.. + 1115| IF GT_Z0060_S-GUBUN EQ C_N. + 1116| LV_NEWBS = '31'. + 1117| LV_NEWBS2 = '40'. + 1118| ELSE. + 1119| LV_NEWBS = '21'. + 1120| LV_NEWBS2 = '50'. + 1121| ENDIF. + 1122| * 전표 아이템_1 + 1123| PERFORM MAKE_BSEG USING LV_NEWBS "전기키 + 1124| GT_Z0060_S-KUNNR "거래처 + 1125| GT_Z0060_S-DMBTR "금액 + 1126| GV_BUDAT "지정-매출일자 + 1127| GT_Z0060_S-HKONT. "채권채무계정 + 1128| * 전표 아이템_2 + 1129| PERFORM MAKE_BSEG USING LV_NEWBS2 + 1130| GT_Z0060_S-HKONT2 "수익비용계정 + 1131| GT_Z0060_S-DMBTR "금액 + 1132| GV_BUDAT "지정-매출일자 + 1133| SPACE. "GL계정 + 1134| WHEN OTHERS. + 1135| ENDCASE. +``` + +- **EN**: For sales type 90 of the carrier subscription-fee case, derives vendor/G-L posting keys (31/40 or 21/50 for reversal) and builds the payable line and the revenue/expense line via MAKE_BSEG. +- 호출(파서): MAKE_BSEG, MAKE_BSEG +- SAP 객체: BBSEG, ZFIT0060 +- 업무 키워드: 이통대납금, 가입비, 전기키 결정, 공급업체 채무, 수익비용계정 +- English: Posting Key, Vendor Payable, G/L Account Line, Reversal Indicator +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GV_BUDAT`](#decl-zfir0031top-76-gv_budat), [`C_N`](#decl-zficom-221-c_n), [`LV_NEWBS`](#decl-zfir0031f01-1108-lv_newbs), [`LV_NEWBS2`](#decl-zfir0031f01-1109-lv_newbs2) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1111-L1135` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#PROCESS_B55#C1` + +### FORM MAKE_BKPF — `ZFIR0031F01` L1145-L1159 (15줄) + +*재전기할 인터페이스 건의 전표유형·회사코드·통화·거래내역과 전달받은 전기일/증빙일로 FB01 BDC용 전표 헤더(GT_BBKPF)를 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 9/15줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] T-Code FB01, 증빙일·전기일(P_BUDAT), 전표유형·회사코드·통화(ZFIT0060 건)와 거래내역 25자를 헤더텍스트로 채워 BBKPF 배치입력 헤더 레코드를 추가한다. + +```abap + 1149| GT_BBKPF-TCODE = 'FB01'. + 1150| GT_BBKPF-BLDAT = P_BUDAT. + 1151| GT_BBKPF-BUDAT = P_BUDAT. + 1152| GT_BBKPF-BLART = GT_Z0060_S-BLART. + 1153| GT_BBKPF-BUKRS = GT_Z0060_S-BUKRS. + 1154| GT_BBKPF-WAERS = GT_Z0060_S-WAERS. + 1155| GT_BBKPF-BKTXT = GT_Z0060_S-SGTXT(25). "거래내역 + 1156| + 1157| APPEND GT_BBKPF. +``` + +- **EN**: Fills the BBKPF batch-input header for FB01 with document/posting date, document type, company code, currency and header text from the AR interface record. +- SAP 객체: BBKPF, FB01, ZFIT0060 +- 업무 키워드: 전표 헤더 생성, 배치입력 헤더, 전기일, 전표유형 +- English: Document Header, BBKPF, FB01, Batch Input +- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1149-L1157` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#MAKE_BKPF#C1` + +### FORM BDC_TRANSACTION_FB01 — `ZFIR0031F01` L1289-L1357 (69줄) + +*만들어 둔 BBKPF/BBSEG로 Z_FI_DOCUMENT_POSTING(FB01 BDC)을 호출해 전표를 전기하고 성공 시 전표번호·성공 상태, 실패 시 오류 메시지 텍스트를 이력(GT_Z0060_S)과 재전송 결과(GT_RESULT)에 기록하는 FORM이다.* + +> 이 unit 의 조각 2개가 63/69줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 모드와 헤더(GT_BBKPF)·아이템(GT_BBSEG)을 넘겨 Z_FI_DOCUMENT_POSTING으로 FB01 전표를 전기하고, 전표번호가 반환되면 연도·전표번호와 성공(S) 상태를, 없으면 오류(E) 상태를 이력 레코드에 설정한다. + +```abap + 1293| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 1294| EXPORTING + 1295| I_BDC_MODE = GV_MODE + 1296| * I_BDC_MODE = 'A' + 1297| I_MESSAGE = SPACE + 1298| IMPORTING + 1299| E_BELNR = GV_BELNR + 1300| E_GJAHR = GV_GJAHR + 1301| E_BUKRS = GV_BUKRS + 1302| TABLES + 1303| T_BBKPF = GT_BBKPF + 1304| T_BBSEG = GT_BBSEG + 1305| T_MESSTAB = GT_FIMSG. + 1306| + 1307| IF GV_BELNR NE SPACE. + 1308| GT_Z0060_S-GJAHR = GV_GJAHR. + 1309| GT_Z0060_S-BELNR = GV_BELNR. + 1310| GT_Z0060_S-STATS = C_S. + 1311| ELSE. + 1312| GT_Z0060_S-STATS = C_E. +``` + +- **EN**: Posts the FI document through Z_FI_DOCUMENT_POSTING (FB01 batch input) with BBKPF/BBSEG tables and sets document number and status S, or status E when no document was created. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, FB01, BBKPF, BBSEG +- 업무 키워드: 전표 전기, BDC 전기, 전표번호 반환, 처리 상태 +- English: Document Posting, Batch Input, FB01, BBKPF, BBSEG +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`C_S`](#decl-zficom-226-c_s), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1293-L1312` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#BDC_TRANSACTION_FB01#C1` + +#### [fm_call] BDC 메시지 테이블에서 E 또는 A 타입 메시지를 찾아 MESSAGE_TEXT_BUILD로 오류 문장을 만들어 이력 메시지에 넣고, 처리 일시·사용자와 전표번호·상태·메시지를 재전송용 GT_RESULT에 채운다. + +```abap + 1313| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 1314| IF SY-SUBRC <> 0. + 1315| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 1316| ENDIF. + 1317| IF GT_FIMSG IS INITIAL. + 1318| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 1319| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 1320| READ TABLE GT_MESS INDEX GV_INDEX. + 1321| IF SY-SUBRC EQ 0. + 1322| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1323| EXPORTING + 1324| MSGID = GT_FIMSG-MSGID + 1325| MSGNR = GT_FIMSG-MSGNO + 1326| MSGV1 = GT_FIMSG-MSGV1 + 1327| MSGV2 = GT_FIMSG-MSGV2 + 1328| MSGV3 = GT_FIMSG-MSGV3 + 1329| MSGV4 = GT_FIMSG-MSGV4 + 1330| IMPORTING + 1331| MESSAGE_TEXT_OUTPUT = GT_Z0060_S-MESSG. + 1332| ENDIF. + 1333| ELSE. + 1334| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1335| EXPORTING + 1336| MSGID = GT_FIMSG-MSGID + 1337| MSGNR = GT_FIMSG-MSGNO + 1338| MSGV1 = GT_FIMSG-MSGV1 + 1339| MSGV2 = GT_FIMSG-MSGV2 + 1340| MSGV3 = GT_FIMSG-MSGV3 + 1341| MSGV4 = GT_FIMSG-MSGV4 + 1342| IMPORTING + 1343| MESSAGE_TEXT_OUTPUT = GT_Z0060_S-MESSG. + 1344| ENDIF. + 1345| ENDIF. + 1346| + 1347| * 로그 + 1348| GT_Z0060_S-UDATE = SY-DATUM. + 1349| GT_Z0060_S-UTIME = SY-UZEIT. + 1350| GT_Z0060_S-UNAME = SY-UNAME. + 1351| * 재전송 + 1352| GT_RESULT-BELNR = GT_Z0060_S-BELNR. + 1353| GT_RESULT-GJAHR = GT_Z0060_S-GJAHR. + 1354| GT_RESULT-STATS = GT_Z0060_S-STATS. + 1355| GT_RESULT-MESSG = GT_Z0060_S-MESSG. +``` + +- **EN**: Extracts the error/abort BDC message, builds its text with MESSAGE_TEXT_BUILD into the history message field, stamps user/date/time and fills the return result (GT_RESULT) for resending. +- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, ZFIT0060 +- 업무 키워드: 오류 메시지 생성, BDC 메시지, 처리 로그, 재전송 결과 +- English: Message Text, BDC Message Table, Error Handling, Result Return +- 정의부(복사 시 함께 필요): [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s), [`GT_RESULT`](#decl-zfir0031top-33-gt_result) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1313-L1355` · confidence 0.85 · `ZFIR0031#ZFIR0031F01#FORM#BDC_TRANSACTION_FB01#C2` + +### FORM SEND_AR — `ZFIR0031F01` L1363-L1411 (49줄) + +*재전기 결과를 인터페이스 공통키(UNQID)와 함께 ZFIT0060에 반영하고 RFC Z_FI_SAVE_AR_RETURN으로 원 시스템에 처리 상태를 재전송하는 FORM이다.* + +> 이 unit 의 조각 2개가 38/49줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] Z_IF_GET_UNQKEY로 FI 모듈 인터페이스 공통로그 키(UNQID)를 발급받아 UNQID가 비어 있는 재처리 건에 채운 뒤 ZFIT0060 이력 테이블에 MODIFY한다. + +```abap + 1370| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 1371| EXPORTING + 1372| I_PGMID = SY-REPID + 1373| I_MODUL = 'FI' + 1374| IMPORTING + 1375| E_MESSG = LV_MESSG + 1376| ES_CMLOG = LS_CMLOG. + 1377| + 1378| IF LV_MESSG NE SPACE. + 1379| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 1380| LEAVE LIST-PROCESSING. + 1381| ELSE. + 1382| APPEND LS_CMLOG TO LT_CMLOG. + 1383| ENDIF. + 1384| + 1385| * CBO테이블 업데이트 + 1386| IF GT_Z0060_S[] IS NOT INITIAL. + 1387| GT_Z0060_S-UNQID = LS_CMLOG-UNQID. + 1388| MODIFY GT_Z0060_S TRANSPORTING UNQID + 1389| WHERE UNQID EQ SPACE. + 1390| + 1391| MODIFY ZFIT0060 FROM TABLE GT_Z0060_S. + 1392| ENDIF. +``` + +- **EN**: Obtains an interface unique key via Z_IF_GET_UNQKEY, assigns it to reprocessed records lacking one and updates the AR interface history table ZFIT0060. +- 테이블(파서): read - / write [ZFIT0060](/tables/ZFIT0060.md) +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZFIT0060, ZIFS0010 +- 업무 키워드: 인터페이스 고유키, 공통로그, 이력 갱신, 재전송 준비 +- English: Interface Unique Key, Common Log, CBO Table Update +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0031f01-1366-lv_messg), [`LS_CMLOG`](#decl-zfir0031f01-1365-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0031f01-1364-lt_cmlog), [`ZFIT0060`](#decl-zfir0031top-8-zfit0060), [`GT_Z0060_S`](#decl-zfir0031top-31-gt_z0060_s) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1370-L1392` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#SEND_AR#C1` + +#### [fm_call] RFC 목적지 ZFI01의 Z_FI_SAVE_AR_RETURN에 전표번호·상태·메시지 결과(GT_RESULT)와 공통로그를 보내 매출/입금 처리 결과를 원 시스템에 재전송하고 성공/실패 메시지를 표시한다. + +```abap + 1395| CALL FUNCTION 'Z_FI_SAVE_AR_RETURN' + 1396| DESTINATION 'ZFI01' + 1397| TABLES + 1398| IT_RESULT = GT_RESULT + 1399| IT_CMLOG = LT_CMLOG + 1400| EXCEPTIONS + 1401| SYSTEM_FAILURE = 1 + 1402| COMMUNICATION_FAILURE = 2 + 1403| OTHERS = 3. + 1404| IF SY-SUBRC EQ 0. + 1405| MESSAGE S000 WITH '성공적으로 저장하였습니다.'. + 1406| ELSE. + 1407| MESSAGE S000 WITH '데이터 재전송 중 오류가 발생했습니다.' + 1408| DISPLAY LIKE C_E. + 1409| ENDIF. +``` + +- **EN**: Sends the posting result (document number, status, message) back to the legacy AR system via RFC Z_FI_SAVE_AR_RETURN on destination ZFI01 and reports success or failure. +- 호출(파서): Z_FI_SAVE_AR_RETURN +- SAP 객체: Z_FI_SAVE_AR_RETURN, ZFI01 +- 업무 키워드: 결과 재전송, 매출 입금 인터페이스, RFC 호출, 상태 회신 +- English: RFC Destination, AR Interface, Result Return, Interface +- 정의부(복사 시 함께 필요): [`GT_RESULT`](#decl-zfir0031top-33-gt_result), [`LT_CMLOG`](#decl-zfir0031f01-1364-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0031/ZFIR0031F01#L1395-L1409` · confidence 0.9 · `ZFIR0031#ZFIR0031F01#FORM#SEND_AR#C2` + +## 정의부 (330건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0031CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0031cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfir0031cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0031TOP` (38건) + +#### TKA02 — tables · L8-L8 {#decl-zfir0031top-8-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0031top-8-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0060 — tables · L8-L8 {#decl-zfir0031top-8-zfit0060} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0070 — tables · L8-L8 {#decl-zfir0031top-8-zfit0070} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0080 — tables · L8-L8 {#decl-zfir0031top-8-zfit0080} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### GT_DATA — data · L14-L28 {#decl-zfir0031top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0060. +DATA: CICON LIKE ICON-ID, "상태아이콘 + GUBUN_T LIKE DD07T-DDTEXT, "발생/취소 + BTYPE_T LIKE DD07T-DDTEXT, "거래유형명 + PTYPE_T LIKE DD07T-DDTEXT, "결제유형명 + PFLAG_T LIKE DD07T-DDTEXT, "결제시점구분명 +* GSBER_T LIKE TGSBT-GTEXT, "사업영역명 + PRCTR_T LIKE CEPCT-LTEXT, "손익센터명 + AUFNR_T LIKE AUFK-KTEXT , "오더명 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + KUNNR_T LIKE KNA1-NAME1, "고객명 + KUNNR2_T LIKE KNA1-NAME1, "지점고객명 + END OF GT_DATA. +``` + +#### GT_Z0060 — data · L30-L30 {#decl-zfir0031top-30-gt_z0060} + +```abap +DATA: GT_Z0060 LIKE ZFIT0060 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0060_S — data · L31-L31 {#decl-zfir0031top-31-gt_z0060_s} + +```abap +DATA: + GT_Z0060_S LIKE ZFIT0060 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0080 — data · L32-L32 {#decl-zfir0031top-32-gt_z0080} + +```abap +DATA: + GT_Z0080 LIKE ZFIT0080 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RESULT — data · L33-L33 {#decl-zfir0031top-33-gt_result} + +```abap +DATA: + GT_RESULT LIKE ZFIS0081 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_TGSBT — data · L36-L39 {#decl-zfir0031top-36-gt_tgsbt} + +```abap +DATA: BEGIN OF GT_TGSBT OCCURS 0, + GSBER LIKE TGSBT-GSBER, + GTEXT LIKE TGSBT-GTEXT, + END OF GT_TGSBT. +``` + +#### GT_CEPCT — data · L41-L44 {#decl-zfir0031top-41-gt_cepct} + +```abap +DATA: BEGIN OF GT_CEPCT OCCURS 0, + PRCTR LIKE CEPCT-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPCT. +``` + +#### GT_AUFK — data · L46-L49 {#decl-zfir0031top-46-gt_aufk} + +```abap +DATA: BEGIN OF GT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + KTEXT LIKE AUFK-KTEXT, + END OF GT_AUFK. +``` + +#### GT_CSKT — data · L52-L55 {#decl-zfir0031top-52-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + LTEXT LIKE CSKT-LTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L57-L60 {#decl-zfir0031top-57-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_KNA1 — data · L62-L65 {#decl-zfir0031top-62-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_DOMAIN — data · L67-L71 {#decl-zfir0031top-67-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L73-L73 {#decl-zfir0031top-73-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0060-STATS. +``` + +#### GV_XNEGP — data · L75-L75 {#decl-zfir0031top-75-gv_xnegp} + +```abap +DATA: GV_XNEGP LIKE BSEG-XNEGP. +``` + +#### GV_BUDAT — data · L76-L76 {#decl-zfir0031top-76-gv_budat} + +```abap +DATA: + GV_BUDAT LIKE BKPF-BUDAT. +``` + +#### GV_HKONT — data · L77-L77 {#decl-zfir0031top-77-gv_hkont} + +```abap +DATA: + GV_HKONT LIKE BSEG-HKONT. +``` + +#### GS_STABLE — data · L80-L80 {#decl-zfir0031top-80-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L81-L81 {#decl-zfir0031top-81-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L82-L82 {#decl-zfir0031top-82-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L83-L83 {#decl-zfir0031top-83-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### C_HKONT_TX — constants · L88-L88 {#decl-zfir0031top-88-c_hkont_tx} + +```abap +CONSTANTS: C_HKONT_TX LIKE BSEG-HKONT VALUE '0021350101'. " 부가세 +``` + +#### C_HKONT — constants · L89-L89 {#decl-zfir0031top-89-c_hkont} + +```abap +CONSTANTS: + C_HKONT LIKE BSEG-HKONT VALUE '0091000040'. " 전표분할 +``` + +#### C_MWSKZ — constants · L90-L90 {#decl-zfir0031top-90-c_mwskz} + +```abap +CONSTANTS: + C_MWSKZ LIKE BSEG-MWSKZ VALUE 'A1'. +``` + +#### P_BUKRS — parameter · L96-L96 {#decl-zfir0031top-96-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### S_PRCDT — select-option · L97-L97 {#decl-zfir0031top-97-s_prcdt} + +```abap +SELECT-OPTIONS: S_PRCDT FOR ZFIT0060-PRC_DT OBLIGATORY. +``` + +#### S_PRCTR — select-option · L98-L98 {#decl-zfir0031top-98-s_prctr} + +```abap +SELECT-OPTIONS: + S_PRCTR FOR ZFIT0060-PRCTR OBLIGATORY. +``` + +#### S_GUBUN — select-option · L99-L99 {#decl-zfir0031top-99-s_gubun} + +```abap +SELECT-OPTIONS: + S_GUBUN FOR ZFIT0060-GUBUN NO INTERVALS. +``` + +#### S_BTYPE — select-option · L100-L100 {#decl-zfir0031top-100-s_btype} + +```abap +SELECT-OPTIONS: + S_BTYPE FOR ZFIT0060-BTYPE. +``` + +#### S_PTYPE — select-option · L101-L101 {#decl-zfir0031top-101-s_ptype} + +```abap +SELECT-OPTIONS: + S_PTYPE FOR ZFIT0060-PTYPE. +``` + +#### S_PFLAG — select-option · L102-L102 {#decl-zfir0031top-102-s_pflag} + +```abap +SELECT-OPTIONS: + S_PFLAG FOR ZFIT0060-PFLAG. +``` + +#### P_RA — parameter · L108-L108 {#decl-zfir0031top-108-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . "전체 +``` + +#### P_RS — parameter · L110-L110 {#decl-zfir0031top-110-p_rs} + +```abap +PARAMETERS: P_RS RADIOBUTTON GROUP G1. "완료 +``` + +#### P_RE — parameter · L112-L112 {#decl-zfir0031top-112-p_re} + +```abap +PARAMETERS: P_RE RADIOBUTTON GROUP G1. "오류 +``` + +### `ZFIR0031F01` (13건) + +#### LV_CNT — data · unit 로컬 · L567-L567 {#decl-zfir0031f01-567-lv_cnt} + +```abap + DATA: LV_CNT(3) TYPE N. +``` + +#### LV_NEWBS — data · unit 로컬 · L690-L690 {#decl-zfir0031f01-690-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L691-L691 {#decl-zfir0031f01-691-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1039-L1039 {#decl-zfir0031f01-1039-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1068-L1068 {#decl-zfir0031f01-1068-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L1069-L1069 {#decl-zfir0031f01-1069-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS — data · unit 로컬 · L1108-L1108 {#decl-zfir0031f01-1108-lv_newbs} + +```abap + DATA: LV_NEWBS LIKE BBSEG-NEWBS. +``` + +#### LV_NEWBS2 — data · unit 로컬 · L1109-L1109 {#decl-zfir0031f01-1109-lv_newbs2} + +```abap +DATA: + LV_NEWBS2 LIKE BBSEG-NEWBS. +``` + +#### LV_NEWKO — data · unit 로컬 · L1177-L1177 {#decl-zfir0031f01-1177-lv_newko} + +```abap + DATA: LV_NEWKO LIKE BBSEG-NEWKO. +``` + +#### LV_ZUONR — data · unit 로컬 · L1178-L1178 {#decl-zfir0031f01-1178-lv_zuonr} + +```abap +DATA: + LV_ZUONR LIKE BBSEG-ZUONR. +``` + +#### LT_CMLOG — data · unit 로컬 · L1364-L1364 {#decl-zfir0031f01-1364-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CMLOG — data · unit 로컬 · L1365-L1365 {#decl-zfir0031f01-1365-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LV_MESSG — data · unit 로컬 · L1366-L1366 {#decl-zfir0031f01-1366-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0031 L32-51 | 0 | ALV 초기 설정과 도메인 텍스트 추출 후 처리일자 선택조건 기본값을 당일로 설정하는 INITIALIZATION 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0031 L52-60 | 0 | 회사코드 권한을 검증(AUTHORITY_BUKRS)한 뒤 GET_DATA로 인터페이스 이력을 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZFIR0031 L61-67 | 0 | 조회 결과 GT_DATA가 비어 있으면 '데이터 없음' 메시지로 종료하고, 있으면 화면 0100을 호출하는 END-OF-SELECTION 이벤트이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0031CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DOMAIN | FORM | ZFIR0031F01 L9-59 | 2 | 발생취소구분·거래유형·결제유형·결제시점 도메인 텍스트를 DD07T에서 읽고 선수금 G/L 계정(ZFIT0080 PTYPE 10)을 GV_HKONT에 담는 FORM이다. | +| GET_DATA | FORM | ZFIR0031F01 L65-73 | 0 | 매출·입금 인터페이스 이력(GET_ZFIT0060)을 읽고 DISPLAY_DATA로 표시 데이터를 만드는 조회 총괄 FORM이다. | +| GET_ZFIT0060 | FORM | ZFIR0031F01 L79-177 | 3 | 처리상태 라디오버튼과 선택조건으로 ZFIT0060 매출·입금 인터페이스 이력을 조회하고 결제유형 계정매핑(ZFIT0080)과 코스트센터·손익센터·오더·사업장·고객 명칭 테이블을 미리 읽어 두는 FORM이다. | +| DISPLAY_DATA | FORM | ZFIR0031F01 L183-268 | 1 | ZFIT0060 이력에 처리상태 아이콘과 발생/취소·거래유형·결제유형·결제시점 도메인 텍스트, 손익센터·오더·코스트센터·사업장·고객·지점고객 명칭을 붙여 ALV 표시 테이블 GT_DATA를 만드는 FORM이다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0031F01 L274-306 | 0 | 화면 0100의 커스텀 컨테이너와 ALV 그리드 객체를 생성하고 핫스팟 이벤트 핸들러를 등록한 뒤 레이아웃·툴바 제외·필드카탈로그 설정 후 ALV를 표시하는 초기화 FORM이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0031F01 L312-322 | 0 | ALV 레이아웃(열 최적화, 행 선택모드, 줄무늬)을 설정하는 FORM이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0031F01 L328-343 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0031F01 L349-522 | 0 | 인터페이스 이력 ALV(GT_DATA)의 필드카탈로그를 생성해 상태아이콘·처리일자·거래유형·결제유형·고객·전표번호(핫스팟)·금액(통화 참조) 등 컬럼의 제목·위치·정렬 속성을 설정하는 FORM이다. | +| HOTSPOT_CLICK | FORM | ZFIR0031F01 L531-559 | 1 | ALV 핫스팟 클릭 시 고객/지점고객 코드는 FD03 고객 조회로, 전표번호는 FB03 전표 조회로 이동하는 FORM이다. | +| POSTING_DOCUMET | FORM | ZFIR0031F01 L565-683 | 4 | ALV에서 선택한 미전기 인터페이스 건을 검증·확인 후 결제유형별 계정매핑(ZFIT0080)과 거래유형(BTYPE)별 로직으로 전표 라인을 만들어 FB01 BDC로 전기하고 결과를 ZFIT0060 갱신·재전송(SEND_AR)하는 재전기 FORM이다. | +| PROCESS_B01 | FORM | ZFIR0031F01 L689-1032 | 8 | 상품매출(B01) 전표 생성 FORM의 1번째 창으로, 전기키 로컬 변수 선언만 있는 시작 구간이다. | +| PROCESS_B03 | FORM | ZFIR0031F01 L1038-1061 | 1 | 거래유형 B03(모바일판매_모바일상품)의 매출(PTYPE 90) 건에 대해 발생/취소 구분에 따라 전기키 01/11로 고객 채권 라인과 매출·부가세 라인을 만드는 FORM이다. | +| PROCESS_B53 | FORM | ZFIR0031F01 L1067-1101 | 1 | 거래유형 B53(이통예수금)의 현금(PTYPE 02) 결제 중 PFLAG '2' 건에 대해 결제일자를 전기일로 하여 결제유형계정과 수익비용계정 간 G/L 대체 라인(40/50)을 만드는 FORM이다. | +| PROCESS_B55 | FORM | ZFIR0031F01 L1107-1137 | 1 | 거래유형 B55(이통대납금-가입비)의 매출(PTYPE 90) 건에 대해 발생/취소에 따라 전기키 31+40 또는 21+50으로 공급업체 채무 라인과 수익/비용 계정 라인을 만드는 FORM이다. | +| MAKE_BKPF | FORM | ZFIR0031F01 L1145-1159 | 1 | 재전기할 인터페이스 건의 전표유형·회사코드·통화·거래내역과 전달받은 전기일/증빙일로 FB01 BDC용 전표 헤더(GT_BBKPF)를 만드는 FORM이다. | +| MAKE_BSEG | FORM | ZFIR0031F01 L1171-1212 | 1 | 전기키·계정·금액·전기일·채권채무계정을 받아 BBSEG 배치입력 아이템 한 줄을 만들며, B53은 통신사 코드를 지정에 넣고 판촉비 계정은 코스트센터, G/L 전기키는 손익센터를 채우고 취소 건은 마이너스 전기 지시자를 켜는 FORM이다. | +| MAKE_BSEG_TX | FORM | ZFIR0031F01 L1218-1261 | 2 | 매출 전표의 수익 라인(총금액-부가세)과 부가세 라인(부가세계정·세금코드·공급가액)을 BBSEG에 만들고 취소 건은 마이너스 전기 지시자와 전기키 40으로 뒤집는 FORM이다. | +| MAKE_BSEG_SP | FORM | ZFIR0031F01 L1267-1283 | 1 | 전표분할 계정으로 차변·대변 한 쌍을 만들어 손익센터 단위 분개를 맞춘다. | +| BDC_TRANSACTION_FB01 | FORM | ZFIR0031F01 L1289-1357 | 2 | 만들어 둔 BBKPF/BBSEG로 Z_FI_DOCUMENT_POSTING(FB01 BDC)을 호출해 전표를 전기하고 성공 시 전표번호·성공 상태, 실패 시 오류 메시지 텍스트를 이력(GT_Z0060_S)과 재전송 결과(GT_RESULT)에 기록하는 FORM이다. | +| SEND_AR | FORM | ZFIR0031F01 L1363-1411 | 2 | 재전기 결과를 인터페이스 공통키(UNQID)와 함께 ZFIT0060에 반영하고 RFC Z_FI_SAVE_AR_RETURN으로 원 시스템에 처리 상태를 재전송하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0031I01 L9-17 | 0 | 화면 0100 PAI에서 EXEC(전표 생성) 명령 시 POSTING_DOCUMET로 선택 건 재전기를 호출하는 사용자 명령 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0031O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0031O01 L21-35 | 0 | | diff --git a/wiki/programs/ZFIR0032.md b/wiki/programs/ZFIR0032.md new file mode 100644 index 0000000..459b36e --- /dev/null +++ b/wiki/programs/ZFIR0032.md @@ -0,0 +1,3544 @@ +--- +type: abap-program +title: "ZFIR0032 — 매출 및 입금내역 집계표" +description: "ZFIR0030 이 처리한 매출·입금 인터페이스 내역(ZFIT0060)을 손익센터 단위로 집계해 보여주는 집계표 리포트다. 거래유형별로 범위를 세팅해(SET_RANGES) 상품매출·모바일·이통 관련 건을 구분 집계하고, 손익센터·코스트센터·계정과목 텍스트를 붙여 ALV 로 출력한다. 건별 이력은 ZFIR0031, 집계는 이 화면이 담당한다." +resource: "abap://ZFIR0032" +tags: ["매출", "집계", "리포트", "인터페이스", "채권관리", "FI", "거래유형", "분류", "상품매출", "서비스매출", "이통예수금", "임대", "집계구분", "레인지", "번호범위", "채번", "일련번호", "키생성", "번호오브젝트", "권한체크"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:19+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CEPCT", "CSKT", "DD07T", "J_1BBRANCH", "LTDX", "SKAT", "T001", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0060", "ZFIT0160"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "0904cc34e971a92ae1336bde92174b710ba00b4832f58b84ad70828972d2aa09" +x-unit-count: 94 +x-chunk-count: 38 +x-declaration-count: 289 +--- + +## 업무 목적 + +ZFIR0030 이 처리한 매출·입금 인터페이스 내역(ZFIT0060)을 손익센터 단위로 집계해 보여주는 집계표 리포트다. 거래유형별로 범위를 세팅해(SET_RANGES) 상품매출·모바일·이통 관련 건을 구분 집계하고, 손익센터·코스트센터·계정과목 텍스트를 붙여 ALV 로 출력한다. 건별 이력은 ZFIR0031, 집계는 이 화면이 담당한다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 거래유형별 조회 범위를 세팅한다 (SET_RANGES) +4. 손익센터·처리상태 조건으로 매출·입금 내역을 추출한다 (GET_ZFIT0060) +5. 손익센터(CEPCT)·코스트센터(CSKT)·계정과목(SKAT) 텍스트를 붙여 집계 데이터를 만든다 (DISPLAY_DATA) +6. 정렬을 설정해 화면 0100 에 집계 ALV 로 출력한다 (SET_GRID_SORT → ALV_GRID_DISPLAY) + +## 핵심 내부테이블 + +- `GT_DATA` — 손익센터별 매출·입금 집계 (채움: GET_ZFIT0060 / 소비: DISPLAY_DATA) + +## 테이블 / 외부 호출 + +- read: CEPCT, CSKT, DD07T, J_1BBRANCH, LTDX, SKAT, T001, T007S, TKA02, USR01, V_USERNAME, ZFIT0060, ZFIT0160 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (38건 / unit 33개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0032F01` L9-L22 (14줄) + +*결제유형(ZDPTYPE) 도메인의 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 담는 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 로그인 언어의 활성 ZDPTYPE(결제유형) 도메인 값 텍스트를 조회해 집계표의 결제유형명 표시에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| APPENDING TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDPTYPE' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Selects fixed-value texts of domain ZDPTYPE (payment type) from DD07T for payment-type descriptions. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, ZDPTYPE +- 업무 키워드: 도메인 텍스트, 결제유형명 +- English: Domain Fixed Values, DD07T, Payment Type +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0032top-37-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0032/ZFIR0032F01#L13-L20` · confidence 0.95 · `ZFIR0032#ZFIR0032F01#FORM#GET_DOMAIN#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0032top-66-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0032/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0032#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM SET_RANGES — `ZFIR0032F01` L45-L70 (26줄) + +*집계표의 열 구분을 위해 거래유형 코드를 상품/서비스/이통예수금 세 그룹의 레인지로 분류한다.* + +> 이 unit 의 조각 1개가 20/26줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 거래유형 코드를 세 그룹으로 나눈 레인지를 만든다 — 상품유형(B01 상품매출·B03 모바일상품·B51 임대을), 서비스매출(B31~B37 구간), 이통예수금(B53). 집계표에서 이 분류가 열 구분이 된다. + +```abap + 49| R_BTYPE1-SIGN = R_BTYPE2-SIGN = R_BTYPE3-SIGN = C_I. + 50| R_BTYPE1-OPTION = R_BTYPE3-OPTION = C_EQ. + 51| R_BTYPE2-OPTION = C_BT. + 52| + 53| * 상품유형 + 54| R_BTYPE1-LOW = 'B01'. "상품매출 + 55| APPEND R_BTYPE1. + 56| R_BTYPE1-LOW = 'B03'. "모바일판매_모바일상품 + 57| APPEND R_BTYPE1. + 58| R_BTYPE1-LOW = 'B51'. "임대을 + 59| APPEND R_BTYPE1. + 60| + 61| * 서비스 매출 + 62| R_BTYPE2-LOW = 'B31'. + 63| R_BTYPE2-HIGH = 'B37'. + 64| APPEND R_BTYPE2. + 65| + 66| * 이통예수금 + 67| R_BTYPE3-LOW = 'B53'. "이통예수금 + 68| APPEND R_BTYPE3. +``` + +- **EN**: Builds three transaction-type ranges used as the summary report's column grouping: merchandise (B01/B03/B51), service revenue (B31-B37) and telecom deposits (B53). +- SAP 객체: ZFIT0060, BTYPE +- 업무 키워드: 거래유형, 분류, 상품매출, 서비스매출, 이통예수금, 임대, 집계구분, 레인지 +- English: transaction type, classification, merchandise sales, service revenue, telecom deposit, range table +- 정의부(복사 시 함께 필요): [`R_BTYPE1`](#decl-zfir0032top-44-r_btype1), [`R_BTYPE2`](#decl-zfir0032top-45-r_btype2), [`R_BTYPE3`](#decl-zfir0032top-46-r_btype3), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_BT`](#decl-zficom-246-c_bt) +- 위치: `abap://ZFIR0032/ZFIR0032F01#L49-L68` · confidence 0.88 · `ZFIR0032#ZFIR0032F01#FORM#SET_RANGES#C1` + +### FORM GET_ZFIT0060 — `ZFIR0032F01` L76-L121 (46줄) + +*처리상태 라디오버튼과 회사코드·처리일자·손익센터 조건으로 ZFIT0060 매출·입금 내역을 조회하고 회사코드·관리회계영역·손익센터명(CEPCT)을 읽는 FORM이다.* + +> 이 unit 의 조각 2개가 37/46줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 라디오버튼(전체/성공 S/오류 E·F)에 따라 처리상태 범위 R_STATS를 만들고 회사코드·처리일자(P_PRCDT)·손익센터 조건으로 ZFIT0060 인터페이스 내역을 조회한다. + +```abap + 80| R_STATS-SIGN = C_I. + 81| R_STATS-OPTION = C_EQ. + 82| CASE C_X. + 83| WHEN P_RA. + 84| WHEN P_RS. + 85| R_STATS-LOW = C_S. + 86| APPEND R_STATS. + 87| WHEN P_RE. + 88| R_STATS-LOW = C_E. + 89| APPEND R_STATS. + 90| R_STATS-LOW = C_F. + 91| APPEND R_STATS. + 92| ENDCASE. + 93| + 94| SELECT * + 95| INTO TABLE GT_Z0060 + 96| FROM ZFIT0060 + 97| WHERE BUKRS EQ P_BUKRS + 98| AND PRC_DT EQ P_PRCDT + 99| AND PRCTR IN S_PRCTR + 100| AND STATS IN R_STATS. +``` + +- **EN**: Builds a processing-status range from the radio buttons and selects AR interface records from ZFIT0060 by company code, processing date and profit center. +- 테이블(파서): read [ZFIT0060](/tables/ZFIT0060.md) / write - +- SAP 객체: ZFIT0060 +- 업무 키워드: 매출 입금 내역 조회, 처리상태, 처리일자, 손익센터 +- English: Interface Records, Processing Status, Profit Center, CBO Table +- 정의부(복사 시 함께 필요): [`R_STATS`](#decl-zfir0032top-43-r_stats), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_X`](#decl-zficom-231-c_x), [`P_RA`](#decl-zfir0032top-74-p_ra), [`P_RS`](#decl-zfir0032top-76-p_rs), [`C_S`](#decl-zficom-226-c_s), [`P_RE`](#decl-zfir0032top-78-p_re), [`C_E`](#decl-zficom-212-c_e), [`C_F`](#decl-zficom-213-c_f), [`ZFIT0060`](#decl-zfir0032top-7-zfit0060), [`GT_Z0060`](#decl-zfir0032top-28-gt_z0060) 외 3건 +- 위치: `abap://ZFIR0032/ZFIR0032F01#L80-L100` · confidence 0.95 · `ZFIR0032#ZFIR0032F01#FORM#GET_ZFIT0060#C1` + +#### [sql_select] 회사코드 T001과 관리회계영역 TKA02를 읽고 그 KOKRS로 조회 건의 손익센터명을 CEPCT에서 FOR ALL ENTRIES로 가져온다. + +```abap + 104| SELECT SINGLE * + 105| FROM T001 + 106| WHERE BUKRS EQ P_BUKRS. + 107| + 108| SELECT SINGLE * + 109| FROM TKA02 + 110| WHERE BUKRS EQ P_BUKRS. + 111| + 112| * 손익센터명 + 113| SELECT PRCTR KTEXT + 114| INTO TABLE GT_CEPCT + 115| FROM CEPCT + 116| FOR ALL ENTRIES IN GT_Z0060 + 117| WHERE SPRAS EQ SY-LANGU + 118| AND KOKRS EQ TKA02-KOKRS + 119| AND PRCTR EQ GT_Z0060-PRCTR. +``` + +- **EN**: Reads company code (T001) and controlling area (TKA02), then fetches profit center texts from CEPCT for the selected records. +- 테이블(파서): read [T001](/tables/T001.md), [TKA02](/tables/TKA02.md), [CEPCT](/tables/CEPCT.md) / write - +- SAP 객체: T001, TKA02, CEPCT +- 업무 키워드: 회사코드, 관리회계영역, 손익센터명 +- English: Company Code, Controlling Area, Profit Center Text +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0032top-66-p_bukrs), [`TKA02`](#decl-zfir0032top-7-tka02), [`GT_CEPCT`](#decl-zfir0032top-31-gt_cepct), [`ZFIT0060`](#decl-zfir0032top-7-zfit0060), [`GT_Z0060`](#decl-zfir0032top-28-gt_z0060) +- 위치: `abap://ZFIR0032/ZFIR0032F01#L104-L119` · confidence 0.9 · `ZFIR0032#ZFIR0032F01#FORM#GET_ZFIT0060#C2` + +### FORM DISPLAY_DATA — `ZFIR0032F01` L127-L219 (93줄) + +*ZFIT0060 매출·입금 내역을 손익센터·결제유형 단위로 선수금/수금 × 상품매출/서비스매출/이통예수금 금액 컬럼에 COLLECT 집계하고, 손익센터가 여러 개면 '지점 전체 합계' 라인을 추가하는 FORM이다.* + +> 이 unit 의 조각 2개가 83/93줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 손익센터 선택조건에 패턴 '*'(CP)이 있으면 여러 손익센터 조회로 보고 전체 합계 라인 생성 플래그 GV_ALL을 켠다. + +```abap + 134| READ TABLE S_PRCTR WITH KEY LOW = '*' + 135| OPTION = 'CP'. + 136| IF SY-SUBRC EQ 0. + 137| GV_ALL = C_X. + 138| ENDIF. +``` + +- **EN**: Sets the grand-total flag when the profit center select-option contains a wildcard pattern (multiple profit centers). +- 업무 키워드: 손익센터 범위 판정, 전체 합계 플래그 +- English: Profit Center, Select-Option Pattern, Grand Total +- 정의부(복사 시 함께 필요): [`S_PRCTR`](#decl-zfir0032top-68-s_prctr), [`GV_ALL`](#decl-zfir0032top-48-gv_all), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0032/ZFIR0032F01#L134-L138` · confidence 0.8 · `ZFIR0032#ZFIR0032F01#FORM#DISPLAY_DATA#C1` + +#### [aggregation] 내역 건마다 손익센터명(CEPCT)·결제유형명(ZDPTYPE 도메인)을 붙이고, 매출(PTYPE 90)은 수금으로 간주해 결제시점(선수금 1/수금 2)과 거래유형 범위(R_BTYPE1 상품매출 등)에 따라 AMT1~3(_P) 컬럼에 금액을 넣어 합계를 계산한 뒤 손익센터·결제유형 단위로 COLLECT하고, GV_ALL이면 'ZZZZZZZZZZ 지점 전체 합계' 라인에도 누적한다. + +```abap + 140| LOOP AT GT_Z0060. + 141| CLEAR: GT_DATA, LV_DMBTR. + 142| GT_DATA-PRCTR = GT_Z0060-PRCTR. + 143| GT_DATA-WAERS = GT_Z0060-WAERS. + 144| * 손익센터명 + 145| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0060-PRCTR. + 146| IF SY-SUBRC EQ 0. + 147| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 148| ENDIF. + 149| GT_DATA-PTYPE = GT_Z0060-PTYPE. + 150| * 결제유형명 + 151| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPTYPE' + 152| DOMVALUE_L = GT_Z0060-PTYPE. + 153| IF SY-SUBRC EQ 0. + 154| GT_DATA-PTYPE_T = GT_DOMAIN-DDTEXT. + 155| ENDIF. + 156| + 157| * 취소인 경우 - + 158| IF GT_Z0060-GUBUN EQ C_N. "발생 + 159| LV_DMBTR = GT_Z0060-DMBTR_C. + 160| ELSE. "취소 + 161| * LV_DMBTR = 0 - GT_Z0060-DMBTR_C. + 162| LV_DMBTR = GT_Z0060-DMBTR_C. + 163| ENDIF. + 164| * 결제유형이 '90' 매출인 경우 수금으로 간주.. + 165| IF GT_Z0060-PTYPE EQ '90'. + 166| GT_Z0060-PFLAG = C_2. + 167| ENDIF. + 168| + 169| * 결제 시점 + 170| CASE GT_Z0060-PFLAG. + 171| WHEN C_1. "선수금 + 172| * 상품매출 + 173| IF GT_Z0060-BTYPE IN R_BTYPE1. + 174| GT_DATA-AMT1_P = LV_DMBTR. + 175| * 서비스매출 + 176| ELSEIF + 177| GT_DATA-AMT2_P = LV_DMBTR. + 178| * 이통예수금 + 179| ELSEIF + 180| GT_DATA-AMT3_P = LV_DMBTR. + 181| ELSE. + 182| CONTINUE. + 183| ENDIF. + 184| WHEN C_2. "수금 + 185| * 상품매출 + 186| IF GT_Z0060-BTYPE IN R_BTYPE1. + 187| GT_DATA-AMT1 = LV_DMBTR. + 188| * 서비스매출 + 189| ELSEIF + 190| GT_DATA-AMT2 = LV_DMBTR. + 191| * 이통예수금 + 192| ELSEIF + 193| GT_DATA-AMT3 = LV_DMBTR. + 194| ELSE. + 195| CONTINUE. + 196| ENDIF. + 197| WHEN OTHERS. + 198| CONTINUE. + 199| ENDCASE. + 200| * 합계금액 + 201| GT_DATA-TOTAL = GT_DATA-AMT1_P + GT_DATA-AMT2_P + GT_DATA-AMT3_P + + 202| GT_DATA-AMT1 + GT_DATA-AMT2 + GT_DATA-AMT3. + 203| COLLECT GT_DATA. + 204| * 합계 + 205| IF GV_ALL EQ C_X. + 206| MOVE GT_DATA TO LT_DATA. + 207| LT_DATA-PRCTR = 'ZZZZZZZZZZ'. + 208| LT_DATA-PRCTR_T = '지점 전체 합계'. + 209| COLLECT LT_DATA. CLEAR LT_DATA. + 210| ENDIF. + 211| ENDLOOP. + 212| + 213| IF LT_DATA[] IS NOT INITIAL. + 214| APPEND LINES OF LT_DATA TO GT_DATA. + 215| ENDIF. + 216| + 217| SORT GT_DATA BY PRCTR. +``` + +- **EN**: Aggregates each interface record by profit center and payment type into advance/collection columns split by transaction-type range (merchandise, service, carrier deposit), computes the row total with COLLECT, and additionally accumulates an all-branch grand total line when multiple profit centers are selected. +- SAP 객체: ZFIT0060, CEPCT, ZDPTYPE +- 업무 키워드: 손익센터별 집계, 선수금, 수금, 상품매출, 서비스매출, 이통예수금, 전체 합계 +- English: Aggregation, Profit Center, Down Payment, Incoming Payment, COLLECT, Grand Total +- 정의부(복사 시 함께 필요): [`ZFIT0060`](#decl-zfir0032top-7-zfit0060), [`GT_Z0060`](#decl-zfir0032top-28-gt_z0060), [`GT_DATA`](#decl-zfir0032top-13-gt_data), [`LV_DMBTR`](#decl-zfir0032f01-129-lv_dmbtr), [`GT_CEPCT`](#decl-zfir0032top-31-gt_cepct), [`GT_DOMAIN`](#decl-zfir0032top-37-gt_domain), [`C_N`](#decl-zficom-221-c_n), [`C_2`](#decl-zficom-236-c_2), [`C_1`](#decl-zficom-235-c_1), [`R_BTYPE1`](#decl-zfir0032top-44-r_btype1), [`GV_ALL`](#decl-zfir0032top-48-gv_all), [`C_X`](#decl-zficom-231-c_x) 외 1건 +- 위치: `abap://ZFIR0032/ZFIR0032F01#L140-L217` · confidence 0.8 · `ZFIR0032#ZFIR0032F01#FORM#DISPLAY_DATA#C2` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0032/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0032/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0032top-66-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0032/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0032/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0032/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0032/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0032/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0032/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0032/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0032/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0032/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0032/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0032/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0032/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0032/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0032/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0032/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0032/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0032/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0032/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0032/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0032/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0032/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0032/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0032#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0032/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0032/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0032/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0032top-66-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0032/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0032top-66-p_bukrs) +- 위치: `abap://ZFIR0032/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0032#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0032/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0032#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0032F01` L301-L317 (17줄) + +*필드카탈로그를 만든 뒤 GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY로 손익센터별 매출·입금 집계 GT_DATA를 정렬·소계 설정과 함께 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 13/17줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외·정렬(GT_SORT, 손익센터 소계)과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 집계 테이블 GT_DATA를 ALV 그리드에 출력한다. + +```abap + 304| GV_VARI-REPORT = SY-REPID. + 305| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 306| EXPORTING + 307| I_STRUCTURE_NAME = 'GT_DATA' + 308| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 309| IS_LAYOUT = GV_LAYO + 310| IS_VARIANT = GV_VARI + 311| I_BUFFER_ACTIVE = C_X + 312| I_SAVE = C_A + 313| CHANGING + 314| IT_OUTTAB = GT_DATA[] + 315| IT_SORT = GT_SORT[] + 316| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the profit-center sales/collection summary GT_DATA in the ALV grid with sort/subtotal settings via SET_TABLE_FOR_FIRST_DISPLAY. +- 호출(파서): GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 집계 ALV 출력, 손익센터 소계, 정렬 +- English: ALV Grid, Subtotal, SET_TABLE_FOR_FIRST_DISPLAY +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0032top-54-gv_vari), [`GV_ALV_GRID`](#decl-zfir0032top-52-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0032top-53-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_DATA`](#decl-zfir0032top-13-gt_data), [`GT_SORT`](#decl-zfialv-86-gt_sort), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0032/ZFIR0032F01#L304-L316` · confidence 0.8 · `ZFIR0032#ZFIR0032F01#FORM#ALV_GRID_DISPLAY#C1` + +## 정의부 (303건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0032TOP` (24건) + +#### TKA02 — tables · L7-L7 {#decl-zfir0032top-7-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0040 — tables · L7-L7 {#decl-zfir0032top-7-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0060 — tables · L7-L7 {#decl-zfir0032top-7-zfit0060} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0070 — tables · L7-L7 {#decl-zfir0032top-7-zfit0070} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0080 — tables · L7-L7 {#decl-zfir0032top-7-zfit0080} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### GT_DATA — data · L13-L26 {#decl-zfir0032top-13-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0, + PRCTR LIKE ZFIT0060-PRCTR, "손익센터 + PRCTR_T LIKE CEPCT-LTEXT, "손익센터명 + PTYPE LIKE ZFIT0060-PTYPE, "결제유형 + PTYPE_T LIKE DD07T-DDTEXT, "결제유형명 + AMT1_P LIKE ZFIT0060-DMBTR_C, "상품매출-선수금 + AMT2_P LIKE ZFIT0060-DMBTR_C, "서비스매출-선수금 + AMT3_P LIKE ZFIT0060-DMBTR_C, "이통예수금-선수금 + AMT1 LIKE ZFIT0060-DMBTR_C, "상품매출-수금 + AMT2 LIKE ZFIT0060-DMBTR_C, "서비스매출-수금 + AMT3 LIKE ZFIT0060-DMBTR_C, "이통예수금-수금 + TOTAL LIKE ZFIT0060-DMBTR_C, "합계 + WAERS LIKE ZFIT0060-WAERS, "통화 + END OF GT_DATA. +``` + +#### GT_Z0060 — data · L28-L28 {#decl-zfir0032top-28-gt_z0060} + +```abap +DATA: GT_Z0060 LIKE ZFIT0060 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_CEPCT — data · L31-L34 {#decl-zfir0032top-31-gt_cepct} + +```abap +DATA: BEGIN OF GT_CEPCT OCCURS 0, + PRCTR LIKE CEPCT-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPCT. +``` + +#### GT_DOMAIN — data · L37-L41 {#decl-zfir0032top-37-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L43-L43 {#decl-zfir0032top-43-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0060-STATS. +``` + +#### R_BTYPE1 — ranges · L44-L44 {#decl-zfir0032top-44-r_btype1} + +```abap +RANGES: + R_BTYPE1 FOR ZFIT0060-BTYPE. " 상품매출 +``` + +#### R_BTYPE2 — ranges · L45-L45 {#decl-zfir0032top-45-r_btype2} + +```abap +RANGES: + R_BTYPE2 FOR ZFIT0060-BTYPE. " 서비스매출 +``` + +#### R_BTYPE3 — ranges · L46-L46 {#decl-zfir0032top-46-r_btype3} + +```abap +RANGES: + R_BTYPE3 FOR ZFIT0060-BTYPE. " 이통예수금 +``` + +#### GV_ALL — data · L48-L48 {#decl-zfir0032top-48-gv_all} + +```abap +DATA: GV_ALL(1) TYPE C. +``` + +#### GS_STABLE — data · L51-L51 {#decl-zfir0032top-51-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L52-L52 {#decl-zfir0032top-52-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L53-L53 {#decl-zfir0032top-53-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L54-L54 {#decl-zfir0032top-54-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L66-L66 {#decl-zfir0032top-66-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_PRCDT — parameter · L67-L67 {#decl-zfir0032top-67-p_prcdt} + +```abap +PARAMETERS: + P_PRCDT LIKE ZFIT0060-PRC_DT OBLIGATORY. +``` + +#### S_PRCTR — select-option · L68-L68 {#decl-zfir0032top-68-s_prctr} + +```abap +SELECT-OPTIONS: S_PRCTR FOR ZFIT0060-PRCTR OBLIGATORY. +``` + +#### P_RA — parameter · L74-L74 {#decl-zfir0032top-74-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . "전체 +``` + +#### P_RS — parameter · L76-L76 {#decl-zfir0032top-76-p_rs} + +```abap +PARAMETERS: P_RS RADIOBUTTON GROUP G1. "성공 +``` + +#### P_RE — parameter · L78-L78 {#decl-zfir0032top-78-p_re} + +```abap +PARAMETERS: P_RE RADIOBUTTON GROUP G1. "실패 +``` + +### `ZFIR0032F01` (2건) + +#### LT_DATA — data · unit 로컬 · L128-L128 {#decl-zfir0032f01-128-lt_data} + +```abap + DATA: LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE. "합계 +``` + +#### LV_DMBTR — data · unit 로컬 · L129-L129 {#decl-zfir0032f01-129-lv_dmbtr} + +```abap + DATA: LV_DMBTR LIKE ZFIT0060-DMBTR_C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0032 L30-45 | 0 | ALV 초기 설정과 도메인 텍스트 추출 후 처리일자 기본값을 전일로 설정하는 INITIALIZATION 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0032 L46-54 | 0 | 회사코드 권한을 검증(AUTHORITY_BUKRS)한 뒤 GET_DATA로 집계 데이터를 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZFIR0032 L55-61 | 0 | 집계 결과 GT_DATA가 비어 있으면 '데이터 없음' 메시지로 종료하고, 있으면 화면 0100을 호출하는 END-OF-SELECTION 이벤트이다. | +| GET_DOMAIN | FORM | ZFIR0032F01 L9-22 | 1 | 결제유형(ZDPTYPE) 도메인의 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 담는 FORM이다. | +| GET_DATA | FORM | ZFIR0032F01 L28-39 | 0 | 거래유형 범위 세팅(SET_RANGES) → 매출·입금 내역 추출(GET_ZFIT0060) → 집계 데이터 생성(DISPLAY_DATA) 순으로 호출하는 조회 총괄 FORM이다. | +| SET_RANGES | FORM | ZFIR0032F01 L45-70 | 1 | 집계표의 열 구분을 위해 거래유형 코드를 상품/서비스/이통예수금 세 그룹의 레인지로 분류한다. | +| GET_ZFIT0060 | FORM | ZFIR0032F01 L76-121 | 2 | 처리상태 라디오버튼과 회사코드·처리일자·손익센터 조건으로 ZFIT0060 매출·입금 내역을 조회하고 회사코드·관리회계영역·손익센터명(CEPCT)을 읽는 FORM이다. | +| DISPLAY_DATA | FORM | ZFIR0032F01 L127-219 | 2 | ZFIT0060 매출·입금 내역을 손익센터·결제유형 단위로 선수금/수금 × 상품매출/서비스매출/이통예수금 금액 컬럼에 COLLECT 집계하고, 손익센터가 여러 개면 '지점 전체 합계' 라인을 추가하는 FORM이다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0032F01 L225-255 | 0 | 화면 0100의 커스텀 컨테이너와 ALV 그리드 객체를 생성하고 레이아웃·툴바 제외·정렬·필드카탈로그 설정 후 집계 ALV를 표시하는 초기화 FORM이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0032F01 L261-271 | 0 | ALV 레이아웃(열 최적화, 행 선택모드, 줄무늬)을 설정하는 FORM이다. | +| SET_GRID_SORT | FORM | ZFIR0032F01 L277-295 | 0 | 집계 ALV의 정렬 기준을 손익센터(소계 포함)·손익센터명·결제유형 순으로 설정하는 FORM이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0032F01 L301-317 | 1 | 필드카탈로그를 만든 뒤 GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY로 손익센터별 매출·입금 집계 GT_DATA를 정렬·소계 설정과 함께 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0032F01 L323-406 | 0 | 집계 ALV(GT_DATA)의 필드카탈로그를 생성해 손익센터·결제유형·선수금/수금별 금액(AMT1~3, _P)·합계 컬럼의 제목·통화·위치 속성을 설정하는 FORM이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0032O01 L9-14 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0032O01 L20-34 | 0 | | diff --git a/wiki/programs/ZFIR0040.md b/wiki/programs/ZFIR0040.md new file mode 100644 index 0000000..6c91cf1 --- /dev/null +++ b/wiki/programs/ZFIR0040.md @@ -0,0 +1,4002 @@ +--- +type: abap-program +title: "ZFIR0040 — 비용 전표 Interface 이력 조회" +description: "외부 시스템에서 넘어온 비용 전표 연계 내역(CBO 테이블 ZFIT0090)을 전표일자·공급업체 조건으로 조회하는 리포트다. 편집 가능한 ALV 그리드로 내역을 보여주고 전표번호 클릭 시 FB03 으로 연결하며, POSTING_INTERFACE 계열로 전표 처리까지 이어갈 수 있다. ZFIR0020(매입채무)과 같은 프레임워크를 복사해 만든 자매 프로그램이다." +resource: "abap://ZFIR0040" +tags: ["인터페이스", "경비처리", "전표", "리포트", "FI", "비용전표", "경비", "인터페이스내역", "증빙일자", "거래일자", "공급업체", "취소플래그", "도메인텍스트", "공급업체명", "계정명", "계정과목표", "처리결과", "신호등", "기능코드", "화면 종료"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:20+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AENR", "DD07T", "LFA1", "SKAT", "T001", "ZFIT0090"] +x-tables-write: [] +x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FB03", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST", "STRING_REPLACE", "SX_OBJECT_CONVERT_OTF_PDF"] +x-code-hash: "4431e680210deb61118b80556b24324f9222ea3883881106223f9910b28d87e2" +x-unit-count: 121 +x-chunk-count: 50 +x-declaration-count: 201 +--- + +## 업무 목적 + +외부 시스템에서 넘어온 비용 전표 연계 내역(CBO 테이블 ZFIT0090)을 전표일자·공급업체 조건으로 조회하는 리포트다. 편집 가능한 ALV 그리드로 내역을 보여주고 전표번호 클릭 시 FB03 으로 연결하며, POSTING_INTERFACE 계열로 전표 처리까지 이어갈 수 있다. ZFIR0020(매입채무)과 같은 프레임워크를 복사해 만든 자매 프로그램이다. + +## 주 흐름 + +1. 선택화면 기본값 세팅과 화면 속성 조정 (SET_DYNP → LOOP_AT_SCREEN) +2. 내부 데이터 초기화 (INITIALIZE_DATA) +3. 전표일자·공급업체 조건으로 비용전표 연계 내역을 조회·가공한다 (PROCESS_DATA → SELECT_DATA) +4. 필드카탈로그를 구성해 편집 가능한 ALV 그리드로 화면 0100 에 출력한다 +5. 셀 변경·F4·더블클릭 이벤트를 처리한다 +6. 전표번호로 FB03 표준 조회를 호출한다 (CALL_FB03) + +## 핵심 내부테이블 + +- `GT_DATA` — 비용전표 연계 내역 (채움: SELECT_DATA / 소비: DISPLAY_ALV_LIST) + +## 테이블 / 외부 호출 + +- read: AENR, DD07T, LFA1, SKAT, T001, ZFIT0090 +- write: - +- 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FB03, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, POPUP_TO_SELECT_MONTH, POSTING_INTERFACE_END, POSTING_INTERFACE_START, REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_GRID_COMMENTARY_SET + +## 로직 조각 (50건 / unit 45개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_DYNP — `ZFIR0040F01` L24-L41 (18줄) + +*선택화면 초기화 시 회사코드 기본정보·회사명을 세팅하고 전표일자·전송일자 선택조건 기본값을 당일로 설정하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/18줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_COMPANY_BASE로 회사코드 기본정보와 회사명(P_BUTXT)을 채우고 전표일자(S_BLDAT)와 전송일자(S_TRDAT) 범위를 당일~당일로 기본 설정한다. + +```abap + 26| PERFORM SET_COMPANY_BASE USING P_BUKRS. + 27| P_BUTXT = GV_BUKRS_TXT. + 28| + 29| S_BLDAT-LOW = SY-DATUM. + 30| S_BLDAT-HIGH = SY-DATUM. + 31| S_BLDAT-OPTION = 'BT'. + 32| S_BLDAT-SIGN = 'I'. + 33| APPEND S_BLDAT. CLEAR : S_BLDAT. + 34| + 35| S_TRDAT-LOW = SY-DATUM. + 36| S_TRDAT-HIGH = SY-DATUM. + 37| S_TRDAT-OPTION = 'BT'. + 38| S_TRDAT-SIGN = 'I'. + 39| APPEND S_TRDAT. CLEAR : S_TRDAT. +``` + +- **EN**: Initializes company code base data and name, and defaults the document date and transfer date select-options to today. +- 호출(파서): SET_COMPANY_BASE +- SAP 객체: T001 +- 업무 키워드: 선택화면 기본값, 회사코드 정보, 전표일자, 전송일자 +- English: Selection Screen Default, Company Code, Document Date, Select-Option +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0040top-80-p_bukrs), [`GV_BUKRS_TXT`](#decl-zfi_common-50-gv_bukrs_txt), [`S_BLDAT`](#decl-zfir0040top-87-s_bldat), [`S_TRDAT`](#decl-zfir0040top-86-s_trdat) +- 선언을 못 찾은 이름: P_BUTXT (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0040/ZFIR0040F01#L26-L39` · confidence 0.8 · `ZFIR0040#ZFIR0040F01#FORM#SET_DYNP#C1` + +### FORM SET_COMPANY_BASE — `ZFI_COMMON` L209-L226 (18줄) + +*회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. + +```abap + 213| SELECT SINGLE * + 214| FROM T001 + 215| INTO L_T001 + 216| WHERE BUKRS = P_BUKRS. + 217| + 218| IF SY-SUBRC EQ 0. + 219| GV_WAERS = L_T001-WAERS. + 220| GV_KTOPL = L_T001-KTOPL. + 221| GV_SPRAS = L_T001-SPRAS. + 222| GV_WAERS = L_T001-WAERS. + 223| GV_BUKRS_TXT = L_T001-BUTXT. + 224| GV_LAND1 = L_T001-LAND1. + 225| ENDIF. +``` + +- **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 +- English: Company Code, T001, Chart of Accounts, Local Currency +- 정의부(복사 시 함께 필요): [`L_T001`](#decl-zfi_common-210-l_t001), [`P_BUKRS`](#decl-zfir0040top-80-p_bukrs), [`GV_WAERS`](#decl-zfi_common-52-gv_waers), [`GV_KTOPL`](#decl-zfi_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zfi_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zfi_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zfi_common-55-gv_land1) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L213-L225` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#SET_COMPANY_BASE#C1` + +### FORM INITIALIZE_DATA — `ZFIR0040F01` L47-L78 (32줄) + +*처리 전 회사코드 기본정보를 세팅하고 메인 ALV용 딕셔너리 필드카탈로그를 취득하며 오류로그·잠금·상태 플래그를 초기화하고 ZDBTYPE·ZDCANCELFLAG 도메인 텍스트를 읽어 두는 초기화 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] SET_COMPANY_BASE로 회사코드 정보·회사명을 채우고 GET_FCAT_LIKE_ITAB로 메인 내부테이블 구조의 필드카탈로그를 얻은 뒤 오류로그·잠금·업로드/전기 상태 플래그를 초기화하고 GET_DOM_TEXT_LIST로 거래유형(ZDBTYPE)·취소구분(ZDCANCELFLAG) 도메인 텍스트를 적재한다. + +```abap + 54| LV_BUKRS = P_BUKRS. + 55| PERFORM SET_COMPANY_BASE USING LV_BUKRS. + 56| P_BUTXT = GV_BUKRS_TXT. + 57| + 58| CLEAR : GT_MAIN_FIELDCAT, GT_MAIN_FIELDCAT[]. + 59| " MAIN ALV용 딕셔너리 구조 취득. + 60| PERFORM GET_FCAT_LIKE_ITAB + 61| TABLES GT_MAIN_FIELDCAT + 62| USING GC_MAIN_ITAB_NAME. + 63| + 64| CLEAR : GT_ERROR_LOG_POPUP, GT_ERROR_LOG_POPUP[]. + 65| + 66| * PERFORM SET_DSMOD USING P_DSMOD. + 67| + 68| CLEAR : GV_LOCK, GT_EXCP_INIT_FIELD, GT_EXCP_INIT_FIELD[]. + 69| " 프로그램 LOCK 정의 + 70| + 71| CLEAR : GV_UPLOAD_ERROR. + 72| CLEAR : GV_ALREADY_POST. + 73| CLEAR : GV_POST_ERROR. + 74| + 75| PERFORM GET_DOM_TEXT_LIST USING 'ZDBTYPE'. + 76| PERFORM GET_DOM_TEXT_LIST USING 'ZDCANCELFLAG'. +``` + +- **EN**: Initializes company code data, derives the main ALV field catalog from the internal table structure, resets error log, lock and status flags, and loads domain texts for ZDBTYPE and ZDCANCELFLAG. +- 호출(파서): SET_COMPANY_BASE, GET_FCAT_LIKE_ITAB, GET_DOM_TEXT_LIST, GET_DOM_TEXT_LIST +- SAP 객체: ZDBTYPE, ZDCANCELFLAG +- 업무 키워드: 초기화, 회사코드 정보, 필드카탈로그 취득, 도메인 텍스트, 상태 플래그 +- English: Initialization, Company Code, Field Catalog, Domain Text +- 정의부(복사 시 함께 필요): [`LV_BUKRS`](#decl-zfir0040f01-48-lv_bukrs), [`P_BUKRS`](#decl-zfir0040top-80-p_bukrs), [`GV_BUKRS_TXT`](#decl-zfi_common-50-gv_bukrs_txt), [`GT_MAIN_FIELDCAT`](#decl-zfir0040top-38-gt_main_fieldcat), [`GC_MAIN_ITAB_NAME`](#decl-zfir0040top-31-gc_main_itab_name), [`GT_ERROR_LOG_POPUP`](#decl-zfir0040top-61-gt_error_log_popup), [`GV_LOCK`](#decl-zfir0040top-21-gv_lock), [`GT_EXCP_INIT_FIELD`](#decl-zfi_common-91-gt_excp_init_field), [`GV_UPLOAD_ERROR`](#decl-zfir0040top-22-gv_upload_error), [`GV_ALREADY_POST`](#decl-zfir0040top-23-gv_already_post), [`GV_POST_ERROR`](#decl-zfir0040top-24-gv_post_error) +- 선언을 못 찾은 이름: P_BUTXT (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0040/ZFIR0040F01#L54-L76` · confidence 0.75 · `ZFIR0040#ZFIR0040F01#FORM#INITIALIZE_DATA#C1` + +### FORM GET_FCAT_LIKE_ITAB — `ZFI_COMMON` L159-L200 (42줄) + +*프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. + +```abap + 172| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' + 173| EXPORTING + 174| I_PROGRAM_NAME = SY-REPID + 175| I_INTERNAL_TABNAME = P_ITAB_NAME + 176| I_INCLNAME = SY-REPID + 177| I_STRUCTURE_NAME = '' + 178| I_BYPASSING_BUFFER = 'X' + 179| CHANGING + 180| CT_FIELDCAT = LT_FIELDCAT[] + 181| EXCEPTIONS + 182| INCONSISTENT_INTERFACE = 1 + 183| PROGRAM_ERROR = 2. + 184| + 185| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' + 186| EXPORTING + 187| IT_FIELDCAT_ALV = LT_FIELDCAT + 188| IMPORTING + 189| ET_FIELDCAT_LVC = LT_ALV_CAT + 190| TABLES + 191| IT_DATA = LT_TABLE[]. + 192| + 193| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' + 194| CHANGING + 195| CT_FIELDCAT = LT_ALV_CAT. + 196| + 197| PT_REF_FCAT[] = LT_ALV_CAT[]. +``` + +- **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. +- 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE +- SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT +- 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 +- English: Field Catalog, ALV, LVC +- 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zfi_common-164-lt_fieldcat), [`LT_ALV_CAT`](#decl-zfi_common-165-lt_alv_cat), [`LT_TABLE`](#decl-zfi_common-163-lt_table) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L172-L197` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` + +### FORM GET_DOM_TEXT_LIST — `ZFI_COMMON` L1244-L1255 (12줄) + +*도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. + +```abap + 1246| SELECT DOMNAME DOMVALUE_L DDTEXT + 1247| APPENDING TABLE GT_DOMAIN + 1248| FROM DD07T + 1249| WHERE DOMNAME = P_DOMNA + 1250| AND DDLANGUAGE = SY-LANGU + 1251| AND AS4LOCAL = 'A'. + 1252| + 1253| SORT : GT_DOMAIN. +``` + +- **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, GT_DOMAIN +- 업무 키워드: 도메인 고정값, 값 텍스트 조회 +- English: Domain Fixed Values, DD07T +- 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zfi_common-27-gs_domain), [`GT_DOMAIN`](#decl-zfi_common-32-gt_domain) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1246-L1253` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#GET_DOM_TEXT_LIST#C1` + +### FORM SELECT_DATA — `ZFIR0040F01` L95-L146 (52줄) + +*비용전표 연계 내역을 조건에 맞게 읽어 취소플래그 텍스트·공급업체명·계정명·처리상태 아이콘을 붙인다.* + +> 이 unit 의 조각 2개가 45/52줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·증빙일자·거래일자·공급업체 조건으로 비용전표 인터페이스 테이블 ZFIT0090 을 읽고, 건이 없으면 종료한다. + +```abap + 99| SELECT * FROM ZFIT0090 + 100| INTO CORRESPONDING FIELDS OF TABLE LT_ZFI0090 + 101| WHERE BUKRS = P_BUKRS + 102| AND BLDAT IN S_BLDAT + 103| AND TRSDATE IN S_TRDAT + 104| * AND GSBER IN S_GSBER + 105| AND LIFNR IN S_LIFNR. + 106| + 107| CHECK LT_ZFI0090[] IS NOT INITIAL. +``` + +- **EN**: Reads expense-document interface records from ZFIT0090 by company code, document date, transaction date and vendor. +- 테이블(파서): read [ZFIT0090](/tables/ZFIT0090.md) / write - +- SAP 객체: ZFIT0090, BUKRS, BLDAT, TRSDATE, LIFNR +- 업무 키워드: 비용전표, 경비, 인터페이스내역, 증빙일자, 거래일자, 공급업체 +- English: expense document, cost posting, interface record, document date, vendor +- 정의부(복사 시 함께 필요): [`LT_ZFI0090`](#decl-zfir0040f01-96-lt_zfi0090), [`P_BUKRS`](#decl-zfir0040top-80-p_bukrs), [`S_BLDAT`](#decl-zfir0040top-87-s_bldat), [`S_TRDAT`](#decl-zfir0040top-86-s_trdat), [`S_LIFNR`](#decl-zfir0040top-90-s_lifnr) +- 위치: `abap://ZFIR0040/ZFIR0040F01#L99-L107` · confidence 0.9 · `ZFIR0040#ZFIR0040F01#FORM#SELECT_DATA#C1` + +#### [aggregation] 건별로 취소플래그 도메인 텍스트를 붙이고, 공급업체명(LFA1)과 계정명(SKAT, 계정과목표 기준)을 건마다 조회해 채우고, 처리결과 코드(S/E)로 녹색·적색 신호등을 세운다. + +```abap + 109| LOOP AT LT_ZFI0090. + 110| MOVE-CORRESPONDING LT_ZFI0090 TO GT_DATA. + 111| + 112| * READ TABLE GT_DOMAIN INTO GS_DOMAIN WITH KEY DOMAIN = 'ZDBTYPE' + 113| * VALUE = GT_DATA-BTYPE BINARY SEARCH. + 114| * + 115| * IF SY-SUBRC EQ 0. + 116| * GT_DATA-BTYPE_T = GS_DOMAIN-DDTEXT. + 117| * ENDIF. + 118| + 119| READ TABLE GT_DOMAIN INTO GS_DOMAIN WITH KEY DOMAIN = 'ZDCANCELFLAG' + 120| VALUE = GT_DATA-CANCELFLAG BINARY SEARCH. + 121| + 122| IF SY-SUBRC EQ 0. + 123| GT_DATA-CANCELFLAG_T = GS_DOMAIN-DDTEXT. + 124| ENDIF. + 125| + 126| SELECT SINGLE NAME1 FROM LFA1 + 127| INTO GT_DATA-LIFNR_T + 128| WHERE LIFNR = GT_DATA-LIFNR. + 129| + 130| SELECT SINGLE TXT20 FROM SKAT + 131| INTO GT_DATA-SAKNR_T + 132| WHERE KTOPL = GV_KTOPL + 133| AND SAKNR = GT_DATA-SAKNR + 134| AND SPRAS = SY-LANGU. + 135| + 136| IF GT_DATA-RESULTCODE = 'S'. + 137| GT_DATA-STATUS = GC_STATUS_GREEN. + 138| ELSEIF GT_DATA-RESULTCODE = 'E'.. + 139| GT_DATA-STATUS = GC_STATUS_RED. + 140| ENDIF. + 141| + 142| APPEND GT_DATA. + 143| CLEAR : GT_DATA. + 144| ENDLOOP. +``` + +- **EN**: Per record: resolves the cancel-flag domain text, looks up vendor and G/L account names, and sets a green/red status icon from the result code. +- 테이블(파서): read [LFA1](/tables/LFA1.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: LFA1, SKAT, KTOPL, ZDCANCELFLAG +- 업무 키워드: 취소플래그, 도메인텍스트, 공급업체명, 계정명, 계정과목표, 처리결과, 신호등 +- English: cancel flag, domain text, vendor name, G/L account text, chart of accounts, result code, status icon +- 정의부(복사 시 함께 필요): [`LT_ZFI0090`](#decl-zfir0040f01-96-lt_zfi0090), [`GT_DATA`](#decl-zfir0040top-43-gt_data), [`GS_DOMAIN`](#decl-zfi_common-27-gs_domain), [`GT_DOMAIN`](#decl-zfi_common-32-gt_domain), [`LFA1`](#decl-zfir0040top-4-lfa1), [`GV_KTOPL`](#decl-zfi_common-53-gv_ktopl), [`GC_STATUS_GREEN`](#decl-zfi_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zfi_alv-130-gc_status_red) +- 위치: `abap://ZFIR0040/ZFIR0040F01#L109-L144` · confidence 0.88 · `ZFIR0040#ZFIR0040F01#FORM#SELECT_DATA#C2` + +### FORM GET_SELECTED_ROW2 — `ZFI_ALV` L369-L397 (29줄) + +*ALV 그리드에서 선택된 행 인덱스를 GT_ROWS 로 가져오고 미선택/복수 선택 시 오류 메시지를 표시하는 유틸리티다.* + +> 이 unit 의 조각 1개가 16/29줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] GET_SELECTED_ROWS 로 선택 행을 GT_ROWS 에 받아 소계행을 제거하고, 선택이 없거나 단일 선택 모드에서 2건 이상이면 오류성 메시지를 띄운다. + +```abap + 381| CALL METHOD PV_GRID->GET_SELECTED_ROWS + 382| IMPORTING + 383| ET_INDEX_ROWS = GT_ROWS. + 384| + 385| DELETE GT_ROWS WHERE ROWTYPE IS NOT INITIAL. + 386| + 387| *-- 선택된 LINE이 없고 에러출력 설정 시.. + 388| IF LINES( GT_ROWS ) EQ 0. + 389| MESSAGE '선택된 라인이 없습니다.' + 390| TYPE 'S' DISPLAY LIKE 'E'. + 391| + 392| ELSEIF LINES( GT_ROWS ) GT 1 AND LV_ONE_SEL EQ 'X'. + 393| MESSAGE '하나의 라인만 선택하셔야 합니다.' + 394| TYPE 'S' DISPLAY LIKE 'E'. + 395| + 396| ENDIF. +``` + +- **EN**: Retrieve selected ALV rows via GET_SELECTED_ROWS, drop subtotal rows, and issue an error-style message when no row or more than one row (in single-select mode) is selected. +- 호출(파서): PV_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, LVC_T_ROW +- 업무 키워드: 선택 행 조회, 행 선택 검증, 단일 선택, ALV 그리드 +- English: Selected Rows, ALV Grid, Row Selection Validation +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zfi_alv-103-gt_rows), [`LV_ONE_SEL`](#decl-zfi_alv-374-lv_one_sel) +- 위치: `abap://ZFIR0040/ZFI_ALV#L381-L396` · confidence 0.85 · `ZFIR0040#ZFI_ALV#FORM#GET_SELECTED_ROW2#C1` + +### FORM CHECK_SORT_PARAMETER — `ZFI_ALV` L472-L493 (22줄) + +*ALV 정렬 설정(LVC_T_SORT)의 필드가 필드카탈로그에 존재하는지 검사해 누락 필드명을 돌려주는 검증 루틴이다.* + +> 이 unit 의 조각 1개가 10/22줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 정렬 테이블의 각 필드명을 필드카탈로그(LVC_T_FCAT)에서 READ 해 없는 필드가 있으면 SUBRC 와 필드명을 반환하고 종료한다. + +```abap + 483| LOOP AT PT_SORT ASSIGNING . + 484| READ TABLE PT_FIELDCAT ASSIGNING + 485| WITH KEY FIELDNAME = -FIELDNAME. + 486| + 487| IF SY-SUBRC NE 0. + 488| P_SUBRC = SY-SUBRC. + 489| P_FIELDNAME = -FIELDNAME. + 490| EXIT. + 491| ENDIF. + 492| ENDLOOP. +``` + +- **EN**: Verify that every sort field in LVC_T_SORT exists in the ALV field catalog and return the first missing field name. +- SAP 객체: LVC_T_SORT, LVC_T_FCAT +- 업무 키워드: ALV 정렬 검증, 필드카탈로그, 정렬 필드 +- English: ALV Sort, Field Catalog, LVC_T_SORT +- 정의부(복사 시 함께 필요): [``](#decl-zfi_alv-478--fs_sort-), [``](#decl-zfi_alv-479--fs_fcat-) +- 위치: `abap://ZFIR0040/ZFI_ALV#L483-L492` · confidence 0.85 · `ZFIR0040#ZFI_ALV#FORM#CHECK_SORT_PARAMETER#C1` + +### FORM GET_SETLEAF_VALUES — `ZFI_COMMON` L232-L295 (64줄) + +*세트 클래스(코스트센터/원가요소/오더/손익센터/계정과목 그룹)와 세트명으로 K_HIERARCHY_TABLES_READ 를 호출해 세트 값 목록(GT_VALUE_SET)을 읽는 공통 루틴이다.* + +> 이 unit 의 조각 1개가 45/64줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID 를 만들고 K_HIERARCHY_TABLES_READ 로 세트 값 범위를 GT_VALUE_SET 에 읽으며, 세트를 못 찾으면 GS004 오류로 중단한다. + +```abap + 250| CASE PV_CLASS. + 251| WHEN '0101'. " 코스트센터 + 252| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 253| WHEN '0102'. " 원가요소 + 254| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 255| WHEN '0103'. " 오더 + 256| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 257| WHEN '0106'. " 손익센터 + 258| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. + 259| WHEN '0109'. " 계정과목 + 260| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. + 261| ENDCASE. + 262| + 263| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' + 264| EXPORTING + 265| E_CLASS = L_CLASS + 266| E_SETID = L_SETID + 267| E_KOKRS = GC_KOKRS + 268| E_MANDT = SY-MANDT + 269| TABLES + 270| T_NODES = LT_NODE + 271| T_VALUES = GT_VALUE_SET + 272| CHANGING + 273| C_INFO = LT_GRPHINFO + 274| C_OVERWRITE = SY-DATAR + 275| EXCEPTIONS + 276| NO_CONTROLLING_AREA = 1 + 277| NO_CHART_OF_ACCOUNT = 2 + 278| DIFFERENT_CONTROLLING_AREAS = 3 + 279| DIFFERENT_CHART_OF_ACCOUNTS = 4 + 280| SET_NOT_FOUND = 5 + 281| ILLEGAL_FIELD_REPLACEMENT = 6 + 282| ILLEGAL_TABLE_REPLACEMENT = 7 + 283| FM_RAISE = 8 + 284| CONVERT_ERROR = 9 + 285| NO_OVERWRITE_STANDARD_HIER = 10 + 286| NO_BUKRS_FOR_KOKRS = 11 + 287| OTHERS = 12. + 288| + 289| IF SY-SUBRC <> 0. + 290| MESSAGE ID 'GS' TYPE 'E' NUMBER '004' + 291| WITH P_SETNAME INTO L_MESSAGE. + 292| MESSAGE S000(ZCOM) DISPLAY LIKE 'E' WITH L_MESSAGE. + 293| LEAVE LIST-PROCESSING. + 294| ENDIF. +``` + +- **EN**: Compose the set ID from set class plus controlling area or chart of accounts and read the set value ranges via K_HIERARCHY_TABLES_READ into GT_VALUE_SET, aborting with error GS004 when the set is not found. +- 호출(파서): K_HIERARCHY_TABLES_READ +- SAP 객체: K_HIERARCHY_TABLES_READ, SETHEADER, SETLEAF, SETHIER +- 업무 키워드: 세트 값 조회, 코스트센터 그룹, 계정과목 그룹, 원가요소 그룹, 관리회계영역, 계정과목표 +- English: Set Hierarchy, Cost Center Group, G/L Account Group, K_HIERARCHY_TABLES_READ, Controlling Area +- 정의부(복사 시 함께 필요): [`GC_KOKRS`](#decl-zfi_common-58-gc_kokrs), [`L_SETID`](#decl-zfi_common-238-l_setid), [`GV_KTOPL`](#decl-zfi_common-53-gv_ktopl), [`L_CLASS`](#decl-zfi_common-237-l_class), [`LT_NODE`](#decl-zfi_common-236-lt_node), [`GT_VALUE_SET`](#decl-zfi_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zfi_common-239-lt_grphinfo), [`L_MESSAGE`](#decl-zfi_common-240-l_message) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L250-L294` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#GET_SETLEAF_VALUES#C1` + +### FORM DYNPRO — `ZFI_COMMON` L307-L333 (27줄) + +*BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. + +```abap + 313| IF PV_DYNBEGIN = 'X'. + 314| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. + 315| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. + 316| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. + 317| + 318| APPEND LS_BDCTAB TO PT_BDCTAB. + 319| ELSE. + 320| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS + 321| WITH KEY FNAME = PV_INPUT BINARY SEARCH. + 322| + 323| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. + 324| EXIT. + 325| ENDIF. + 326| + 327| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. + 328| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. + 329| + 330| APPEND LS_BDCTAB TO PT_BDCTAB. + 331| ENDIF. +``` + +- **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. +- SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD +- 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 +- English: BDCDATA, Batch Input, Call Transaction +- 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zfi_common-309-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zfi_common-91-gt_excp_init_field) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L313-L331` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#DYNPRO#C1` + +### FORM DATE_CHK — `ZFI_COMMON` L444-L453 (10줄) + +*DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. + +```abap + 445| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' + 446| EXPORTING + 447| DATE = P_IN_DATE + 448| EXCEPTIONS + 449| PLAUSIBILITY_CHECK_FAILED = 1 + 450| OTHERS = 2. + 451| + 452| P_SUBRC = SY-SUBRC. +``` + +- **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. +- 호출(파서): DATE_CHECK_PLAUSIBILITY +- SAP 객체: DATE_CHECK_PLAUSIBILITY +- 업무 키워드: 날짜 유효성 검사 +- English: Date Validation, Plausibility Check +- 위치: `abap://ZFIR0040/ZFI_COMMON#L445-L452` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#DATE_CHK#C1` + +### FORM BAR_MSG_PER — `ZFI_COMMON` L479-L503 (25줄) + +*처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. + +```abap + 485| L_NCNT1 = P_CNT1. + 486| L_NCNT2 = P_CNT2. + 487| + 488| GV_CALC_I = P_CNT1 * 100 / P_CNT2. + 489| GV_CALC_C0 = GV_CALC_I. + 490| + 491| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. + 492| GV_PROGRESS_MSG = P_TEXT. + 493| ELSE. + 494| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' + 495| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. + 496| CONDENSE GV_PROGRESS_MSG. + 497| ENDIF. + 498| + 499| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 500| EXPORTING + 501| PERCENTAGE = GV_CALC_I + 502| TEXT = GV_PROGRESS_MSG. +``` + +- **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률 표시, 처리 건수 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zfi_common-480-l_ncnt1), [`L_NCNT2`](#decl-zfi_common-481-l_ncnt2), [`GV_CALC_I`](#decl-zfi_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zfi_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zfi_common-15-gv_progress_msg) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L485-L502` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#BAR_MSG_PER#C1` + +### FORM DISPLAY_SPOOL_BY_SALV — `ZFI_COMMON` L512-L522 (11줄) + +*CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. + +```abap + 515| CL_SALV_TABLE=>FACTORY( + 516| IMPORTING + 517| R_SALV_TABLE = GR_TABLE + 518| CHANGING + 519| T_TABLE = PT_TABLE[] ). + 520| + 521| GR_TABLE->DISPLAY( ). +``` + +- **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. +- 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY +- SAP 객체: CL_SALV_TABLE +- 업무 키워드: ALV 리스트 출력, 스풀 출력 +- English: SALV, ALV List, Spool +- 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zfi_common-513-gr_table) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L515-L521` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` + +### FORM UPLOAD_DATA — `ZFI_COMMON` L582-L639 (58줄) + +*엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* + +> 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. + +```abap + 594| ASSIGN: (PT_EXCEL_TABLE) TO , + 595| (PS_EXCEL_STRUC) TO . + 596| + 597| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' + 598| EXPORTING + 599| FILENAME = PV_EXCEL_FILENAME + 600| I_BEGIN_COL = PV_BEGIN_COL + 601| I_BEGIN_ROW = PV_BEGIN_ROW + 602| I_END_COL = PV_END_COL + 603| I_END_ROW = PV_END_ROW + 604| TABLES + 605| INTERN = LT_INTERN + 606| EXCEPTIONS + 607| INCONSISTENT_PARAMETERS = 1 + 608| UPLOAD_OLE = 2 + 609| OTHERS = 3. + 610| + 611| IF SY-SUBRC <> 0. + 612| IF SY-MSGID IS INITIAL. + 613| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. + 614| LEAVE LIST-PROCESSING. + 615| ELSE. + 616| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 617| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 618| ENDIF. + 619| ENDIF. +``` + +- **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. +- 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE +- SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE +- 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 +- English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE +- 정의부(복사 시 함께 필요): [``](#decl-zfi_common-592--l_fs02-), [``](#decl-zfi_common-593--l_fs03-), [`ALSMEX_TABLINE`](#decl-zfi_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zfi_common-590-lt_intern) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L594-L619` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#UPLOAD_DATA#C1` + +#### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. + +```abap + 621| LOOP AT LT_INTERN. + 622| AT NEW ROW. + 623| CLEAR : . + 624| ENDAT. + 625| + 626| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . + 627| + 628| IF LT_INTERN-VALUE CO '0123456789,.- '. + 629| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. + 630| ENDIF. + 631| + 632| MOVE LT_INTERN-VALUE TO . + 633| + 634| AT END OF ROW. + 635| APPEND TO . + 636| ENDAT. + 637| ENDLOOP. +``` + +- **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. +- SAP 객체: ALSMEX_TABLINE, GT_UPLOAD +- 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 +- English: Cell Mapping, ASSIGN COMPONENT, Internal Table +- 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zfi_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zfi_common-590-lt_intern), [``](#decl-zfi_common-593--l_fs03-), [``](#decl-zfi_common-591--l_fs01-), [``](#decl-zfi_common-592--l_fs02-) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L621-L637` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#UPLOAD_DATA#C2` + +### FORM BUILD_MESSAGE — `ZFI_COMMON` L688-L709 (22줄) + +*BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. + +```abap + 693| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 694| EXPORTING + 695| MSGID = PS_MESSAGE-MSGID + 696| MSGNR = PS_MESSAGE-MSGNR + 697| MSGV1 = PS_MESSAGE-MSGV1 + 698| MSGV2 = PS_MESSAGE-MSGV2 + 699| MSGV3 = PS_MESSAGE-MSGV3 + 700| MSGV4 = PS_MESSAGE-MSGV4 + 701| IMPORTING + 702| MESSAGE_TEXT_OUTPUT = PV_TEXT. + 703| + 704| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. +``` + +- **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지 텍스트, 메시지 조립 +- English: BDCMSGCOLL, Message Text, Call Transaction +- 위치: `abap://ZFIR0040/ZFI_COMMON#L693-L704` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#BUILD_MESSAGE#C1` + +### FORM EXCEL_FORM_DOWNLOAD — `ZFI_COMMON` L716-L846 (131줄) + +*엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. + +```abap + 758| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. + 759| + 760| LOOP AT PT_EXCEL_EXPORT. + 761| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. + 762| ENDLOOP. + 763| + 764| " 동적 테이블 생성 + 765| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE + 766| EXPORTING + 767| IT_FIELDCATALOG = LT_FCAT + 768| IMPORTING + 769| EP_TABLE = LF_DATA. + 770| + 771| ASSIGN LF_DATA->* TO . + 772| + 773| " 테이블 라인 생성 + 774| CREATE DATA LL_DATA LIKE LINE OF . + 775| ASSIGN LL_DATA->* TO . + 776| + 777| " 템플릿 내용 단 한라인만 등록 + 778| LOOP AT LT_FCAT INTO LS_FCAT. + 779| ASSIGN COMPONENT LS_FCAT-COL_POS + 780| OF STRUCTURE TO . + 781| + 782| IF SY-SUBRC EQ 0. + 783| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. + 784| ENDIF. + 785| ENDLOOP. + 786| + 787| " 테이블에 담기. + 788| APPEND TO . +``` + +- **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. +- 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE +- SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT +- 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 +- English: Dynamic Table, Field Catalog, Upload Template +- 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zfi_common-718-lt_fcat), [`LF_DATA`](#decl-zfi_common-723-lf_data), [``](#decl-zfi_common-732--fs_table-), [`LL_DATA`](#decl-zfi_common-724-ll_data), [``](#decl-zfi_common-733--fs_line-), [`LS_FCAT`](#decl-zfi_common-719-ls_fcat), [``](#decl-zfi_common-734--fs_col-) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L758-L788` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` + +#### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. + +```abap + 792| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. + 793| + 794| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 795| EXPORTING + 796| DEFAULT_EXTENSION = 'XLS' + 797| DEFAULT_FILE_NAME = L_FNAME + 798| FILE_FILTER = '*.XLS' + 799| CHANGING + 800| FILENAME = L_EXT_FILENAME + 801| PATH = L_PATH + 802| FULLPATH = L_FULLPATH + 803| USER_ACTION = L_USR_ACT. + 804| + 805| IF L_USR_ACT = '0'. + 806| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD + 807| EXPORTING + 808| FILENAME = L_FULLPATH + 809| WRITE_FIELD_SEPARATOR = 'X' + 810| IMPORTING + 811| FILELENGTH = L_FILE_LEN + 812| CHANGING + 813| DATA_TAB = + 814| EXCEPTIONS + 815| FILE_WRITE_ERROR = 1 + 816| NO_BATCH = 2 + 817| GUI_REFUSE_FILETRANSFER = 3 + 818| INVALID_TYPE = 4 + 819| NO_AUTHORITY = 5 + 820| UNKNOWN_ERROR = 6 + 821| HEADER_NOT_ALLOWED = 7 + 822| SEPARATOR_NOT_ALLOWED = 8 + 823| FILESIZE_NOT_ALLOWED = 9 + 824| HEADER_TOO_LONG = 10 + 825| DP_ERROR_CREATE = 11 + 826| DP_ERROR_SEND = 12 + 827| DP_ERROR_WRITE = 13 + 828| UNKNOWN_DP_ERROR = 14 + 829| ACCESS_DENIED = 15 + 830| DP_OUT_OF_MEMORY = 16 + 831| DISK_FULL = 17 + 832| DP_TIMEOUT = 18 + 833| FILE_NOT_FOUND = 19 + 834| DATAPROVIDER_EXCEPTION = 20 + 835| CONTROL_FLUSH_ERROR = 21 + 836| OTHERS = 22. + 837| + 838| IF SY-SUBRC = 0. + 839| MESSAGE S000 WITH 'Success.'. + 840| ELSE. + 841| MESSAGE I000 WITH 'Failure'. + 842| ENDIF. + 843| ELSE. + 844| MESSAGE I000 WITH 'Cancled'. + 845| ENDIF. +``` + +- **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD +- 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 +- English: GUI_DOWNLOAD, File Save Dialog, Excel Template +- 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zfi_common-727-l_fname), [`L_EXT_FILENAME`](#decl-zfi_common-728-l_ext_filename), [`L_PATH`](#decl-zfi_common-730-l_path), [`L_FULLPATH`](#decl-zfi_common-729-l_fullpath), [`L_USR_ACT`](#decl-zfi_common-725-l_usr_act), [`L_FILE_LEN`](#decl-zfi_common-726-l_file_len), [``](#decl-zfi_common-732--fs_table-) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L792-L845` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` + +### FORM CONVERT_CURRENCY — `ZFI_COMMON` L859-L878 (20줄) + +*전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. + +```abap + 862| IF P_FCURR = P_LCURR. + 863| P_LAMT = P_FAMT. + 864| ELSE. + 865| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 866| EXPORTING + 867| CLIENT = SY-MANDT + 868| DATE = P_BUDAT + 869| FOREIGN_CURRENCY = P_FCURR + 870| FOREIGN_AMOUNT = P_FAMT + 871| LOCAL_CURRENCY = P_LCURR + 872| IMPORTING + 873| LOCAL_AMOUNT = P_LAMT + 874| EXCEPTIONS + 875| NO_RATE_FOUND = 01. + 876| ENDIF. +``` + +- **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR +- 업무 키워드: 환율 환산, 현지통화 금액, 외화 +- English: Exchange Rate, Local Currency, Foreign Currency +- 위치: `abap://ZFIR0040/ZFI_COMMON#L862-L876` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#CONVERT_CURRENCY#C1` + +### FORM CONVERT_CHAR_TO_AMT — `ZFI_COMMON` L888-L915 (28줄) + +*콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). + +```abap + 892| CALL FUNCTION 'STRING_REPLACE' + 893| EXPORTING + 894| PATTERN = ',' + 895| SUBSTITUTE = '' + 896| CHANGING + 897| TEXT = P_VALUE. + 898| + 899| IF SY-SUBRC NE 0. + 900| + 901| ENDIF. + 902| + 903| LV_EXT = P_VALUE. + 904| + 905| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 906| EXPORTING + 907| CURRENCY = P_WAERS + 908| AMOUNT_EXTERNAL = LV_EXT + 909| MAX_NUMBER_OF_DIGITS = '11' + 910| IMPORTING + 911| AMOUNT_INTERNAL = LV_AMT. + 912| + 913| P_AMT = LV_AMT. +``` + +- **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. +- 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL +- 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 +- English: Currency Conversion, Internal Amount, Excel Upload +- 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zfi_common-890-lv_ext), [`LV_AMT`](#decl-zfi_common-889-lv_amt) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L892-L913` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` + +### FORM POPUP_TO_CONFIRM_02 — `ZFI_COMMON` L966-L979 (14줄) + +*POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). + +```abap + 971| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 972| EXPORTING + 973| TEXTLINE1 = PV_QUESTION1 + 974| TEXTLINE2 = PV_QUESTION2 + 975| TITEL = PV_TITLE + 976| IMPORTING + 977| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 +``` + +- **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전기 전 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 위치: `abap://ZFIR0040/ZFI_COMMON#L971-L977` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` + +### FORM POPUP_TO_CONFIRM — `ZFI_COMMON` L991-L1016 (26줄) + +*POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. + +```abap + 997| CALL FUNCTION 'POPUP_TO_CONFIRM' + 998| EXPORTING + 999| TITLEBAR = P_TITLE + 1000| TEXT_QUESTION = P_TEXT + 1001| TEXT_BUTTON_1 = 'Yes' + 1002| TEXT_BUTTON_2 = 'No' + 1003| DEFAULT_BUTTON = P_DEFAULT + 1004| DISPLAY_CANCEL_BUTTON = P_CANC + 1005| IMPORTING + 1006| ANSWER = P_ANSWER + 1007| EXCEPTIONS + 1008| TEXT_NOT_FOUND = 1 + 1009| OTHERS = 2. + 1010| IF SY-SUBRC <> 0. + 1011| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1012| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1013| CLEAR P_ANSWER. + 1014| ENDIF. +``` + +- **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 사용자 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 위치: `abap://ZFIR0040/ZFI_COMMON#L997-L1014` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#POPUP_TO_CONFIRM#C1` + +### FORM GET_LAST_DAY — `ZFI_COMMON` L1025-L1035 (11줄) + +*입력 날짜가 속한 월의 마지막 날짜를 RP_LAST_DAY_OF_MONTHS 로 구하는 날짜 유틸리티다.* + +> 이 unit 의 조각 1개가 5/11줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] RP_LAST_DAY_OF_MONTHS FM 으로 기준일이 속한 월의 말일을 계산해 반환한다(기간 종료일·결산일 계산용). + +```abap + 1030| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + 1031| EXPORTING + 1032| DAY_IN = P_DATE + 1033| IMPORTING + 1034| LAST_DAY_OF_MONTH = P_LAST_DATE. +``` + +- **EN**: Compute the last day of the month for the given date using RP_LAST_DAY_OF_MONTHS. +- 호출(파서): RP_LAST_DAY_OF_MONTHS +- SAP 객체: RP_LAST_DAY_OF_MONTHS +- 업무 키워드: 월말일, 말일 계산, 기간 종료일 +- English: Last Day of Month, Period End Date +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1030-L1034` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#GET_LAST_DAY#C1` + +### FORM SET_DSMOD — `ZFI_COMMON` L1043-L1052 (10줄) + +*BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. + +```abap + 1045| TRANSLATE PA_DSMOD TO UPPER CASE. + 1046| + 1047| IF PA_DSMOD NA 'AEN'. + 1048| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. + 1049| LEAVE LIST-PROCESSING. + 1050| ENDIF. +``` + +- **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. +- 업무 키워드: BDC 모드 검증, 입력값 검사 +- English: BDC Mode, Validation +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1045-L1050` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#SET_DSMOD#C1` + +### FORM FILE_EXISTS — `ZFI_COMMON` L1061-L1092 (32줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. + +```abap + 1070| CHECK P_FNAME IS NOT INITIAL. + 1071| + 1072| L_FILENM = P_FNAME. + 1073| + 1074| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1075| EXPORTING + 1076| FILE = L_FILENM + 1077| RECEIVING + 1078| RESULT = L_RESULT + 1079| EXCEPTIONS + 1080| CNTL_ERROR = 1 + 1081| ERROR_NO_GUI = 2 + 1082| WRONG_PARAMETER = 3 + 1083| NOT_SUPPORTED_BY_GUI = 4 + 1084| OTHERS = 5. + 1085| IF SY-SUBRC <> 0. + 1086| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1087| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1088| ENDIF. + 1089| + 1090| P_EXISTS = L_RESULT. +``` + +- **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 파일 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`L_FILENM`](#decl-zfi_common-1064-l_filenm), [`L_RESULT`](#decl-zfi_common-1063-l_result) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1070-L1090` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#FILE_EXISTS#C1` + +### FORM AMT_CONV_TO_INTERNAL — `ZFI_COMMON` L1101-L1118 (18줄) + +*외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. + +```abap + 1106| L_INTERNAL = P_AMOUNT. + 1107| + 1108| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' + 1109| EXPORTING + 1110| CURRENCY = P_WAERS + 1111| AMOUNT_EXTERNAL = L_INTERNAL + 1112| MAX_NUMBER_OF_DIGITS = 22 + 1113| IMPORTING + 1114| AMOUNT_INTERNAL = L_INTERNAL. + 1115| + 1116| P_AMOUNT = L_INTERNAL. +``` + +- **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. +- 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL +- SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR +- 업무 키워드: 금액 내부형식 변환, 통화 소수점 +- English: Currency Conversion, Internal Amount +- 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zfi_common-1104-l_internal) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1106-L1116` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` + +### FORM GET_NEXT_NUMBER — `ZFI_COMMON` L1129-L1160 (32줄) + +*번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. + +```abap + 1136| LV_NRRANG = P_NRRANG. + 1137| LV_OBJECT = P_OBJECT. + 1138| + 1139| CALL FUNCTION 'NUMBER_GET_NEXT' + 1140| EXPORTING + 1141| NR_RANGE_NR = LV_NRRANG + 1142| OBJECT = LV_OBJECT + 1143| IMPORTING + 1144| NUMBER = P_DOCNO + 1145| EXCEPTIONS + 1146| INTERVAL_NOT_FOUND = 1 + 1147| NUMBER_RANGE_NOT_INTERN = 2 + 1148| OBJECT_NOT_FOUND = 3 + 1149| QUANTITY_IS_0 = 4 + 1150| QUANTITY_IS_NOT_1 = 5 + 1151| INTERVAL_OVERFLOW = 6 + 1152| BUFFER_OVERFLOW = 7 + 1153| OTHERS = 8. + 1154| IF SY-SUBRC <> 0. + 1155| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1156| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1157| CLEAR P_DOCNO. + 1158| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위 +- English: Number Range, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zfi_common-1133-lv_nrrang), [`LV_OBJECT`](#decl-zfi_common-1134-lv_object) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1136-L1158` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#GET_NEXT_NUMBER#C1` + +### FORM GET_NEXT_NUMBER_YEAR — `ZFI_COMMON` L1172-L1211 (40줄) + +*번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. + +```abap + 1180| LV_NRRANG = P_NRRANG. + 1181| LV_OBJECT = P_OBJECT. + 1182| IF P_YEAR IS NOT INITIAL. + 1183| LV_YEAR = P_YEAR. + 1184| ELSE. + 1185| LV_YEAR = '0000'. + 1186| + 1187| ENDIF. + 1188| + 1189| CALL FUNCTION 'NUMBER_GET_NEXT' + 1190| EXPORTING + 1191| NR_RANGE_NR = LV_NRRANG + 1192| OBJECT = LV_OBJECT + 1193| TOYEAR = LV_YEAR + 1194| IMPORTING + 1195| NUMBER = P_DOCNO + 1196| EXCEPTIONS + 1197| INTERVAL_NOT_FOUND = 1 + 1198| NUMBER_RANGE_NOT_INTERN = 2 + 1199| OBJECT_NOT_FOUND = 3 + 1200| QUANTITY_IS_0 = 4 + 1201| QUANTITY_IS_NOT_1 = 5 + 1202| INTERVAL_OVERFLOW = 6 + 1203| BUFFER_OVERFLOW = 7 + 1204| OTHERS = 8. + 1205| IF SY-SUBRC <> 0. + 1206| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1207| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1208| CLEAR P_DOCNO. + 1209| ENDIF. +``` + +- **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, NRIV +- 업무 키워드: 채번, 번호범위, 연도별 번호 +- English: Number Range, NUMBER_GET_NEXT, Fiscal Year +- 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zfi_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zfi_common-1177-lv_object), [`LV_YEAR`](#decl-zfi_common-1178-lv_year) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1180-L1209` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` + +### FORM GET_VALUE_LIST_DOM — `ZFI_COMMON` L1220-L1235 (16줄) + +*도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. + +```abap + 1223| SELECT DOMVALUE_L DDTEXT + 1224| INTO TABLE P_TAB + 1225| FROM DD07T + 1226| WHERE DOMNAME EQ P_DOMAIN + 1227| AND DDLANGUAGE EQ SY-LANGU + 1228| AND AS4LOCAL EQ 'A'. + 1229| IF SY-SUBRC EQ 0. + 1230| SORT P_TAB. + 1231| ELSE. + 1232| REFRESH P_TAB. + 1233| ENDIF. +``` + +- **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 +- English: Domain Fixed Values, DD07T, Value List +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1223-L1233` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#GET_VALUE_LIST_DOM#C1` + +### FORM MD_CONVER_MAT_UNIT — `ZFI_COMMON` L1268-L1298 (31줄) + +*자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. + +```abap + 1274| IF P_MENGE IS INITIAL. + 1275| CLEAR PV_MENGE. + 1276| EXIT. + 1277| ELSEIF P_IN_ME EQ P_OUT_ME. + 1278| PV_MENGE = P_MENGE. + 1279| EXIT. + 1280| ENDIF. + 1281| + 1282| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' + 1283| EXPORTING + 1284| I_MATNR = P_MATNR + 1285| I_IN_ME = P_IN_ME + 1286| I_OUT_ME = P_OUT_ME + 1287| I_MENGE = P_MENGE + 1288| IMPORTING + 1289| E_MENGE = PV_MENGE + 1290| EXCEPTIONS + 1291| ERROR_IN_APPLICATION = 1 + 1292| ERROR = 2 + 1293| OTHERS = 3. + 1294| IF SY-SUBRC <> 0. + 1295| CLEAR PV_MENGE. + 1296| ENDIF. +``` + +- **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. +- 호출(파서): MD_CONVERT_MATERIAL_UNIT +- SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO +- 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 +- English: Unit of Measure Conversion, Material, Quantity +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1274-L1296` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` + +### FORM SHOW_MESSAGE_LIST — `ZFI_COMMON` L1306-L1316 (11줄) + +*누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. + +```abap + 1308| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' + 1309| EXPORTING + 1310| TITLE_TEXT = P_TITLE + 1311| SORT_BY_LEVEL = ' ' + 1312| SHOW_IDS = 'X' + 1313| MESSAGE_LIST = GT_HEAMSG + 1314| DETAILS_LIST = GT_DETMSG. +``` + +- **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. +- 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST +- SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG +- 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 +- English: Message List, Popup +- 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zfi_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zfi_common-23-gt_detmsg) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1308-L1314` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#SHOW_MESSAGE_LIST#C1` + +### FORM GET_FILE_PATH — `ZFI_COMMON` L1325-L1356 (32줄) + +*파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. + +```abap + 1333| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG + 1334| EXPORTING + 1335| WINDOW_TITLE = 'Upload' + 1336| MULTISELECTION = ' ' + 1337| DEFAULT_EXTENSION = 'XLS' + 1338| DEFAULT_FILENAME = ' ' + 1339| FILE_FILTER = '*.XLS' + 1340| CHANGING + 1341| FILE_TABLE = LT_FILETABLE + 1342| RC = RTN_CODE + 1343| USER_ACTION = USER_ACTION. + 1344| + 1345| CALL METHOD CL_GUI_CFW=>FLUSH. + 1346| + 1347| CASE USER_ACTION. + 1348| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1349| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. + 1350| CHECK SY-SUBRC IS INITIAL. + 1351| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. + 1352| + 1353| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. + 1354| ENDCASE. +``` + +- **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH +- 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 +- English: File Open Dialog, Frontend Services, Excel Upload +- 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zfi_common-1330-lt_filetable), [`RTN_CODE`](#decl-zfi_common-1329-rtn_code), [`USER_ACTION`](#decl-zfi_common-1328-user_action), [`LS_FILETABLE`](#decl-zfi_common-1331-ls_filetable) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1333-L1354` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#GET_FILE_PATH#C1` + +### FORM CHK_FILE_PATH — `ZFI_COMMON` L1365-L1390 (26줄) + +*CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. + +```abap + 1372| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST + 1373| EXPORTING + 1374| FILE = LV_FILE + 1375| RECEIVING + 1376| RESULT = LV_RESULT. + 1377| + 1378| IF NOT SY-SUBRC IS INITIAL. + 1379| + 1380| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1381| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1382| + 1383| ELSEIF LV_RESULT IS INITIAL. + 1384| + 1385| MESSAGE S001(00) WITH 'Please check your file path'. + 1386| LEAVE LIST-PROCESSING. + 1387| + 1388| ENDIF. +``` + +- **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST +- 업무 키워드: 파일 존재 확인, 업로드 경로 검증 +- English: File Exist Check, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zfi_common-1368-lv_file), [`LV_RESULT`](#decl-zfi_common-1367-lv_result) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1372-L1388` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#CHK_FILE_PATH#C1` + +### FORM BDC_CREATE_AENNR — `ZFI_COMMON` L1502-L1569 (68줄) + +*변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. + +```abap + 1507| SELECT SINGLE AENNR + 1508| INTO P_AENNR + 1509| FROM AENR + 1510| WHERE AENNR EQ P_AENNR. + 1511| IF SY-SUBRC EQ 0. + 1512| P_MSGTY = 'S'. + 1513| EXIT. + 1514| ENDIF. +``` + +- **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. +- 테이블(파서): read [AENR](/tables/AENR.md) / write - +- SAP 객체: AENR +- 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 +- English: Change Number, AENR, Engineering Change Management +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1507-L1514` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#BDC_CREATE_AENNR#C1` + +#### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. + +```abap + 1516| REFRESH : GT_BDCDATA, GT_MESSTAB. + 1517| CLEAR : GS_BDC_OPTION. + 1518| + 1519| GS_BDC_OPTION-DISMODE = 'N'. + 1520| GS_BDC_OPTION-UPDMODE = 'S'. + 1521| + 1522| PERFORM DYNPRO TABLES PT_TABLES USING: + 1523| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 + 1524| ' ' 'BDC_OKCODE' '/00', + 1525| ' ' 'RC29A-AENNR' P_AENNR, + 1526| + 1527| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen + 1528| ' ' 'BDC_OKCODE' '/00', + 1529| ' ' 'RC29A-AETXT' P_TEXT, "내역 + 1530| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 + 1531| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 + 1532| ' ' 'RC29A-AENST' '01', "변경 번호 상태 + 1533| + 1534| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1535| ' ' 'BDC_OKCODE' '=ENT1', + 1536| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 + 1537| + 1538| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1539| ' ' 'BDC_OKCODE' '=ENT1', + 1540| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 + 1541| + 1542| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1543| ' ' 'BDC_OKCODE' '=ENT1', + 1544| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 + 1545| + 1546| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1547| ' ' 'BDC_OKCODE' '/00', + 1548| + 1549| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen + 1550| ' ' 'BDC_OKCODE' '=FCBU'. + 1551| + 1552| CALL TRANSACTION 'CC01' + 1553| USING GT_BDCDATA[] + 1554| OPTIONS FROM GS_BDC_OPTION + 1555| MESSAGES INTO GT_MESSTAB[]. + 1556| + 1557| *-- 메시지 처리 + 1558| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' + 1559| MSGID = 'CC' + 1560| MSGNR = '001'. + 1561| IF SY-SUBRC EQ 0. + 1562| P_MSGTY = 'S'. + 1563| ELSE. + 1564| P_MSGTY = 'E'. + 1565| PERFORM BUILD_MESSAGE USING GT_MESSTAB + 1566| CHANGING P_MSGTX. + 1567| ENDIF. +``` + +- **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO +- SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO +- 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 +- English: Change Master, BDC, Call Transaction, CC01, ECM +- 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zfi_common-63-gt_bdcdata), [`BDCMSGCOLL`](#decl-zfi_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zfi_common-64-gt_messtab), [`GS_BDC_OPTION`](#decl-zfi_common-62-gs_bdc_option) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1516-L1567` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#BDC_CREATE_AENNR#C2` + +### FORM GET_DYNP_VALUES_READ — `ZFI_COMMON` L1577-L1626 (50줄) + +*DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). + +```abap + 1589| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1590| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1591| + 1592| CALL FUNCTION 'DYNP_VALUES_READ' + 1593| EXPORTING + 1594| DYNAME = LV_DYNAME + 1595| DYNUMB = LV_DYNUM + 1596| TABLES + 1597| DYNPFIELDS = LT_DYNPFIELDS + 1598| EXCEPTIONS + 1599| INVALID_ABAPWORKAREA = 1 + 1600| INVALID_DYNPROFIELD = 2 + 1601| INVALID_DYNPRONAME = 3 + 1602| INVALID_DYNPRONUMMER = 4 + 1603| INVALID_REQUEST = 5 + 1604| NO_FIELDDESCRIPTION = 6 + 1605| INVALID_PARAMETER = 7 + 1606| UNDEFIND_ERROR = 8 + 1607| DOUBLE_CONVERSION = 9 + 1608| STEPL_NOT_FOUND = 10 + 1609| OTHERS = 11. + 1610| + 1611| IF SY-SUBRC <> 0. + 1612| EXIT. + 1613| + 1614| ELSE. + 1615| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS + 1616| WITH KEY FIELDNAME = P_FIELD. + 1617| IF SY-SUBRC EQ 0. + 1618| ASSIGN (P_FIELD) TO . + 1619| IF IS ASSIGNED. + 1620| = LS_DYNPFIELDS-FIELDVALUE. + 1621| ENDIF. + 1622| ENDIF. + 1623| +``` + +- **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ, DYNPREAD +- 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 +- English: Dynpro, DYNP_VALUES_READ, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zfi_common-1580-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zfi_common-1579-lt_dynpfields), [`LV_DYNAME`](#decl-zfi_common-1581-lv_dyname), [`LV_DYNUM`](#decl-zfi_common-1582-lv_dynum), [``](#decl-zfi_common-1584--fs_field-) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1589-L1623` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#GET_DYNP_VALUES_READ#C1` + +### FORM SET_DYNP_VALUES — `ZFI_COMMON` L1635-L1676 (42줄) + +*프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. + +```abap + 1647| LS_DYNPFIELDS-FIELDNAME = P_FIELD. + 1648| + 1649| ASSIGN (P_FIELD) TO . + 1650| IF IS ASSIGNED. + 1651| LS_DYNPFIELDS-FIELDVALUE = . + 1652| ENDIF. + 1653| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. + 1654| + 1655| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 1656| EXPORTING + 1657| DYNAME = LV_DYNAME + 1658| DYNUMB = LV_DYNUM + 1659| TABLES + 1660| DYNPFIELDS = LT_DYNPFIELDS + 1661| EXCEPTIONS + 1662| INVALID_ABAPWORKAREA = 1 + 1663| INVALID_DYNPROFIELD = 2 + 1664| INVALID_DYNPRONAME = 3 + 1665| INVALID_DYNPRONUMMER = 4 + 1666| INVALID_REQUEST = 5 + 1667| NO_FIELDDESCRIPTION = 6 + 1668| UNDEFIND_ERROR = 7 + 1669| OTHERS = 8. +``` + +- **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. +- 호출(파서): DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD +- 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 +- English: Dynpro, DYNP_VALUES_UPDATE, Screen Field +- 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zfi_common-1638-ls_dynpfields), [``](#decl-zfi_common-1642--fs_field-), [`LT_DYNPFIELDS`](#decl-zfi_common-1637-lt_dynpfields), [`LV_DYNAME`](#decl-zfi_common-1639-lv_dyname), [`LV_DYNUM`](#decl-zfi_common-1640-lv_dynum) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1647-L1669` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#SET_DYNP_VALUES#C1` + +### FORM AUTHORITY_CHECK_TCODE — `ZFI_COMMON` L1682-L1695 (14줄) + +*S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. + +```abap + 1686| AUTHORITY-CHECK OBJECT 'S_TCODE' + 1687| ID 'TCD' FIELD SY-TCODE. + 1688| + 1689| IF SY-SUBRC NE 0. + 1690| MESSAGE E077(S#) WITH SY-TCODE. + 1691| ELSEIF SY-TCODE CP '*1'. + 1692| GV_DIP_MOD = 'X'. + 1693| ENDIF. +``` + +- **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. +- SAP 객체: S_TCODE +- 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 +- English: Authorization Check, S_TCODE, Display Mode +- 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zfi_common-43-gv_dip_mod) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1686-L1693` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` + +### FORM F_PDF_DOWNLOAD — `ZFI_COMMON` L1734-L1799 (66줄) + +*Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* + +> 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. + +```abap + 1749| LT_OTF[] = P_JOB-OTFDATA. + 1750| + 1751| CALL FUNCTION 'CONVERT_OTF' + 1752| EXPORTING + 1753| FORMAT = 'PDF' + 1754| IMPORTING + 1755| BIN_FILESIZE = LV_BIN_FILESIZE + 1756| BIN_FILE = LV_BIN_FILE + 1757| TABLES + 1758| OTF = LT_OTF + 1759| LINES = LT_LINES + 1760| EXCEPTIONS + 1761| ERR_MAX_LINEWIDTH = 1 + 1762| ERR_FORMAT = 2 + 1763| ERR_CONV_NOT_POSSIBLE = 3 + 1764| ERR_BAD_OTF = 4 + 1765| OTHERS = 5. + 1766| + 1767| LOOP AT LT_OTF. + 1768| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. + 1769| APPEND LS_OTF TO LT_CONTENT_TXT. + 1770| ENDLOOP. + 1771| + 1772| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' + 1773| EXPORTING + 1774| FORMAT_SRC = 'OTF' + 1775| FORMAT_DST = 'PDF' + 1776| DEVTYPE = 'PRINTER' + 1777| CHANGING + 1778| TRANSFER_BIN = LV_TRANSFER_BIN + 1779| CONTENT_TXT = LT_CONTENT_TXT + 1780| CONTENT_BIN = LT_CONTENT_BIN + 1781| OBJHEAD = LT_OBJHEAD + 1782| LEN = LV_LEN_IN + 1783| EXCEPTIONS + 1784| ERR_CONV_FAILED = 1 + 1785| OTHERS = 2. +``` + +- **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. +- 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF +- SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO +- 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 +- English: Smart Forms, OTF, PDF Conversion +- 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zfi_common-1747-lt_otf), [`LV_BIN_FILESIZE`](#decl-zfi_common-1742-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zfi_common-1743-lv_bin_file), [`LT_LINES`](#decl-zfi_common-1744-lt_lines), [`LS_OTF`](#decl-zfi_common-1741-ls_otf), [`LT_CONTENT_TXT`](#decl-zfi_common-1737-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zfi_common-1736-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zfi_common-1738-lt_content_bin), [`LT_OBJHEAD`](#decl-zfi_common-1739-lt_objhead), [`LV_LEN_IN`](#decl-zfi_common-1740-lv_len_in) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1749-L1785` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#F_PDF_DOWNLOAD#C1` + +#### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. + +```abap + 1788| LV_FILESIZE = LV_LEN_IN. + 1789| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. + 1790| + 1791| CALL FUNCTION 'GUI_DOWNLOAD' + 1792| EXPORTING + 1793| BIN_FILESIZE = LV_FILESIZE + 1794| FILENAME = LV_FILENAME + 1795| FILETYPE = 'BIN' + 1796| TABLES + 1797| DATA_TAB = LT_CONTENT_BIN. +``` + +- **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. +- 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD +- SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL +- 업무 키워드: PDF 다운로드, 로컬 저장 +- English: GUI_DOWNLOAD, PDF, Frontend Download +- 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zfi_common-1745-lv_filesize), [`LV_LEN_IN`](#decl-zfi_common-1740-lv_len_in), [`LV_FILENAME`](#decl-zfi_common-1746-lv_filename), [`LT_CONTENT_BIN`](#decl-zfi_common-1738-lt_content_bin) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1788-L1797` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#F_PDF_DOWNLOAD#C2` + +### FORM OPEN_SAVE_FILE_SEL — `ZFI_COMMON` L1808-L1864 (57줄) + +*파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. + +```abap + 1825| LV_DEFAULT_EXTENSION = P_EXT. + 1826| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. + 1827| LV_INITIAL_DIRECTORY = 'C:\'. + 1828| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL + 1829| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT + 1830| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL + 1831| INTO LV_FILE_FILTER. + 1832| + 1833| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG + 1834| EXPORTING + 1835| * WINDOW_TITLE + 1836| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION + 1837| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME + 1838| * WITH_ENCODING = ABAP_TRUE + 1839| FILE_FILTER = LV_FILE_FILTER + 1840| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY + 1841| CHANGING + 1842| FILENAME = LV_FILENAME + 1843| PATH = LV_PATH + 1844| FULLPATH = LV_FULLPATH + 1845| USER_ACTION = LV_USER_ACTION + 1846| EXCEPTIONS + 1847| CNTL_ERROR = 2 + 1848| ERROR_NO_GUI = 3 + 1849| NOT_SUPPORTED_BY_GUI = 4 + 1850| OTHERS = 5. + 1851| IF SY-SUBRC <> 0. + 1852| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1853| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1854| EXIT. + 1855| ELSE. + 1856| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. + 1857| EXIT. + 1858| ENDIF. + 1859| + 1860| P_FILENAME = LV_FILENAME. +``` + +- **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. +- 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK +- SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG +- 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 +- English: File Save Dialog, Frontend Services +- 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zfi_common-1815-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zfi_common-1818-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zfi_common-1817-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zfi_common-1816-lv_file_filter), [`LV_FILENAME`](#decl-zfi_common-1812-lv_filename), [`LV_PATH`](#decl-zfi_common-1813-lv_path), [`LV_FULLPATH`](#decl-zfi_common-1814-lv_fullpath), [`LV_USER_ACTION`](#decl-zfi_common-1821-lv_user_action) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1825-L1860` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` + +### FORM ALSMEX_TAB_TO_ITAB — `ZFI_COMMON` L1874-L1902 (29줄) + +*ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. + +```abap + 1881| ASSIGN : (PT_EXCEL_TABLE) TO . + 1882| ASSIGN : (PS_EXCEL_STRUC) TO . + 1883| + 1884| LOOP AT PT_INTERN. + 1885| AT NEW ROW. + 1886| CLEAR : . + 1887| ENDAT. + 1888| + 1889| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . + 1890| + 1891| IF PT_INTERN-VALUE CO '0123456789,.- '. + 1892| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. + 1893| ENDIF. + 1894| + 1895| MOVE PT_INTERN-VALUE TO . + 1896| + 1897| AT END OF ROW. + 1898| APPEND TO . + 1899| ENDAT. + 1900| ENDLOOP. +``` + +- **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. +- SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE +- 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 +- English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign +- 정의부(복사 시 함께 필요): [``](#decl-zfi_common-1878--itab-), [``](#decl-zfi_common-1879--iline-), [``](#decl-zfi_common-1877--field-) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1881-L1900` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` + +### FORM START_INTERFACE_BDC — `ZFI_COMMON` L1910-L1930 (21줄) + +*FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. + +```abap + 1917| CALL FUNCTION 'POSTING_INTERFACE_START' + 1918| EXPORTING + 1919| I_FUNCTION = 'C' " Using Call Transaction + 1920| I_KEEP = 'Y' + 1921| I_MODE = P_MODE + 1922| I_UPDATE = 'S' + 1923| EXCEPTIONS + 1924| CLIENT_INCORRECT = 1 + 1925| FUNCTION_INVALID = 2 + 1926| GROUP_NAME_MISSING = 3 + 1927| MODE_INVALID = 4 + 1928| UPDATE_INVALID = 5 + 1929| OTHERS = 6. +``` + +- **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. +- 호출(파서): POSTING_INTERFACE_START +- SAP 객체: POSTING_INTERFACE_START +- 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 +- English: Posting Interface, Call Transaction, FI Document +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1917-L1929` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#START_INTERFACE_BDC#C1` + +### FORM END_INTERFACE_BDC — `ZFI_COMMON` L1937-L1947 (11줄) + +*POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. + +```abap + 1938| CALL FUNCTION 'POSTING_INTERFACE_END' + 1939| EXPORTING + 1940| I_BDCIMMED = 'X'. +``` + +- **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. +- 호출(파서): POSTING_INTERFACE_END +- SAP 객체: POSTING_INTERFACE_END +- 업무 키워드: 전기 인터페이스 종료, BDC 세션 +- English: Posting Interface, BDC Session +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1938-L1940` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#END_INTERFACE_BDC#C1` + +### FORM FILL_FIELD — `ZFI_COMMON` L1957-L1980 (24줄) + +*Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. + +```abap + 1961| CHECK FVAL NE SPACE. + 1962| + 1963| FTPOST-FNAM = FNAM. + 1964| FTPOST-STYPE = GV_FTPOST_TYPE. + 1965| FTPOST-COUNT = GV_FTPOST_CNT. + 1966| + 1967| " 금액 필드일 경우. + 1968| IF FCURR_X = 'X'. + 1969| WRITE FVAL TO LV_CURR CURRENCY + 1970| GV_FTPOST_WAERS LEFT-JUSTIFIED. + 1971| CONDENSE LV_CURR NO-GAPS. + 1972| WRITE LV_CURR TO FTPOST-FVAL. + 1973| ELSE. + 1974| WRITE FVAL TO FTPOST-FVAL. + 1975| ENDIF. + 1976| + 1977| APPEND FTPOST. + 1978| CLEAR FTPOST. +``` + +- **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. +- SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT +- 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 +- English: Posting Interface, FTPOST, Currency Format +- 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zfi_common-70-ftpost), [`GV_FTPOST_TYPE`](#decl-zfi_common-73-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zfi_common-74-gv_ftpost_cnt), [`LV_CURR`](#decl-zfi_common-1959-lv_curr), [`GV_FTPOST_WAERS`](#decl-zfi_common-75-gv_ftpost_waers) +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1961-L1978` · confidence 0.85 · `ZFIR0040#ZFI_COMMON#FORM#FILL_FIELD#C1` + +### FORM BUILD_MESSGE_IF — `ZFI_COMMON` L1989-L2004 (16줄) + +*인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. + +```abap + 1994| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1995| EXPORTING + 1996| MSGID = PS_MESSAGE-MSGID + 1997| MSGNR = PS_MESSAGE-MSGNO + 1998| MSGV1 = PS_MESSAGE-MSGV1 + 1999| MSGV2 = PS_MESSAGE-MSGV2 + 2000| MSGV3 = PS_MESSAGE-MSGV3 + 2001| MSGV4 = PS_MESSAGE-MSGV4 + 2002| IMPORTING + 2003| MESSAGE_TEXT_OUTPUT = PV_TEXT. +``` + +- **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG +- 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 +- English: Message Text, Message Class +- 위치: `abap://ZFIR0040/ZFI_COMMON#L1994-L2003` · confidence 0.9 · `ZFIR0040#ZFI_COMMON#FORM#BUILD_MESSGE_IF#C1` + +### FORM GET_POST_PERIOD — `ZFI_COMMON` L2014-L2041 (28줄) + +*회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. + +```abap + 2019| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 2020| EXPORTING + 2021| I_BUKRS = PV_BUKRS + 2022| I_BUDAT = PV_DATE + 2023| IMPORTING + 2024| E_GJAHR = P_LFGJA + 2025| E_MONAT = P_LFMON + 2026| EXCEPTIONS + 2027| FISCAL_YEAR = 1 + 2028| PERIOD = 2 + 2029| PERIOD_VERSION = 3 + 2030| POSTING_PERIOD = 4 + 2031| SPECIAL_PERIOD = 5 + 2032| VERSION = 6 + 2033| POSTING_DATE = 7 + 2034| OTHERS = 8. + 2035| + 2036| IF SY-SUBRC NE 0. + 2037| P_LFGJA = PV_DATE(4). + 2038| P_LFMON = PV_DATE+4(2). + 2039| ENDIF. +``` + +- **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 +- English: Fiscal Year, Posting Period, Company Code, Posting Date +- 위치: `abap://ZFIR0040/ZFI_COMMON#L2019-L2039` · confidence 0.95 · `ZFIR0040#ZFI_COMMON#FORM#GET_POST_PERIOD#C1` + +### FORM CALL_FB03 — `ZFIR0040F01` L155-L185 (31줄) + +*ALV 행 번호로 비용전표 연계 내역을 읽어 전표번호가 있으면 FB03 전표 조회를 호출하는 FORM이다.* + +> 이 unit 의 조각 1개가 18/31줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 행 번호가 숫자인지 확인해 GT_DATA를 읽고 전표번호(BELNR)가 있으면 SET PARAMETER(BLN/BUK/GJR) 후 FB03을 SKIP FIRST SCREEN으로 호출해 전표를 조회한다(BKPF 상태 확인 분기는 주석 처리됨). + +```abap + 158| CHECK P_ROW CO '0123456789 '. + 159| READ TABLE GT_DATA INDEX P_ROW. + 160| CHECK SY-SUBRC EQ 0. + 161| + 162| CHECK GT_DATA-BELNR IS NOT INITIAL. + 163| * + 164| * SELECT SINGLE * + 165| * FROM BKPF + 166| * INTO LS_BKPF + 167| * WHERE BUKRS = P_BUKRS + 168| * AND GJAHR = GT_DATA-GJAHR + 169| * AND BELNR = GT_DATA-BELNR. + 170| + 171| * IF LS_BKPF-BSTAT = ' '. + 172| SET PARAMETER ID 'BLN' FIELD GT_DATA-BELNR. + 173| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 174| SET PARAMETER ID 'GJR' FIELD GT_DATA-GJAHR. + 175| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Validates the row index, reads the interface record and, if a document number exists, navigates to FB03 document display via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 전표 조회 이동, 전표번호, 행 검증 +- English: Document Display, FB03, CALL TRANSACTION, SET PARAMETER +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0040top-43-gt_data), [`P_BUKRS`](#decl-zfir0040top-80-p_bukrs) +- 위치: `abap://ZFIR0040/ZFIR0040F01#L158-L175` · confidence 0.9 · `ZFIR0040#ZFIR0040F01#FORM#CALL_FB03#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0040I01` L6-L28 (23줄) + +*화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK/CANC/EXIT 기능코드 시 CLEAR_CONTAINER_PROC로 ALV·도킹 컨테이너를 해제하고 EXIT면 LEAVE PROGRAM, 아니면 LEAVE TO SCREEN 0으로 복귀한다. + +```abap + 9| CASE GV_T_OK_CODE. + 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. + 11| PERFORM CLEAR_CONTAINER_PROC USING + 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 + 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 + 14| GO_HTML_VIEW1 + 15| GO_EVENT_RECEIVER1. + 16| + 17| IF GV_T_OK_CODE = 'EXIT'. + 18| LEAVE PROGRAM. + 19| ELSE. + 20| LEAVE TO SCREEN 0. + 21| ENDIF. + 22| "Function Code 맵핑 + 23| + 24| WHEN OTHERS. + 25| * LEAVE PROGRAM. + 26| ENDCASE. +``` + +- **EN**: On BACK/CANC/EXIT free the ALV and docking containers via CLEAR_CONTAINER_PROC and leave the program or return to screen 0. +- 호출(파서): CLEAR_CONTAINER_PROC +- SAP 객체: CLEAR_CONTAINER_PROC +- 업무 키워드: 기능코드, 화면 종료, 컨테이너 해제, 뒤로가기 +- English: OK code, PAI, ALV container, LEAVE TO SCREEN +- 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zfir0040top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zfi_alv-202-lcl_def_grid), [`GO_ALV1`](#decl-zfi_alv-160-go_alv1), [`GO_DOCKING_CONT1`](#decl-zfi_alv-182-go_docking_cont1), [`GO_SPLITTER1`](#decl-zfi_alv-166-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zfi_alv-148-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zfi_alv-149-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zfi_alv-192-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zfir0040c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zfi_alv-178-go_event_receiver1) +- 위치: `abap://ZFIR0040/ZFIR0040I01#L9-L26` · confidence 0.85 · `ZFIR0040#ZFIR0040I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (286건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0040C01` (1건) + +#### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zfir0040c01-5-lcl_def_receiver} + +```abap +CLASS LCL_DEF_RECEIVER DEFINITION. + + PUBLIC SECTION. + + METHODS: HANDLE_TOP_OF_PAGE + FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID + IMPORTING E_DYNDOC_ID TABLE_INDEX. + + METHODS : HANDLE_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_OBJECT + E_INTERACTIVE. + METHODS : HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING SENDER E_UCOMM. + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING SENDER ER_DATA_CHANGED. + + METHODS : HANDLE_DATA_CHANGED_FINISHED + FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID + IMPORTING SENDER E_MODIFIED + ET_GOOD_CELLS. + + METHODS : HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER E_ROW_ID + E_COLUMN_ID. + + METHODS : HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + + METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + + METHODS : HANDLE_CONTEXT_MENU_REQ + FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT. + +ENDCLASS. " LCL_DEF_RECEIVER +``` + +### `ZFIR0040TOP` (29건) + +#### IBRTT — type-pool · L1-L1 {#decl-zfir0040top-1-ibrtt} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — type-pool · L1-L1 {#decl-zfir0040top-1-icon} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### VRM — type-pool · L1-L1 {#decl-zfir0040top-1-vrm} + +```abap +TYPE-POOLS : IBRTT, VRM, ICON. +``` + +#### ICON — tables · L2-L2 {#decl-zfir0040top-2-icon} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### SSCRFIELDS — tables · L2-L2 {#decl-zfir0040top-2-sscrfields} + +```abap +TABLES : ICON, SSCRFIELDS. +``` + +#### ISELLIST — tables · L3-L3 {#decl-zfir0040top-3-isellist} + +```abap +TABLES : ISELLIST. " 선택한 달력 조회 +``` + +#### BKPF — tables · L4-L4 {#decl-zfir0040top-4-bkpf} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### BSEG — tables · L4-L4 {#decl-zfir0040top-4-bseg} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### DD03L — tables · L4-L4 {#decl-zfir0040top-4-dd03l} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### LFA1 — tables · L4-L4 {#decl-zfir0040top-4-lfa1} + +```abap +TABLES : DD03L, BKPF, LFA1, BSEG. +``` + +#### GV_OK_CODE — data · L14-L14 {#decl-zfir0040top-14-gv_ok_code} + +```abap +DATA : GV_OK_CODE LIKE SY-UCOMM. +``` + +#### GV_T_OK_CODE — data · L15-L15 {#decl-zfir0040top-15-gv_t_ok_code} + +```abap +DATA : GV_T_OK_CODE LIKE SY-UCOMM. +``` + +#### GT_UCOMM — data · L17-L17 {#decl-zfir0040top-17-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. +``` + +#### GV_LOCK — data · L21-L21 {#decl-zfir0040top-21-gv_lock} + +```abap +DATA : GV_LOCK(1) TYPE C. " Locking +``` + +#### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zfir0040top-22-gv_upload_error} + +```abap +DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 +``` + +#### GV_ALREADY_POST — data · L23-L23 {#decl-zfir0040top-23-gv_already_post} + +```abap +DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 +``` + +#### GV_POST_ERROR — data · L24-L24 {#decl-zfir0040top-24-gv_post_error} + +```abap +DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 +``` + +#### GV_BUKRS_O — data · L26-L26 {#decl-zfir0040top-26-gv_bukrs_o} + +```abap +DATA : GV_BUKRS_O(1) TYPE C. +``` + +#### GC_MAIN_ITAB_NAME — constants · L31-L32 {#decl-zfir0040top-31-gc_main_itab_name} + +```abap +CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME + VALUE 'GT_DATA'. +``` + +#### GT_MAIN_FIELDCAT — data · L38-L38 {#decl-zfir0040top-38-gt_main_fieldcat} + +```abap +DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. +``` + +#### GT_DATA — data · L43-L57 {#decl-zfir0040top-43-gt_data} + +```abap +DATA : BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0090. + +DATA : +* BTYPE_T LIKE DD07T-DDTEXT, + CANCELFLAG_T LIKE DD07T-DDTEXT, + LIFNR_T LIKE LFA1-NAME1, + SAKNR_T LIKE SKAT-TXT20, + + EXCEL_LINE TYPE I, + MARK TYPE C , + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_DATA. +``` + +#### GS_DATA — data · L59-L59 {#decl-zfir0040top-59-gs_data} + +```abap +DATA : GS_DATA LIKE GT_DATA. +``` + +#### GT_ERROR_LOG_POPUP — data · L61-L67 {#decl-zfir0040top-61-gt_error_log_popup} + +```abap +DATA : BEGIN OF GT_ERROR_LOG_POPUP OCCURS 0, + EXCEL_LINE TYPE I, + SCRTEXT_L LIKE DD03VT-SCRTEXT_L, + STATUS LIKE ICON-ID, + F_COL TYPE LVC_T_SCOL, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_ERROR_LOG_POPUP. +``` + +#### GS_POPUP — data · L70-L70 {#decl-zfir0040top-70-gs_popup} + +```abap +DATA : GS_POPUP LIKE GT_ERROR_LOG_POPUP. +``` + +#### W_POPUP_GRID — data · L71-L71 {#decl-zfir0040top-71-w_popup_grid} + +```abap +DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. +``` + +#### P_BUKRS — parameter · L80-L81 {#decl-zfir0040top-80-p_bukrs} + +```abap +PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' + MODIF ID MG1. +``` + +#### S_TRDAT — select-option · L86-L86 {#decl-zfir0040top-86-s_trdat} + +```abap +SELECT-OPTIONS : S_TRDAT FOR BKPF-BLDAT OBLIGATORY. +``` + +#### S_BLDAT — select-option · L87-L87 {#decl-zfir0040top-87-s_bldat} + +```abap +SELECT-OPTIONS : S_BLDAT FOR BKPF-BLDAT OBLIGATORY. +``` + +#### S_LIFNR — select-option · L90-L90 {#decl-zfir0040top-90-s_lifnr} + +```abap +SELECT-OPTIONS : S_LIFNR FOR LFA1-LIFNR. +``` + +### `ZFI_ALV` (125건) + +#### F4TYP — type-pool · L9-L9 {#decl-zfi_alv-9-f4typ} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SDYDO — type-pool · L9-L9 {#decl-zfi_alv-9-sdydo} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### SLIS — type-pool · L9-L9 {#decl-zfi_alv-9-slis} + +```abap +TYPE-POOLS : SLIS, F4TYP, SDYDO. +``` + +#### T_MSG — types · L11-L19 {#decl-zfi_alv-11-t_msg} + +```abap +TYPES : BEGIN OF T_MSG, + MSGID TYPE SYMSGID, + MSGNO TYPE SYMSGNO, + MSGTY, + MSG1(50), + MSG2(50), + MSG3(50), + MSG4(50), + END OF T_MSG. +``` + +#### GS_MSG — data · L20-L20 {#decl-zfi_alv-20-gs_msg} + +```abap +DATA : GS_MSG TYPE T_MSG. +``` + +#### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zfi_alv-22-gt_top_of_page_txt} + +```abap +DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, + TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, + FONTSIZE TYPE SDYDO_ATTRIBUTE, + COLOR TYPE SDYDO_ATTRIBUTE, +END OF GT_TOP_OF_PAGE_TXT. +``` + +#### GC_STATUS_SET — constants · L28-L28 {#decl-zfi_alv-28-gc_status_set} + +```abap +CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. +``` + +#### GC_USER_COMMAND — constants · L29-L29 {#decl-zfi_alv-29-gc_user_command} + +```abap +CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zfi_alv-30-gc_top_of_page} + +```abap +CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zfi_alv-31-gc_top_of_list} + +```abap +CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. +``` + +#### GC_END_OF_LIST — constants · L32-L32 {#decl-zfi_alv-32-gc_end_of_list} + +```abap +CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. +``` + +#### GC_DATA_CHANGED — constants · L33-L33 {#decl-zfi_alv-33-gc_data_changed} + +```abap +CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. +``` + +#### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zfi_alv-34-gc_html_top_of_page} + +```abap +CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'HTML_TOP_OF_PAGE'. +``` + +#### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zfi_alv-36-gc_prt_top_of_page} + +```abap +CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE +'PRT_TOP_OF_PAGE'. +``` + +#### GV_SAVE — data · L40-L40 {#decl-zfi_alv-40-gv_save} + +```abap +DATA : GV_SAVE. +``` + +#### GV_TABIX — data · L41-L41 {#decl-zfi_alv-41-gv_tabix} + +```abap +DATA : GV_TABIX LIKE SY-TABIX. +``` + +#### GV_FLD_NAME — data · L42-L42 {#decl-zfi_alv-42-gv_fld_name} + +```abap +DATA : GV_FLD_NAME(30). +``` + +#### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zfi_alv-43-gv_exgt_caused_by_caller} + +```abap +DATA : GV_EXGT_CAUSED_BY_CALLER. +``` + +#### GV_REPID — data · L44-L44 {#decl-zfi_alv-44-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. +``` + +#### GV_DYNNR — data · L45-L45 {#decl-zfi_alv-45-gv_dynnr} + +```abap +DATA : GV_DYNNR TYPE SY-DYNNR. +``` + +#### GV_PROGRAM_NAME — data · L46-L46 {#decl-zfi_alv-46-gv_program_name} + +```abap +DATA : GV_PROGRAM_NAME LIKE SY-REPID. +``` + +#### GV_INCLNAME — data · L47-L47 {#decl-zfi_alv-47-gv_inclname} + +```abap +DATA : GV_INCLNAME LIKE TRDIR-NAME. +``` + +#### GV_EXTENSION — data · L48-L48 {#decl-zfi_alv-48-gv_extension} + +```abap +DATA : GV_EXTENSION TYPE I. +``` + +#### GS_LAYOUT — data · L51-L51 {#decl-zfi_alv-51-gs_layout} + +```abap +DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zfi_alv-52-gs_exgt_caused_by_user} + +```abap +DATA: + GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_FIELDCAT — data · L53-L53 {#decl-zfi_alv-53-gs_fieldcat} + +```abap +DATA: + GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### GS_SORT — data · L54-L54 {#decl-zfi_alv-54-gs_sort} + +```abap +DATA: + GS_SORT TYPE SLIS_SORTINFO_ALV. +``` + +#### GS_KEYINFO — data · L55-L55 {#decl-zfi_alv-55-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_VARIANT — data · L56-L56 {#decl-zfi_alv-56-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GS_SCROLL — data · L57-L57 {#decl-zfi_alv-57-gs_scroll} + +```abap +DATA: + GS_SCROLL TYPE SLIS_LIST_SCROLL. +``` + +#### GS_DETAIL_FUNC — data · L58-L58 {#decl-zfi_alv-58-gs_detail_func} + +```abap +DATA: + GS_DETAIL_FUNC LIKE DD02L-TABNAME. +``` + +#### GS_LVC_LAYO1 — data · L60-L60 {#decl-zfi_alv-60-gs_lvc_layo1} + +```abap +DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ +``` + +#### GS_LVC_LAYO2 — data · L61-L61 {#decl-zfi_alv-61-gs_lvc_layo2} + +```abap +DATA: + GS_LVC_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO3 — data · L62-L62 {#decl-zfi_alv-62-gs_lvc_layo3} + +```abap +DATA: + GS_LVC_LAYO3 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_LAYO4 — data · L63-L63 {#decl-zfi_alv-63-gs_lvc_layo4} + +```abap +DATA: + GS_LVC_LAYO4 TYPE LVC_S_LAYO. +``` + +#### GS_LVC_FCAT — data · L65-L65 {#decl-zfi_alv-65-gs_lvc_fcat} + +```abap +DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG +``` + +#### GS_ROW — data · L67-L67 {#decl-zfi_alv-67-gs_row} + +```abap +DATA : GS_ROW LIKE LVC_S_ROW. +``` + +#### GS_COL — data · L68-L68 {#decl-zfi_alv-68-gs_col} + +```abap +DATA: + GS_COL LIKE LVC_S_COL. +``` + +#### GS_STABLE — data · L69-L69 {#decl-zfi_alv-69-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GT_EVENTS — data · L72-L72 {#decl-zfi_alv-72-gt_events} + +```abap +DATA : GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### GT_LISTHEADER — data · L73-L73 {#decl-zfi_alv-73-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. +``` + +#### GT_FIELDCAT — data · L74-L74 {#decl-zfi_alv-74-gt_fieldcat} + +```abap +DATA: + GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_SORT — data · L75-L75 {#decl-zfi_alv-75-gt_sort} + +```abap +DATA: + GT_SORT TYPE SLIS_T_SORTINFO_ALV. +``` + +#### GT_EXIT — data · L76-L76 {#decl-zfi_alv-76-gt_exit} + +```abap +DATA: + GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. +``` + +#### GT_PRINT — data · L77-L77 {#decl-zfi_alv-77-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. +``` + +#### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zfi_alv-79-gt_ui_functions1} + +```abap +DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR +``` + +#### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zfi_alv-80-gt_ui_functions2} + +```abap +DATA: + GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zfi_alv-81-gt_ui_functions3} + +```abap +DATA: + GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. +``` + +#### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zfi_alv-82-gt_ui_functions4} + +```abap +DATA: + GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. +``` + +#### GT_LVC_SORT1 — data · L84-L84 {#decl-zfi_alv-84-gt_lvc_sort1} + +```abap +DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT +``` + +#### GT_LVC_SORT2 — data · L85-L85 {#decl-zfi_alv-85-gt_lvc_sort2} + +```abap +DATA: + GT_LVC_SORT2 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT3 — data · L86-L86 {#decl-zfi_alv-86-gt_lvc_sort3} + +```abap +DATA: + GT_LVC_SORT3 TYPE LVC_T_SORT. +``` + +#### GT_LVC_SORT4 — data · L87-L87 {#decl-zfi_alv-87-gt_lvc_sort4} + +```abap +DATA: + GT_LVC_SORT4 TYPE LVC_T_SORT. +``` + +#### GT_LVC_FCAT1 — data · L89-L89 {#decl-zfi_alv-89-gt_lvc_fcat1} + +```abap +DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG +``` + +#### GT_LVC_FCAT2 — data · L90-L90 {#decl-zfi_alv-90-gt_lvc_fcat2} + +```abap +DATA: + GT_LVC_FCAT2 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT3 — data · L91-L91 {#decl-zfi_alv-91-gt_lvc_fcat3} + +```abap +DATA: + GT_LVC_FCAT3 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_FCAT4 — data · L92-L92 {#decl-zfi_alv-92-gt_lvc_fcat4} + +```abap +DATA: + GT_LVC_FCAT4 TYPE LVC_T_FCAT. +``` + +#### GT_LVC_DROP — data · L95-L95 {#decl-zfi_alv-95-gt_lvc_drop} + +```abap +DATA : GT_LVC_DROP TYPE LVC_T_DROP. +``` + +#### GS_LVC_DROP — data · L96-L96 {#decl-zfi_alv-96-gs_lvc_drop} + +```abap +DATA: + GS_LVC_DROP TYPE LVC_S_DROP. +``` + +#### GT_ALV_COLOR — data · L99-L99 {#decl-zfi_alv-99-gt_alv_color} + +```abap +DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. +``` + +#### GS_ALV_COLOR — data · L100-L100 {#decl-zfi_alv-100-gs_alv_color} + +```abap +DATA: + GS_ALV_COLOR TYPE LVC_S_COLO. +``` + +#### GT_ROWS — data · L103-L103 {#decl-zfi_alv-103-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. +``` + +#### GS_ROWS — data · L104-L104 {#decl-zfi_alv-104-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. +``` + +#### GV_FUN — data · L105-L105 {#decl-zfi_alv-105-gv_fun} + +```abap +DATA: + GV_FUN(1) VALUE 'D'. +``` + +#### GS_F4_VALUE — data · L109-L109 {#decl-zfi_alv-109-gs_f4_value} + +```abap +DATA : GS_F4_VALUE TYPE SEAHLPRES. +``` + +#### GS_F4_FIELD — data · L110-L110 {#decl-zfi_alv-110-gs_f4_field} + +```abap +DATA: + GS_F4_FIELD TYPE DFIES. +``` + +#### GS_F4 — data · L111-L111 {#decl-zfi_alv-111-gs_f4} + +```abap +DATA: + GS_F4 TYPE DDSHRETVAL. +``` + +#### GS_LVC_MODI — data · L112-L112 {#decl-zfi_alv-112-gs_lvc_modi} + +```abap +DATA: + GS_LVC_MODI TYPE LVC_S_MODI. +``` + +#### GS_LVC_F4 — data · L113-L113 {#decl-zfi_alv-113-gs_lvc_f4} + +```abap +DATA: + GS_LVC_F4 TYPE LVC_S_F4. +``` + +#### GT_F4_VALUES — data · L116-L116 {#decl-zfi_alv-116-gt_f4_values} + +```abap +DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. +``` + +#### GT_F4_FIELDS — data · L117-L117 {#decl-zfi_alv-117-gt_f4_fields} + +```abap +DATA: + GT_F4_FIELDS TYPE TABLE OF DFIES. +``` + +#### GT_LVC_F4 — data · L118-L118 {#decl-zfi_alv-118-gt_lvc_f4} + +```abap +DATA: + GT_LVC_F4 TYPE LVC_T_F4. +``` + +#### — field-symbol · L121-L121 {#decl-zfi_alv-121--fs_f4tab-} + +```abap +FIELD-SYMBOLS : TYPE LVC_T_MODI. +``` + +#### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zfi_alv-123-gv_consistency_check} + +```abap +DATA : GV_CONSISTENCY_CHECK(1) TYPE C. +``` + +#### GV_ALV_COLPOS — data · L125-L125 {#decl-zfi_alv-125-gv_alv_colpos} + +```abap +DATA : GV_ALV_COLPOS TYPE I. +``` + +#### GC_STATUS_GREEN — constants · L128-L128 {#decl-zfi_alv-128-gc_status_green} + +```abap +CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. +``` + +#### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zfi_alv-129-gc_status_yellow} + +```abap +CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. +``` + +#### GC_STATUS_RED — constants · L130-L130 {#decl-zfi_alv-130-gc_status_red} + +```abap +CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. +``` + +#### GV_TOP_OF_PAGE — data · L132-L132 {#decl-zfi_alv-132-gv_top_of_page} + +```abap +DATA : GV_TOP_OF_PAGE(255) TYPE C. +``` + +#### GC_ALV1_CONTNAME — constants · L142-L142 {#decl-zfi_alv-142-gc_alv1_contname} + +```abap +CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. +``` + +#### GC_ALV2_CONTNAME — constants · L143-L143 {#decl-zfi_alv-143-gc_alv2_contname} + +```abap +CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. +``` + +#### GC_ALV3_CONTNAME — constants · L144-L144 {#decl-zfi_alv-144-gc_alv3_contname} + +```abap +CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. +``` + +#### GC_ALV4_CONTNAME — constants · L145-L145 {#decl-zfi_alv-145-gc_alv4_contname} + +```abap +CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. +``` + +#### GO_CONTAINER_TOP1 — data · L148-L148 {#decl-zfi_alv-148-go_container_top1} + +```abap +DATA: +GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV1 — data · L149-L149 {#decl-zfi_alv-149-go_container_alv1} + +```abap +DATA: +GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP2 — data · L151-L151 {#decl-zfi_alv-151-go_container_top2} + +```abap +DATA: +GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV2 — data · L152-L152 {#decl-zfi_alv-152-go_container_alv2} + +```abap +DATA: +GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP3 — data · L154-L154 {#decl-zfi_alv-154-go_container_top3} + +```abap +DATA: +GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV3 — data · L155-L155 {#decl-zfi_alv-155-go_container_alv3} + +```abap +DATA: +GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_TOP4 — data · L157-L157 {#decl-zfi_alv-157-go_container_top4} + +```abap +DATA: +GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CONTAINER_ALV4 — data · L158-L158 {#decl-zfi_alv-158-go_container_alv4} + +```abap +DATA: +GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_ALV1 — data · L160-L160 {#decl-zfi_alv-160-go_alv1} + +```abap +DATA: +GO_ALV1 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV2 — data · L161-L161 {#decl-zfi_alv-161-go_alv2} + +```abap +DATA: +GO_ALV2 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV3 — data · L162-L162 {#decl-zfi_alv-162-go_alv3} + +```abap +DATA: +GO_ALV3 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_ALV4 — data · L163-L163 {#decl-zfi_alv-163-go_alv4} + +```abap +DATA: +GO_ALV4 TYPE REF TO LCL_DEF_GRID. +``` + +#### GO_SPLITTER0 — data · L165-L165 {#decl-zfi_alv-165-go_splitter0} + +```abap +DATA: +GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER1 — data · L166-L166 {#decl-zfi_alv-166-go_splitter1} + +```abap +DATA: +GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L167-L167 {#decl-zfi_alv-167-go_splitter2} + +```abap +DATA: +GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER3 — data · L168-L168 {#decl-zfi_alv-168-go_splitter3} + +```abap +DATA: +GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER4 — data · L169-L169 {#decl-zfi_alv-169-go_splitter4} + +```abap +DATA: +GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_DOCKING — data · L171-L171 {#decl-zfi_alv-171-go_docking} + +```abap +DATA: +GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_COLUMN_TREE — data · L173-L173 {#decl-zfi_alv-173-go_column_tree} + +```abap +DATA: +GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. +``` + +#### GO_TREE — data · L174-L174 {#decl-zfi_alv-174-go_tree} + +```abap +DATA: +GO_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GO_TOOLBAR — data · L175-L175 {#decl-zfi_alv-175-go_toolbar} + +```abap +DATA: +GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GO_TEXTEDIT — data · L176-L176 {#decl-zfi_alv-176-go_textedit} + +```abap +DATA: +GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. +``` + +#### GO_EVENT_RECEIVER1 — data · L178-L178 {#decl-zfi_alv-178-go_event_receiver1} + +```abap +DATA: +GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER2 — data · L179-L179 {#decl-zfi_alv-179-go_event_receiver2} + +```abap +DATA: +GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_EVENT_RECEIVER3 — data · L180-L180 {#decl-zfi_alv-180-go_event_receiver3} + +```abap +DATA: +GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. +``` + +#### GO_DOCKING_CONT1 — data · L182-L182 {#decl-zfi_alv-182-go_docking_cont1} + +```abap +DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT2 — data · L183-L183 {#decl-zfi_alv-183-go_docking_cont2} + +```abap +DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT3 — data · L184-L184 {#decl-zfi_alv-184-go_docking_cont3} + +```abap +DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING_CONT4 — data · L185-L185 {#decl-zfi_alv-185-go_docking_cont4} + +```abap +DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DD_DOCUMENT1 — data · L187-L187 {#decl-zfi_alv-187-go_dd_document1} + +```abap +DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT2 — data · L188-L188 {#decl-zfi_alv-188-go_dd_document2} + +```abap +DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT3 — data · L189-L189 {#decl-zfi_alv-189-go_dd_document3} + +```abap +DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_DD_DOCUMENT4 — data · L190-L190 {#decl-zfi_alv-190-go_dd_document4} + +```abap +DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. +``` + +#### GO_HTML_VIEW1 — data · L192-L192 {#decl-zfi_alv-192-go_html_view1} + +```abap +DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW2 — data · L193-L193 {#decl-zfi_alv-193-go_html_view2} + +```abap +DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW3 — data · L194-L194 {#decl-zfi_alv-194-go_html_view3} + +```abap +DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_HTML_VIEW4 — data · L195-L195 {#decl-zfi_alv-195-go_html_view4} + +```abap +DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### GO_DDIC_FCAT — data · L197-L197 {#decl-zfi_alv-197-go_ddic_fcat} + +```abap +DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. +``` + +#### LCL_DEF_GRID — class · L202-L214 {#decl-zfi_alv-202-lcl_def_grid} + +```abap +CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. + + PUBLIC SECTION. + METHODS : U_SET_FIXED_ROWS, + U_SET_RESIZE_COLS, + U_SCROLL_TO_BOTTOM, + U_SET_OPTIMIZE, + U_SET_CURRENT_CELL_BASE + IMPORTING + ROW TYPE I + COL TYPE I. + +ENDCLASS. "LCL_DEF_GRID DEFINITION +``` + +#### LV_ONE_SEL — data · unit 로컬 · L374-L374 {#decl-zfi_alv-374-lv_one_sel} + +```abap + DATA : LV_ONE_SEL TYPE C. +``` + +#### — field-symbol · unit 로컬 · L478-L478 {#decl-zfi_alv-478--fs_sort-} + +```abap + FIELD-SYMBOLS : TYPE LVC_S_SORT. +``` + +#### — field-symbol · unit 로컬 · L479-L479 {#decl-zfi_alv-479--fs_fcat-} + +```abap + FIELD-SYMBOLS : TYPE LVC_S_FCAT. +``` + +### `ZFI_COMMON` (129건) + +#### BDCMSGCOLL — tables · L4-L4 {#decl-zfi_common-4-bdcmsgcoll} + +```abap +TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System +``` + +#### ALSMEX_TABLINE — tables · L5-L5 {#decl-zfi_common-5-alsmex_tabline} + +```abap +TABLES: + ALSMEX_TABLINE. " * Rows for Table with Excel Data +``` + +#### TBTCO — tables · L6-L6 {#decl-zfi_common-6-tbtco} + +```abap +TABLES: + TBTCO. " * Job status overview table +``` + +#### RFCDOC — tables · L7-L7 {#decl-zfi_common-7-rfcdoc} + +```abap +TABLES: + RFCDOC. +``` + +#### RFCDES — tables · L8-L8 {#decl-zfi_common-8-rfcdes} + +```abap +TABLES: + RFCDES. +``` + +#### DBCON — tables · L9-L9 {#decl-zfi_common-9-dbcon} + +```abap +TABLES: + DBCON. +``` + +#### STXH — tables · L10-L10 {#decl-zfi_common-10-stxh} + +```abap +TABLES: + STXH. +``` + +#### GSETH — type-pool · L11-L11 {#decl-zfi_common-11-gseth} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### ICON — type-pool · L11-L11 {#decl-zfi_common-11-icon} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### KCDE — type-pool · L11-L11 {#decl-zfi_common-11-kcde} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SCP1 — type-pool · L11-L11 {#decl-zfi_common-11-scp1} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### SLIS — type-pool · L11-L11 {#decl-zfi_common-11-slis} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### VRM — type-pool · L11-L11 {#decl-zfi_common-11-vrm} + +```abap +TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. +``` + +#### GV_CALC_I — data · L14-L14 {#decl-zfi_common-14-gv_calc_i} + +```abap +DATA : GV_CALC_I TYPE I. "* % +``` + +#### GV_PROGRESS_MSG — data · L15-L15 {#decl-zfi_common-15-gv_progress_msg} + +```abap +DATA : GV_PROGRESS_MSG(100). "* Display +``` + +#### GV_CALC_C0 — data · L16-L16 {#decl-zfi_common-16-gv_calc_c0} + +```abap +DATA : GV_CALC_C0(5). +``` + +#### GV_CALC_C1 — data · L17-L17 {#decl-zfi_common-17-gv_calc_c1} + +```abap +DATA : GV_CALC_C1(5). +``` + +#### GV_VALUE_SET — data · L20-L20 {#decl-zfi_common-20-gv_value_set} + +```abap +DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. +``` + +#### GT_VALUE_SET — data · L21-L21 {#decl-zfi_common-21-gt_value_set} + +```abap +DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. +``` + +#### GT_DETMSG — data · L23-L23 {#decl-zfi_common-23-gt_detmsg} + +```abap +DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GT_HEAMSG — data · L24-L24 {#decl-zfi_common-24-gt_heamsg} + +```abap +DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. +``` + +#### GS_DOMAIN — data · L27-L31 {#decl-zfi_common-27-gs_domain} + +```abap +DATA : BEGIN OF GS_DOMAIN, + DOMAIN LIKE DD07T-DOMNAME, + VALUE LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GS_DOMAIN. +``` + +#### GT_DOMAIN — data · L32-L32 {#decl-zfi_common-32-gt_domain} + +```abap +DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. +``` + +#### T_EXCEL_EXPORT — types · L35-L37 {#decl-zfi_common-35-t_excel_export} + +```abap +TYPES : BEGIN OF T_EXCEL_EXPORT, + EXCEL_COL TYPE STRING, +END OF T_EXCEL_EXPORT. +``` + +#### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zfi_common-39-gt_excel_export} + +```abap +DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. +``` + +#### GV_DIP_MOD — data · L43-L43 {#decl-zfi_common-43-gv_dip_mod} + +```abap +DATA : GV_DIP_MOD TYPE C. +``` + +#### GV_REFRESH — data · L45-L45 {#decl-zfi_common-45-gv_refresh} + +```abap +DATA : GV_REFRESH TYPE C. +``` + +#### GV_BUKRS_TXT — data · L50-L50 {#decl-zfi_common-50-gv_bukrs_txt} + +```abap +DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. +``` + +#### GV_KOKRS_TXT — data · L51-L51 {#decl-zfi_common-51-gv_kokrs_txt} + +```abap +DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. +``` + +#### GV_WAERS — data · L52-L52 {#decl-zfi_common-52-gv_waers} + +```abap +DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. +``` + +#### GV_KTOPL — data · L53-L53 {#decl-zfi_common-53-gv_ktopl} + +```abap +DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. +``` + +#### GV_SPRAS — data · L54-L54 {#decl-zfi_common-54-gv_spras} + +```abap +DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO +``` + +#### GV_LAND1 — data · L55-L55 {#decl-zfi_common-55-gv_land1} + +```abap +DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. +``` + +#### GC_BUKRS — constants · L57-L57 {#decl-zfi_common-57-gc_bukrs} + +```abap +CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE '1000'. +``` + +#### GC_KOKRS — constants · L58-L58 {#decl-zfi_common-58-gc_kokrs} + +```abap +CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE '1000'. +``` + +#### GS_BDC_OPTION — data · L62-L62 {#decl-zfi_common-62-gs_bdc_option} + +```abap +DATA: GS_BDC_OPTION TYPE CTU_PARAMS. +``` + +#### GT_BDCDATA — data · L63-L63 {#decl-zfi_common-63-gt_bdcdata} + +```abap +DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MESSTAB — data · L64-L64 {#decl-zfi_common-64-gt_messtab} + +```abap +DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### FTPOST — data · L70-L70 {#decl-zfi_common-70-ftpost} + +```abap +DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. +``` + +#### FTTAX — data · L71-L71 {#decl-zfi_common-71-fttax} + +```abap +DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. +``` + +#### BLNTAB — data · L72-L72 {#decl-zfi_common-72-blntab} + +```abap +DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FTPOST_TYPE — data · L73-L73 {#decl-zfi_common-73-gv_ftpost_type} + +```abap +DATA : GV_FTPOST_TYPE TYPE C. +``` + +#### GV_FTPOST_CNT — data · L74-L74 {#decl-zfi_common-74-gv_ftpost_cnt} + +```abap +DATA : GV_FTPOST_CNT TYPE I. +``` + +#### GV_FTPOST_WAERS — data · L75-L75 {#decl-zfi_common-75-gv_ftpost_waers} + +```abap +DATA : GV_FTPOST_WAERS LIKE T001-WAERS. +``` + +#### GT_IF_MSG — data · L77-L87 {#decl-zfi_common-77-gt_if_msg} + +```abap +DATA : BEGIN OF GT_IF_MSG OCCURS 0, + MSGID LIKE SY-MSGID, + MSGNO LIKE SY-MSGNO, + MSGTY LIKE SY-MSGTY, + MSGV1 LIKE SY-MSGV1, + MSGV2 LIKE SY-MSGV2, + MSGV3 LIKE SY-MSGV3, + MSGV4 LIKE SY-MSGV4, + SUBRC LIKE SY-SUBRC, + MESSAGE LIKE BDCMSGCOLL-MSGV1, +END OF GT_IF_MSG. +``` + +#### GT_EXCP_INIT_FIELD — data · L91-L93 {#decl-zfi_common-91-gt_excp_init_field} + +```abap +DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, + FNAME TYPE FNAM_____4, +END OF GT_EXCP_INIT_FIELD. +``` + +#### MACRO_VALUE_TO_RANGE — macro · L102-L120 {#decl-zfi_common-102-macro_value_to_range} + +```abap +DEFINE MACRO_VALUE_TO_RANGE. + CLEAR : GV_VALUE_SET. + CLEAR : &1. REFRESH : &1. + + LOOP AT &2 INTO GV_VALUE_SET. + &1-LOW = GV_VALUE_SET-VFROM. + &1-SIGN = 'I'. + IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. + &1-OPTION = 'BT'. + &1-HIGH = GV_VALUE_SET-VTO. + ELSE. + &1-OPTION = 'EQ'. + ENDIF. + APPEND &1. + CLEAR : &1. + ENDLOOP. + + CLEAR : &2. REFRESH : &2. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_EQ — macro · L122-L128 {#decl-zfi_common-122-add_range_eq} + +```abap +DEFINE ADD_RANGE_EQ. + CLEAR &1. + &1-SIGN = 'I'. + &1-OPTION = 'EQ'. + &1-LOW = &2. + APPEND &1. +END-OF-DEFINITION. +``` + +#### ADD_RANGE_FULL — macro · L130-L137 {#decl-zfi_common-130-add_range_full} + +```abap +DEFINE ADD_RANGE_FULL. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + APPEND &1. +END-OF-DEFINITION. +``` + +#### LT_TABLE — data · unit 로컬 · L163-L163 {#decl-zfi_common-163-lt_table} + +```abap + DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. +``` + +#### LT_FIELDCAT — data · unit 로컬 · L164-L164 {#decl-zfi_common-164-lt_fieldcat} + +```abap + DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### LT_ALV_CAT — data · unit 로컬 · L165-L165 {#decl-zfi_common-165-lt_alv_cat} + +```abap + DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### L_T001 — data · unit 로컬 · L210-L210 {#decl-zfi_common-210-l_t001} + +```abap + DATA : L_T001 LIKE T001. +``` + +#### LT_NODE — data · unit 로컬 · L236-L236 {#decl-zfi_common-236-lt_node} + +```abap + DATA : LT_NODE TYPE GSETH_NODE_TAB. +``` + +#### L_CLASS — data · unit 로컬 · L237-L237 {#decl-zfi_common-237-l_class} + +```abap + DATA : L_CLASS TYPE SETHIER-SETCLASS. +``` + +#### L_SETID — data · unit 로컬 · L238-L238 {#decl-zfi_common-238-l_setid} + +```abap + DATA : L_SETID TYPE SETHIER-SETID. +``` + +#### LT_GRPHINFO — data · unit 로컬 · L239-L239 {#decl-zfi_common-239-lt_grphinfo} + +```abap + DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. +``` + +#### L_MESSAGE — data · unit 로컬 · L240-L240 {#decl-zfi_common-240-l_message} + +```abap + DATA : L_MESSAGE TYPE STRING. +``` + +#### LS_BDCTAB — data · unit 로컬 · L309-L309 {#decl-zfi_common-309-ls_bdctab} + +```abap + DATA : LS_BDCTAB TYPE BDCDATA. +``` + +#### L_NCNT1 — data · unit 로컬 · L480-L480 {#decl-zfi_common-480-l_ncnt1} + +```abap + DATA : L_NCNT1(5) TYPE N. +``` + +#### L_NCNT2 — data · unit 로컬 · L481-L481 {#decl-zfi_common-481-l_ncnt2} + +```abap + DATA : L_NCNT2(5) TYPE N. +``` + +#### GR_TABLE — data · unit 로컬 · L513-L513 {#decl-zfi_common-513-gr_table} + +```abap + DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. +``` + +#### LT_INTERN — data · unit 로컬 · L590-L590 {#decl-zfi_common-590-lt_intern} + +```abap + DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L591-L591 {#decl-zfi_common-591--l_fs01-} + +```abap + FIELD-SYMBOLS : . +``` + +#### — field-symbol · unit 로컬 · L592-L592 {#decl-zfi_common-592--l_fs02-} + +```abap +FIELD-SYMBOLS: + TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L593-L593 {#decl-zfi_common-593--l_fs03-} + +```abap +FIELD-SYMBOLS: + . +``` + +#### LT_FCAT — data · unit 로컬 · L718-L718 {#decl-zfi_common-718-lt_fcat} + +```abap + DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. +``` + +#### LS_FCAT — data · unit 로컬 · L719-L719 {#decl-zfi_common-719-ls_fcat} + +```abap + DATA : LS_FCAT TYPE LVC_S_FCAT. +``` + +#### LF_DATA — data · unit 로컬 · L723-L723 {#decl-zfi_common-723-lf_data} + +```abap + DATA : LF_DATA TYPE REF TO DATA. +``` + +#### LL_DATA — data · unit 로컬 · L724-L724 {#decl-zfi_common-724-ll_data} + +```abap + DATA : LL_DATA TYPE REF TO DATA. +``` + +#### L_USR_ACT — data · unit 로컬 · L725-L725 {#decl-zfi_common-725-l_usr_act} + +```abap + DATA : L_USR_ACT TYPE I. +``` + +#### L_FILE_LEN — data · unit 로컬 · L726-L726 {#decl-zfi_common-726-l_file_len} + +```abap + DATA : L_FILE_LEN TYPE I. +``` + +#### L_FNAME — data · unit 로컬 · L727-L727 {#decl-zfi_common-727-l_fname} + +```abap + DATA : L_FNAME TYPE STRING. +``` + +#### L_EXT_FILENAME — data · unit 로컬 · L728-L728 {#decl-zfi_common-728-l_ext_filename} + +```abap + DATA : L_EXT_FILENAME TYPE STRING. +``` + +#### L_FULLPATH — data · unit 로컬 · L729-L729 {#decl-zfi_common-729-l_fullpath} + +```abap + DATA : L_FULLPATH TYPE STRING. +``` + +#### L_PATH — data · unit 로컬 · L730-L730 {#decl-zfi_common-730-l_path} + +```abap + DATA : L_PATH TYPE STRING. +``` + +#### — field-symbol · unit 로컬 · L732-L732 {#decl-zfi_common-732--fs_table-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L733-L733 {#decl-zfi_common-733--fs_line-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L734-L734 {#decl-zfi_common-734--fs_col-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_AMT — data · unit 로컬 · L889-L889 {#decl-zfi_common-889-lv_amt} + +```abap + DATA : LV_AMT(20) TYPE C. +``` + +#### LV_EXT — data · unit 로컬 · L890-L890 {#decl-zfi_common-890-lv_ext} + +```abap + DATA : LV_EXT TYPE BAPICURR-BAPICURR. +``` + +#### L_RESULT — data · unit 로컬 · L1063-L1063 {#decl-zfi_common-1063-l_result} + +```abap + DATA : L_RESULT TYPE ABAP_BOOL. +``` + +#### L_FILENM — data · unit 로컬 · L1064-L1064 {#decl-zfi_common-1064-l_filenm} + +```abap + DATA : L_FILENM TYPE STRING. +``` + +#### L_INTERNAL — data · unit 로컬 · L1104-L1104 {#decl-zfi_common-1104-l_internal} + +```abap + DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. +``` + +#### LV_NRRANG — data · unit 로컬 · L1133-L1133 {#decl-zfi_common-1133-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1134-L1134 {#decl-zfi_common-1134-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zfi_common-1176-lv_nrrang} + +```abap +DATA: + LV_NRRANG LIKE INRDP-NRRANGENR. +``` + +#### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zfi_common-1177-lv_object} + +```abap +DATA: + LV_OBJECT LIKE NRIV-OBJECT. +``` + +#### LV_YEAR — data · unit 로컬 · L1178-L1178 {#decl-zfi_common-1178-lv_year} + +```abap +DATA: + LV_YEAR LIKE INRI-TOYEAR. +``` + +#### USER_ACTION — data · unit 로컬 · L1328-L1328 {#decl-zfi_common-1328-user_action} + +```abap +DATA: + USER_ACTION TYPE I. +``` + +#### RTN_CODE — data · unit 로컬 · L1329-L1329 {#decl-zfi_common-1329-rtn_code} + +```abap +DATA: + RTN_CODE LIKE SY-SUBRC. +``` + +#### LT_FILETABLE — data · unit 로컬 · L1330-L1330 {#decl-zfi_common-1330-lt_filetable} + +```abap +DATA: + LT_FILETABLE TYPE FILETABLE. +``` + +#### LS_FILETABLE — data · unit 로컬 · L1331-L1331 {#decl-zfi_common-1331-ls_filetable} + +```abap +DATA: + LS_FILETABLE TYPE FILE_TABLE. +``` + +#### LV_RESULT — data · unit 로컬 · L1367-L1367 {#decl-zfi_common-1367-lv_result} + +```abap + DATA: LV_RESULT TYPE CHAR1. +``` + +#### LV_FILE — data · unit 로컬 · L1368-L1368 {#decl-zfi_common-1368-lv_file} + +```abap +DATA: + LV_FILE TYPE STRING. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1579-L1579 {#decl-zfi_common-1579-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1580-L1580 {#decl-zfi_common-1580-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1581-L1581 {#decl-zfi_common-1581-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1582-L1582 {#decl-zfi_common-1582-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1584-L1584 {#decl-zfi_common-1584--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LT_DYNPFIELDS — data · unit 로컬 · L1637-L1637 {#decl-zfi_common-1637-lt_dynpfields} + +```abap + DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. +``` + +#### LS_DYNPFIELDS — data · unit 로컬 · L1638-L1638 {#decl-zfi_common-1638-ls_dynpfields} + +```abap +DATA: + LS_DYNPFIELDS TYPE DYNPREAD. +``` + +#### LV_DYNAME — data · unit 로컬 · L1639-L1639 {#decl-zfi_common-1639-lv_dyname} + +```abap +DATA: + LV_DYNAME TYPE SY-REPID. +``` + +#### LV_DYNUM — data · unit 로컬 · L1640-L1640 {#decl-zfi_common-1640-lv_dynum} + +```abap +DATA: + LV_DYNUM TYPE SY-DYNNR. +``` + +#### — field-symbol · unit 로컬 · L1642-L1642 {#decl-zfi_common-1642--fs_field-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### LV_TRANSFER_BIN — data · unit 로컬 · L1736-L1736 {#decl-zfi_common-1736-lv_transfer_bin} + +```abap + DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. +``` + +#### LT_CONTENT_TXT — data · unit 로컬 · L1737-L1737 {#decl-zfi_common-1737-lt_content_txt} + +```abap +DATA: + LT_CONTENT_TXT TYPE SOLI_TAB. +``` + +#### LT_CONTENT_BIN — data · unit 로컬 · L1738-L1738 {#decl-zfi_common-1738-lt_content_bin} + +```abap +DATA: + LT_CONTENT_BIN TYPE SOLIX_TAB. +``` + +#### LT_OBJHEAD — data · unit 로컬 · L1739-L1739 {#decl-zfi_common-1739-lt_objhead} + +```abap +DATA: + LT_OBJHEAD TYPE SOLI_TAB. +``` + +#### LV_LEN_IN — data · unit 로컬 · L1740-L1740 {#decl-zfi_common-1740-lv_len_in} + +```abap +DATA: + LV_LEN_IN LIKE SOOD-OBJLEN. +``` + +#### LS_OTF — data · unit 로컬 · L1741-L1741 {#decl-zfi_common-1741-ls_otf} + +```abap +DATA: + LS_OTF TYPE SOLISTI1. +``` + +#### LV_BIN_FILESIZE — data · unit 로컬 · L1742-L1742 {#decl-zfi_common-1742-lv_bin_filesize} + +```abap +DATA: + LV_BIN_FILESIZE TYPE I. +``` + +#### LV_BIN_FILE — data · unit 로컬 · L1743-L1743 {#decl-zfi_common-1743-lv_bin_file} + +```abap +DATA: + LV_BIN_FILE TYPE XSTRING. +``` + +#### LT_LINES — data · unit 로컬 · L1744-L1744 {#decl-zfi_common-1744-lt_lines} + +```abap +DATA: + LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. +``` + +#### LV_FILESIZE — data · unit 로컬 · L1745-L1745 {#decl-zfi_common-1745-lv_filesize} + +```abap + DATA : LV_FILESIZE TYPE I. +``` + +#### LV_FILENAME — data · unit 로컬 · L1746-L1746 {#decl-zfi_common-1746-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LT_OTF — data · unit 로컬 · L1747-L1747 {#decl-zfi_common-1747-lt_otf} + +```abap + DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. +``` + +#### LV_FILENAME — data · unit 로컬 · L1812-L1812 {#decl-zfi_common-1812-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_PATH — data · unit 로컬 · L1813-L1813 {#decl-zfi_common-1813-lv_path} + +```abap +DATA: + LV_PATH TYPE STRING. +``` + +#### LV_FULLPATH — data · unit 로컬 · L1814-L1814 {#decl-zfi_common-1814-lv_fullpath} + +```abap +DATA: + LV_FULLPATH TYPE STRING. +``` + +#### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1815-L1815 {#decl-zfi_common-1815-lv_default_extension} + +```abap +DATA: + LV_DEFAULT_EXTENSION TYPE STRING. +``` + +#### LV_FILE_FILTER — data · unit 로컬 · L1816-L1816 {#decl-zfi_common-1816-lv_file_filter} + +```abap +DATA: + LV_FILE_FILTER TYPE STRING. +``` + +#### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1817-L1817 {#decl-zfi_common-1817-lv_initial_directory} + +```abap +DATA: + LV_INITIAL_DIRECTORY TYPE STRING. +``` + +#### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1818-L1818 {#decl-zfi_common-1818-lv_default_file_name} + +```abap +DATA: + LV_DEFAULT_FILE_NAME TYPE STRING. +``` + +#### LV_USER_ACTION — data · unit 로컬 · L1821-L1821 {#decl-zfi_common-1821-lv_user_action} + +```abap +DATA: + LV_USER_ACTION TYPE I. +``` + +#### — field-symbol · unit 로컬 · L1877-L1877 {#decl-zfi_common-1877--field-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### — field-symbol · unit 로컬 · L1878-L1878 {#decl-zfi_common-1878--itab-} + +```abap + FIELD-SYMBOLS : TYPE STANDARD TABLE. +``` + +#### — field-symbol · unit 로컬 · L1879-L1879 {#decl-zfi_common-1879--iline-} + +```abap + FIELD-SYMBOLS : TYPE ANY. +``` + +#### LV_CURR — data · unit 로컬 · L1959-L1959 {#decl-zfi_common-1959-lv_curr} + +```abap + DATA : LV_CURR(15) TYPE C. +``` + +### `ZFIR0040F01` (2건) + +#### LV_BUKRS — data · unit 로컬 · L48-L48 {#decl-zfir0040f01-48-lv_bukrs} + +```abap + DATA : LV_BUKRS LIKE T001-BUKRS. +``` + +#### LT_ZFI0090 — data · unit 로컬 · L96-L96 {#decl-zfir0040f01-96-lt_zfi0090} + +```abap + DATA : LT_ZFI0090 LIKE ZFIT0090 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZFIR0040 L27-32 | 0 | SET_DYNP를 호출해 선택화면 기본값을 세팅하는 INITIALIZATION 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0040 L33-42 | 0 | 선택화면 출력 시 LOOP_AT_SCREEN을 호출해 화면 필드 속성을 조정하는 AT SELECTION-SCREEN OUTPUT 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0040 L43-49 | 0 | INITIALIZE_DATA로 초기화한 뒤 PROCESS_DATA로 비용전표 연계 내역을 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZFIR0040 L50-61 | 0 | 온라인 실행이면 조회 결과가 있을 때 화면 100을 호출하고 없으면 'No Data Found' 메시지를 내며, 배치 실행 시 스풀 출력은 주석 처리된 END-OF-SELECTION 이벤트이다. | +| LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZFIR0040C01 L63-65 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZFIR0040C01 L67-71 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0040C01 L73-77 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0040C01 L79-83 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZFIR0040C01 L85-89 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0040C01 L91-95 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0040C01 L97-101 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0040C01 L103-111 | 0 | | +| LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZFIR0040C01 L113-115 | 0 | | +| TOOBAR_PART | FORM | ZFIR0040C01 L123-127 | 0 | | +| USER_COMMAND_PART | FORM | ZFIR0040C01 L135-141 | 0 | | +| DATA_CHANGED | FORM | ZFIR0040C01 L149-151 | 0 | | +| F_OUT_MESSAGE_PROC | FORM | ZFIR0040C01 L160-176 | 0 | | +| DATA_CHANGED_FINISHED | FORM | ZFIR0040C01 L185-188 | 0 | | +| HOTSPOT_CLICK | FORM | ZFIR0040C01 L197-200 | 0 | | +| DOUBLE_CLICK | FORM | ZFIR0040C01 L210-216 | 0 | | +| ON_F4 | FORM | ZFIR0040C01 L230-246 | 0 | | +| ON_F4_100 | FORM | ZFIR0040C01 L260-278 | 0 | | +| DISPLAY_ALV_LIST | FORM | ZFIR0040C01 L288-358 | 0 | | +| SET_FCAT_DDIC_X01 | FORM | ZFIR0040C01 L368-433 | 0 | | +| FILL_FIELD_CATALOGS | FORM | ZFIR0040C01 L445-463 | 0 | | +| FILL_FCAT | FORM | ZFIR0040C01 L477-558 | 0 | | +| GET_LIKEITAB_FACT | FORM | ZFIR0040C01 L569-619 | 0 | | +| SET_TOP_OF_PAGE | FORM | ZFIR0040C01 L631-689 | 0 | | +| SET_TOP_OF_PAGE_TEXT | FORM | ZFIR0040C01 L699-709 | 0 | | +| LOOP_AT_SCREEN | FORM | ZFIR0040F01 L6-17 | 0 | 회사코드 입력 권한(GV_BUKRS_O)이 없으면 그룹 MG1 선택화면 필드를 입력 불가로 바꾸는 화면 속성 조정 FORM이다. | +| SET_DYNP | FORM | ZFIR0040F01 L24-41 | 1 | 선택화면 초기화 시 회사코드 기본정보·회사명을 세팅하고 전표일자·전송일자 선택조건 기본값을 당일로 설정하는 FORM이다. | +| INITIALIZE_DATA | FORM | ZFIR0040F01 L47-78 | 1 | 처리 전 회사코드 기본정보를 세팅하고 메인 ALV용 딕셔너리 필드카탈로그를 취득하며 오류로그·잠금·상태 플래그를 초기화하고 ZDBTYPE·ZDCANCELFLAG 도메인 텍스트를 읽어 두는 초기화 FORM이다. | +| PROCESS_DATA | FORM | ZFIR0040F01 L84-86 | 0 | SELECT_DATA를 호출해 비용전표 연계 내역을 조회하는 단순 위임 FORM이다. | +| SELECT_DATA | FORM | ZFIR0040F01 L95-146 | 2 | 비용전표 연계 내역을 조건에 맞게 읽어 취소플래그 텍스트·공급업체명·계정명·처리상태 아이콘을 붙인다. | +| CALL_FB03 | FORM | ZFIR0040F01 L155-185 | 1 | ALV 행 번호로 비용전표 연계 내역을 읽어 전표번호가 있으면 FB03 전표 조회를 호출하는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0040I01 L6-28 | 1 | 화면 100의 PAI에서 BACK/CANC/EXIT 기능코드를 받아 ALV 컨테이너를 정리하고 화면을 빠져나가는 USER_COMMAND 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0040O01 L6-20 | 0 | | +| CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZFIR0040O01 L26-65 | 0 | | +| CREATE_CUSTOM_OBJECT_0100 | FORM | ZFIR0040O01 L75-119 | 0 | | +| SET_ALV_LAYOUT_0100 | FORM | ZFIR0040O01 L127-147 | 0 | | +| SET_ALV_LAYOUT_POP | FORM | ZFIR0040O01 L155-164 | 0 | | +| SET_ALV_TOOLBAR_0100 | FORM | ZFIR0040O01 L172-194 | 0 | | +| SET_ALV_EVENT_REGISTER_0100 | FORM | ZFIR0040O01 L203-231 | 0 | | +| SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZFIR0040O01 L304-319 | 0 | | +| SET_FCAT_LIKETAB_0100 | FORM | ZFIR0040O01 L329-481 | 0 | | +| SET_ALV_SORT_0100 | FORM | ZFIR0040O01 L489-519 | 0 | | +| LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZFI_ALV L221-225 | 0 | ALV 그리드 첫 행을 고정하는 SET_FIXED_ROWS 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZFI_ALV L227-231 | 0 | ALV 컬럼 폭 조정 가능 여부를 설정하는 SET_RESIZE_COLS 래퍼 메서드다. | +| LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZFI_ALV L233-235 | 0 | ALV 그리드를 맨 아래로 스크롤하는 SCROLL_TO_BOTTOM 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZFI_ALV L237-242 | 0 | ALV 그리드의 현재 셀 위치를 지정하는 SET_CURRENT_CELL_BASE 래퍼 메서드다. | +| LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZFI_ALV L244-248 | 0 | ALV 모든 컬럼 폭을 헤더 포함 최적화하는 OPTIMIZE_ALL_COLS 래퍼 메서드다. | +| CLEAR_CONTAINER_PROC | FORM | ZFI_ALV L262-310 | 0 | HTML 뷰어·ALV 그리드·컨테이너·스플리터 객체를 순서대로 FREE 하고 CFW FLUSH 하는 화면 정리 루틴이다. | +| UCOMM_PROC | FORM | ZFI_ALV L319-342 | 0 | 화면 PAI 에서 ALV 변경 데이터를 확정(CHECK_CHANGED_DATA)하고 CL_GUI_CFW=>DISPATCH 로 컨트롤 이벤트를 분배한 뒤 OK 코드를 정리하는 ALV PAI 공통 처리다. | +| GET_SELECTED_ROW | FORM | ZFI_ALV L351-360 | 0 | ALV 그리드의 선택 행 인덱스를 GET_SELECTED_ROWS 로 GT_ROWS 에 가져오는 유틸리티다. | +| GET_SELECTED_ROW2 | FORM | ZFI_ALV L369-397 | 1 | ALV 그리드에서 선택된 행 인덱스를 GT_ROWS 로 가져오고 미선택/복수 선택 시 오류 메시지를 표시하는 유틸리티다. | +| REFRESH_CONTAINER | FORM | ZFI_ALV L406-436 | 0 | ALV 그리드의 프런트엔드 레이아웃을 재설정하고 REFRESH_TABLE_DISPLAY(안정 스크롤/소프트 리프레시)로 화면을 갱신하는 ALV 유틸리티다. | +| APPEND_EXCLUDE_FUNCTIONS | FORM | ZFI_ALV L445-453 | 0 | ALV 툴바 제외 기능 코드(UI_FUNC)를 제외 목록 테이블에 추가하는 유틸리티다. | +| REGISTER_ALV_EVENT | FORM | ZFI_ALV L462-465 | 0 | ALV 이벤트 등록용 빈 FORM(구현 없음)이다. | +| CHECK_SORT_PARAMETER | FORM | ZFI_ALV L472-493 | 1 | ALV 정렬 설정(LVC_T_SORT)의 필드가 필드카탈로그에 존재하는지 검사해 누락 필드명을 돌려주는 검증 루틴이다. | +| ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZFI_COMMON L145-150 | 0 | BDC 생성 시 값이 비어 있으면 제외할 필드명을 GT_EXCP_INIT_FIELD 목록에 등록하는 유틸리티다. | +| GET_FCAT_LIKE_ITAB | FORM | ZFI_COMMON L159-200 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | +| SET_COMPANY_BASE | FORM | ZFI_COMMON L209-226 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | +| GET_SETLEAF_VALUES | FORM | ZFI_COMMON L232-295 | 1 | 세트 클래스(코스트센터/원가요소/오더/손익센터/계정과목 그룹)와 세트명으로 K_HIERARCHY_TABLES_READ 를 호출해 세트 값 목록(GT_VALUE_SET)을 읽는 공통 루틴이다. | +| DYNPRO | FORM | ZFI_COMMON L307-333 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | +| SET_BDC_OPTION | FORM | ZFI_COMMON L347-364 | 0 | CALL TRANSACTION 옵션 구조(CTU_PARAMS)에 표시모드·업데이트모드·커밋 등 BDC 실행 옵션을 채우는 유틸리티다. | +| ZERO_O | FORM | ZFI_COMMON L373-379 | 0 | CONVERSION_EXIT_ALPHA_OUTPUT 로 선행 0을 제거해 출력 형식으로 바꾸는 유틸리티다. | +| ZERO_I | FORM | ZFI_COMMON L388-394 | 0 | CONVERSION_EXIT_ALPHA_INPUT 로 선행 0을 채워 내부 형식으로 바꾸는 유틸리티다. | +| F4_DATE_FORMAT_YYYYMM | FORM | ZFI_COMMON L403-419 | 0 | POPUP_TO_SELECT_MONTH 로 YYYYMM 월을 선택받는 F4 유틸리티(기본값은 현재 월)다. | +| F4_DATE_FORMAT_YYYYMMDD | FORM | ZFI_COMMON L428-434 | 0 | F4_DATE 달력 팝업으로 YYYYMMDD 날짜를 선택받는 F4 유틸리티다. | +| DATE_CHK | FORM | ZFI_COMMON L444-453 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | +| BAR_MSG | FORM | ZFI_COMMON L463-468 | 0 | 백분율과 텍스트로 SAPGUI_PROGRESS_INDICATOR 진행 표시줄을 갱신하는 한 줄 유틸리티다. | +| BAR_MSG_PER | FORM | ZFI_COMMON L479-503 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | +| DISPLAY_SPOOL_BY_SALV | FORM | ZFI_COMMON L512-522 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | +| SET_MINUS_FRONT | FORM | ZFI_COMMON L531-537 | 0 | CLOI_PUT_SIGN_IN_FRONT 로 숫자 문자열의 음수 부호를 앞으로 옮기는 표시 유틸리티다. | +| F4_FNAME | FORM | ZFI_COMMON L545-568 | 0 | 파일 열기 대화상자로 업로드 파일명을 선택받는 F4 유틸리티다. | +| UPLOAD_DATA | FORM | ZFI_COMMON L582-639 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | +| BDC_DATE | FORM | ZFI_COMMON L648-654 | 0 | BDC 전송용 날짜 문자열에서 '.', '-', '/' 구분자를 제거해 YYYYMMDD 형식으로 만드는 유틸리티다. | +| BDC_CURR | FORM | ZFI_COMMON L663-667 | 0 | BDC 전송용 금액 문자열에서 천단위 콤마를 제거하는 한 줄 유틸리티다. | +| BDC_CHECKBOX | FORM | ZFI_COMMON L676-678 | 0 | BDC 체크박스 입력값을 대문자로 변환하는 한 줄 유틸리티다. | +| BUILD_MESSAGE | FORM | ZFI_COMMON L688-709 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | +| EXCEL_FORM_DOWNLOAD | FORM | ZFI_COMMON L716-846 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | +| CONVERT_CURRENCY | FORM | ZFI_COMMON L859-878 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | +| CONVERT_CHAR_TO_AMT | FORM | ZFI_COMMON L888-915 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFI_COMMON L927-955 | 0 | 내부테이블 값 목록으로 F4 검색도움(F4IF_INT_TABLE_VALUE_REQUEST)을 띄워 선택값을 화면 필드에 돌려주는 F4 공통 루틴이다. | +| POPUP_TO_CONFIRM_02 | FORM | ZFI_COMMON L966-979 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZFI_COMMON L991-1016 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | +| GET_LAST_DAY | FORM | ZFI_COMMON L1025-1035 | 1 | 입력 날짜가 속한 월의 마지막 날짜를 RP_LAST_DAY_OF_MONTHS 로 구하는 날짜 유틸리티다. | +| SET_DSMOD | FORM | ZFI_COMMON L1043-1052 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | +| FILE_EXISTS | FORM | ZFI_COMMON L1061-1092 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | +| AMT_CONV_TO_INTERNAL | FORM | ZFI_COMMON L1101-1118 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | +| GET_NEXT_NUMBER | FORM | ZFI_COMMON L1129-1160 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_NEXT_NUMBER_YEAR | FORM | ZFI_COMMON L1172-1211 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | +| GET_VALUE_LIST_DOM | FORM | ZFI_COMMON L1220-1235 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | +| GET_DOM_TEXT_LIST | FORM | ZFI_COMMON L1244-1255 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | +| MD_CONVER_MAT_UNIT | FORM | ZFI_COMMON L1268-1298 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | +| SHOW_MESSAGE_LIST | FORM | ZFI_COMMON L1306-1316 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | +| GET_FILE_PATH | FORM | ZFI_COMMON L1325-1356 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | +| CHK_FILE_PATH | FORM | ZFI_COMMON L1365-1390 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | +| SET_BUTTON_100 | FORM | ZFI_COMMON L1401-1423 | 0 | 선택화면 기능 버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 UI 유틸리티다. | +| BDC_CREATE_AENNR | FORM | ZFI_COMMON L1502-1569 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | +| GET_DYNP_VALUES_READ | FORM | ZFI_COMMON L1577-1626 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | +| SET_DYNP_VALUES | FORM | ZFI_COMMON L1635-1676 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | +| AUTHORITY_CHECK_TCODE | FORM | ZFI_COMMON L1682-1695 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | +| SET_BTN_1000 | FORM | ZFI_COMMON L1705-1725 | 0 | 선택화면(1000)의 기능 버튼(SSCRFIELDS-FUNCTXT_nn)에 아이콘과 텍스트를 동적으로 설정하는 UI 유틸리티다. | +| F_PDF_DOWNLOAD | FORM | ZFI_COMMON L1734-1799 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | +| OPEN_SAVE_FILE_SEL | FORM | ZFI_COMMON L1808-1864 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | +| ALSMEX_TAB_TO_ITAB | FORM | ZFI_COMMON L1874-1902 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | +| START_INTERFACE_BDC | FORM | ZFI_COMMON L1910-1930 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | +| END_INTERFACE_BDC | FORM | ZFI_COMMON L1937-1947 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | +| FILL_FIELD | FORM | ZFI_COMMON L1957-1980 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | +| BUILD_MESSGE_IF | FORM | ZFI_COMMON L1989-2004 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | +| GET_POST_PERIOD | FORM | ZFI_COMMON L2014-2041 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | diff --git a/wiki/programs/ZFIR0050.md b/wiki/programs/ZFIR0050.md new file mode 100644 index 0000000..25dac6e --- /dev/null +++ b/wiki/programs/ZFIR0050.md @@ -0,0 +1,5990 @@ +--- +type: abap-program +title: "ZFIR0050 — 임시전표 관리" +description: "파킹(임시) 전표를 전자결재 흐름에 태워 관리하는 화면이다. VBSEG* 계열 파킹 전표 테이블과 BKPF/BSEG 를 읽어 헤더/아이템 2단 ALV(스플리터)로 보여주고, 결재상신 → 팀장 승인 → 임원 승인 → (반려/승인취소) 상태 전이를 화면에서 처리한다. 진행 상태는 CBO 테이블 ZFIT0100/0101/0102 와 ZIFT0010 에 기록해 결재 이력을 남긴다." +resource: "abap://ZFIR0050" +tags: ["전표", "임시전표", "전자결재", "승인관리", "미결관리", "FI", "전표아이템", "파킹전표", "계정유형", "고객", "공급업체", "자산", "통합조회", "입력자", "전표유형", "코스트센터", "사업장", "전기키", "고객명", "구매처명"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:20+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["ANLA", "BKPF", "BSEG", "CSKT", "DD07T", "J_1BBRANCH", "KNA1", "LFA1", "LTDX", "MAKT", "SKAT", "T001", "T003T", "T005", "T007S", "T052U", "TBSLT", "TKA02", "USR01", "VBSEGA", "VBSEGD", "VBSEGK", "VBSEGS", "V_USERNAME", "ZFIT0100", "ZFIT0160", "ZIFT0010"] +x-tables-write: ["GT_HEAD", "ZFIT0100", "ZFIT0101", "ZFIT0102", "ZIFT0010"] +x-calls: ["AS03", "BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CALCULATE_TAXES_GROSS", "CALL_BROWSER", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "MM03", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS"] +x-code-hash: "3af4597a5abe8485047c082175c94247b9398c9a8fd20c2f33f460f13dd9712d" +x-unit-count: 117 +x-chunk-count: 79 +x-declaration-count: 319 +--- + +## 업무 목적 + +파킹(임시) 전표를 전자결재 흐름에 태워 관리하는 화면이다. VBSEG* 계열 파킹 전표 테이블과 BKPF/BSEG 를 읽어 헤더/아이템 2단 ALV(스플리터)로 보여주고, 결재상신 → 팀장 승인 → 임원 승인 → (반려/승인취소) 상태 전이를 화면에서 처리한다. 진행 상태는 CBO 테이블 ZFIT0100/0101/0102 와 ZIFT0010 에 기록해 결재 이력을 남긴다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비하고 화면 속성을 조정한다 (ALV_SETTING → GET_DOMAIN → MODIFY_SCREEN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 전표 헤더·아이템 정보와 기존 결재 상태를 읽는다 (GET_BKPF → GET_BSEG → GET_ZFIT0100) +4. 고객·공급업체·자산·자재 텍스트를 붙여 헤더/아이템 표시 데이터를 만든다 (DISPLAY_DATA) +5. 스플리터 컨테이너에 헤더 ALV 와 아이템 ALV 를 2단으로 띄운다 (SPLITTER_CONTAINER) +6. 사용자 액션에 따라 결재상신·팀장승인·임원승인·반려·승인취소·삭제를 처리한다 (PROCESSING_DATA / CONFIRM_DATA / CONFIRM_DATA_2 / REJECT_DATA / CANCEL_CONFIRM_DATA / DELETE_DATA) +7. 결재상신 중인 문서는 별도 화면 0200 에서 조회한다 (DISPLAY_PROCESSING_DATA) + +## 핵심 내부테이블 + +- `GT_HEAD` — 임시전표 헤더 목록 (채움: GET_BKPF, DISPLAY_DATA / 소비: ALV_GRID_DISPLAY1) +- `GT_ITEM` — 선택 전표의 아이템 목록 (채움: GET_BSEG / 소비: ALV_GRID_DISPLAY2) + +## 테이블 / 외부 호출 + +- read: ANLA, BKPF, BSEG, CSKT, DD07T, J_1BBRANCH, KNA1, LFA1, LTDX, MAKT, SKAT, T001, T003T, T005, T007S, T052U, TBSLT, TKA02, USR01, VBSEGA, VBSEGD, VBSEGK, VBSEGS, V_USERNAME, ZFIT0100, ZFIT0160, ZIFT0010 +- write: GT_HEAD, ZFIT0100, ZFIT0101, ZFIT0102, ZIFT0010 +- 외부 호출: AS03, BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CALCULATE_TAXES_GROSS, CALL_BROWSER, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, MM03, NUMBER_GET_NEXT + +## 로직 조각 (79건 / unit 48개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT INITIALIZATION — `ZFIR0050` L32-L87 (56줄) + +*ALV 초기 설정 후 전기일 기본값을 전월로 잡고, 사용자ID로 임원(GV_CON)/회계팀(GV_SUPER)/일반 사용자를 구분해 일반 사용자는 본인 입력 전표만 조회되도록 S_USNAM을 고정하며 도메인 텍스트를 읽는 INITIALIZATION 이벤트이다.* + +> 이 unit 의 조각 2개가 19/56줄(34%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 당월 1일에서 하루를 빼 전월 말일을 구하고 그 달 1일~말일을 전기일(BUDAT) 선택 범위 기본값으로 설정한다. + +```abap + 37| S_BUDAT-SIGN = C_I. + 38| S_BUDAT-OPTION = C_BT. + 39| CONCATENATE SY-DATUM(6) '01' INTO S_BUDAT-HIGH. + 40| S_BUDAT-HIGH = S_BUDAT-HIGH - 1. + 41| CONCATENATE S_BUDAT-HIGH(6) '01' INTO S_BUDAT-LOW. + 42| APPEND S_BUDAT. +``` + +- **EN**: Defaults the posting date select-option to the previous month (first to last day) computed from the current date. +- 업무 키워드: 전기일 기본값, 전월 범위, 선택조건 초기화 +- English: Posting Date, Default Select-Option, Previous Month +- 정의부(복사 시 함께 필요): [`S_BUDAT`](#decl-zfir0050top-189-s_budat), [`C_I`](#decl-zficom-216-c_i), [`C_BT`](#decl-zficom-246-c_bt) +- 위치: `abap://ZFIR0050/ZFIR0050#L37-L42` · confidence 0.9 · `ZFIR0050#ZFIR0050#EVENT#INITIALIZATION#C1` + +#### [validation] 로그인 사용자가 임원 상수(C_USNAM_2)면 임원 모드(GV_CON), ID가 'FI'로 시작하면 회계팀 슈퍼 모드(GV_SUPER)로 두고, 그 외는 입력자 선택조건 S_USNAM을 본인 ID로 고정해 자기 전표만 보게 한다. + +```abap + 58| CLEAR: GV_SUPER, GV_CON. + 59| IF SY-UNAME EQ C_USNAM_2. "임원 + 60| GV_CON = C_X. + 61| ELSE. + 62| IF SY-UNAME(2) EQ 'FI'. + 63| GV_SUPER = C_X. + 64| ELSE. + 65| S_USNAM-SIGN = C_I. + 66| S_USNAM-OPTION = C_EQ. + 67| S_USNAM-LOW = SY-UNAME. + 68| APPEND S_USNAM. + 69| ENDIF. + 70| ENDIF. +``` + +- **EN**: Determines the user role from SY-UNAME (executive constant, FI prefix for accounting team, otherwise restricts the user select-option to the current user). +- 업무 키워드: 사용자 역할 구분, 임원, 회계팀, 본인 전표 제한, 권한 +- English: User Role, Authorization, SY-UNAME, Select-Option Restriction +- 정의부(복사 시 함께 필요): [`GV_SUPER`](#decl-zfir0050top-156-gv_super), [`GV_CON`](#decl-zfir0050top-157-gv_con), [`C_USNAM_2`](#decl-zfir0050top-181-c_usnam_2), [`C_X`](#decl-zficom-231-c_x), [`S_USNAM`](#decl-zfir0050top-193-s_usnam), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq) +- 위치: `abap://ZFIR0050/ZFIR0050#L58-L70` · confidence 0.85 · `ZFIR0050#ZFIR0050#EVENT#INITIALIZATION#C2` + +### FORM GET_DOMAIN — `ZFIR0050F01` L9-L32 (24줄) + +*전표상태(BSTAT)와 결재상태(ZDSTATS) 도메인의 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 담는 FORM이다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T에서 로그인 언어의 활성 도메인 값 텍스트를 BSTAT(전표상태)와 ZDSTATS(결재상태)에 대해 조회해 GT_DOMAIN에 적재하고 ALV 상태명 표시에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'BSTAT' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. + 21| + 22| * 결재상태(ZDSTATS) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDSTATS' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Selects fixed-value texts of domains BSTAT (document status) and ZDSTATS (approval status) from DD07T in the logon language for status descriptions. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, BSTAT, ZDSTATS +- 업무 키워드: 도메인 텍스트, 전표상태명, 결재상태명 +- English: Domain Fixed Values, DD07T, Document Status, Approval Status +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0050top-147-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L13-L30` · confidence 0.95 · `ZFIR0050#ZFIR0050F01#FORM#GET_DOMAIN#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0050#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_DATA — `ZFIR0050F01` L51-L64 (14줄) + +*전표 헤더(GET_BKPF)·아이템(GET_BSEG)·임시전표 결재정보(GET_ZFIT0100)를 차례로 읽고 DISPLAY_DATA로 표시 데이터를 만드는 조회 총괄 FORM이다.* + +> 이 unit 의 조각 1개가 9/14줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BKPF 헤더를 먼저 읽고 결과가 있을 때만 BSEG 아이템·ZFIT0100 결재 정보를 읽어 표시용 GT_HEAD/GT_ITEM을 생성하도록 순서를 제어한다. + +```abap + 54| PERFORM GET_BKPF. + 55| + 56| CHECK GT_BKPF[] IS NOT INITIAL. + 57| * 전표 아이템 + 58| PERFORM GET_BSEG. + 59| * 임시전표 관리 정보 + 60| PERFORM GET_ZFIT0100. + 61| * Display Data + 62| PERFORM DISPLAY_DATA. +``` + +- **EN**: Orchestrates data retrieval: reads BKPF headers, and only if found, BSEG items and ZFIT0100 approval data, then builds display tables. +- 호출(파서): GET_BKPF, GET_BSEG, GET_ZFIT0100, DISPLAY_DATA +- SAP 객체: BKPF, BSEG, ZFIT0100 +- 업무 키워드: 조회 흐름, 전표 헤더, 전표 아이템, 결재 정보 +- English: Data Retrieval, Document Header, Line Item +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L54-L62` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#GET_DATA#C1` + +### FORM GET_BKPF — `ZFIR0050F01` L70-L108 (39줄) + +*선택조건(회사코드·전기일·전표번호·전표유형·입력일·입력자)과 일반/결산조정전표 구분(BLART SC~SJ 범위)으로 BKPF 전표 헤더를 조회하고 회사코드(T001)·국가(T005) 정보를 읽는 FORM이다.* + +> 이 unit 의 조각 2개가 31/39줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 라디오버튼(P_RA 일반전표/결산조정전표)에 따라 전표유형 SC~SJ 범위를 제외(E) 또는 포함(I)하는 R_BLART 범위를 만들고, 선택조건과 함께 삭제된 임시전표(BSTAT Z)를 제외해 BKPF에서 전표 헤더를 조회한다. + +```abap + 74| R_BLART-OPTION = C_BT. + 75| R_BLART-LOW = 'SC'. + 76| R_BLART-HIGH = 'SJ'. + 77| IF P_RA EQ C_X. "일반전표 + 78| R_BLART-SIGN = C_E. + 79| APPEND R_BLART. + 80| ELSE. "결산조정전표 + 81| R_BLART-SIGN = C_I. + 82| APPEND R_BLART. + 83| ENDIF. + 84| + 85| SELECT * + 86| INTO TABLE GT_BKPF + 87| FROM BKPF + 88| WHERE BUKRS EQ P_BUKRS + 89| AND BUDAT IN S_BUDAT + 90| AND BELNR IN S_BELNR + 91| AND BLART IN S_BLART + 92| AND BLART IN R_BLART + 93| AND CPUDT IN S_CPUDT + 94| AND ( USNAM IN S_USNAM OR + 95| PPNAM IN S_USNAM ) + 96| AND BSTAT NE C_Z. "삭제된 임시전표 제외 +``` + +- **EN**: Builds a document type range (SC-SJ excluded for normal, included for closing adjustment documents) and selects document headers from BKPF by company code, posting date, document number, entry date and user, excluding deleted parked documents (BSTAT Z). +- 테이블(파서): read [BKPF](/tables/BKPF.md) / write - +- SAP 객체: BKPF +- 업무 키워드: 전표 헤더 조회, 전표유형 범위, 결산조정전표, 일반전표, 삭제 임시전표 제외 +- English: Document Header, Document Type BLART, Closing Adjustment, Parked Document Status BSTAT, BKPF +- 정의부(복사 시 함께 필요): [`R_BLART`](#decl-zfir0050top-154-r_blart), [`C_BT`](#decl-zficom-246-c_bt), [`P_RA`](#decl-zfir0050top-200-p_ra), [`C_X`](#decl-zficom-231-c_x), [`C_E`](#decl-zficom-212-c_e), [`C_I`](#decl-zficom-216-c_i), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`S_BUDAT`](#decl-zfir0050top-189-s_budat), [`S_BELNR`](#decl-zfir0050top-190-s_belnr), [`S_BLART`](#decl-zfir0050top-191-s_blart) 외 3건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L74-L96` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#GET_BKPF#C1` + +#### [sql_select] 회사코드 마스터 T001을 읽고 그 국가키(LAND1)로 T005 국가 정보(세금 계산 절차 KALSM 등)를 조회한다. + +```abap + 99| SELECT SINGLE * + 100| FROM T001 + 101| WHERE BUKRS EQ P_BUKRS. + 102| + 103| * 국가 정보 + 104| SELECT SINGLE * + 105| FROM T005 + 106| WHERE LAND1 EQ T001-LAND1. +``` + +- **EN**: Reads the company code master T001 and its country record T005 (used later for the tax calculation procedure). +- 테이블(파서): read [T001](/tables/T001.md), [T005](/tables/T005.md) / write - +- SAP 객체: T001, T005 +- 업무 키워드: 회사코드 정보, 국가 정보, 세금 절차 +- English: Company Code, Country, T001, T005 +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`T005`](#decl-zficom-12-t005) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L99-L106` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#GET_BKPF#C2` + +### FORM GET_BSEG — `ZFIR0050F01` L114-L264 (151줄) + +*정식 전표와 임시(파킹) 전표의 아이템을 모두 모아 조직단위·거래처·계정 텍스트를 붙인다.* + +> 이 unit 의 조각 2개가 145/151줄(96%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 정식 전표 아이템(BSEG)을 읽고, 그 위에 임시전표 아이템을 유형별로 덧붙인다 — VBSEGS(G/L)·VBSEGD(고객)·VBSEGK(공급업체)·VBSEGA(자산). 파킹 전표는 아이템이 계정유형별 4개 테이블로 나뉘어 있어 네 번 읽어 한 내부테이블로 합친다. + +```abap + 117| SELECT * + 118| INTO TABLE GT_BSEG + 119| FROM BSEG + 120| FOR ALL ENTRIES IN GT_BKPF + 121| WHERE BUKRS EQ P_BUKRS + 122| AND GJAHR EQ GT_BKPF-GJAHR + 123| AND BELNR EQ GT_BKPF-BELNR. + 124| + 125| * 임시전표 아이템 추출 + 126| SELECT * + 127| APPENDING CORRESPONDING FIELDS OF TABLE GT_BSEG + 128| FROM VBSEGS + 129| FOR ALL ENTRIES IN GT_BKPF + 130| WHERE AUSBK EQ P_BUKRS + 131| AND BELNR EQ GT_BKPF-BELNR + 132| AND GJAHR EQ GT_BKPF-GJAHR. + 133| + 134| SELECT * + 135| APPENDING CORRESPONDING FIELDS OF TABLE GT_BSEG + 136| FROM VBSEGD + 137| FOR ALL ENTRIES IN GT_BKPF + 138| WHERE AUSBK EQ P_BUKRS + 139| AND BELNR EQ GT_BKPF-BELNR + 140| AND GJAHR EQ GT_BKPF-GJAHR. + 141| + 142| SELECT * + 143| APPENDING CORRESPONDING FIELDS OF TABLE GT_BSEG + 144| FROM VBSEGK + 145| FOR ALL ENTRIES IN GT_BKPF + 146| WHERE AUSBK EQ P_BUKRS + 147| AND BELNR EQ GT_BKPF-BELNR + 148| AND GJAHR EQ GT_BKPF-GJAHR. + 149| + 150| SELECT * + 151| APPENDING CORRESPONDING FIELDS OF TABLE GT_BSEG + 152| FROM VBSEGA + 153| FOR ALL ENTRIES IN GT_BKPF + 154| WHERE AUSBK EQ P_BUKRS + 155| AND BELNR EQ GT_BKPF-BELNR + 156| AND GJAHR EQ GT_BKPF-GJAHR. +``` + +- **EN**: Reads posted document items from BSEG and appends parked-document items from the four account-type tables VBSEGS/VBSEGD/VBSEGK/VBSEGA into one internal table. +- 테이블(파서): read [BSEG](/tables/BSEG.md), [VBSEGS](/tables/VBSEGS.md), [VBSEGD](/tables/VBSEGD.md), [VBSEGK](/tables/VBSEGK.md), [VBSEGA](/tables/VBSEGA.md) / write - +- SAP 객체: BSEG, VBSEGS, VBSEGD, VBSEGK, VBSEGA, BELNR, GJAHR +- 업무 키워드: 전표아이템, 임시전표, 파킹전표, 계정유형, 고객, 공급업체, 자산, 통합조회 +- English: document line item, parked document, account type, customer, vendor, asset, BSEG, VBSEG +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0050top-93-gt_bseg), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`VBSEGS`](#decl-zficom-28-vbsegs), [`VBSEGD`](#decl-zficom-30-vbsegd), [`VBSEGK`](#decl-zficom-31-vbsegk) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L117-L156` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#GET_BSEG#C1` + +#### [sql_select] 표시용 텍스트를 한꺼번에 확보한다 — 입력자명(V_USERNAME)·전표유형명(T003T)·코스트센터명(CSKT)·사업장명(J_1BBRANCH)·전기키명(TBSLT)·고객명(KNA1)·구매처명(LFA1)·계정명(SKAT, HKONT 와 SAKNR 양쪽)·지급조건명(T052U)·세금코드명(T007S). 계정명은 두 필드로 두 번 읽은 뒤 중복을 제거한다. + +```abap + 159| CLEAR : GT_UNAME[], GT_UNAME. + 160| SELECT BNAME + 161| NAME_TEXT AS NAMET + 162| INTO TABLE GT_UNAME + 163| FROM V_USERNAME + 164| FOR ALL ENTRIES IN GT_BKPF + 165| WHERE BNAME EQ GT_BKPF-USNAM. + 166| + 167| * 전표유형명 + 168| CLEAR : GT_T003T[], GT_T003T. + 169| SELECT BLART LTEXT + 170| INTO TABLE GT_T003T + 171| FROM T003T + 172| FOR ALL ENTRIES IN GT_BKPF + 173| WHERE SPRAS EQ SY-LANGU + 174| AND BLART EQ GT_BKPF-BLART. + 175| + 176| * 코스트센터명 + 177| CLEAR : GT_CSKT[], GT_CSKT, TKA02. + 178| SELECT SINGLE * + 179| FROM TKA02 + 180| WHERE BUKRS EQ P_BUKRS. + 181| + 182| SELECT KOSTL KTEXT + 183| INTO TABLE GT_CSKT + 184| FROM CSKT + 185| FOR ALL ENTRIES IN GT_BSEG + 186| WHERE SPRAS EQ SY-LANGU + 187| AND KOKRS EQ TKA02-KOKRS + 188| AND KOSTL EQ GT_BSEG-KOSTL. + 189| + 190| * 사업장명 + 191| CLEAR : GT_BRANCH[], GT_BRANCH. + 192| SELECT BRANCH NAME + 193| INTO TABLE GT_BRANCH + 194| FROM J_1BBRANCH + 195| FOR ALL ENTRIES IN GT_BSEG + 196| WHERE BUKRS EQ P_BUKRS + 197| AND BRANCH EQ GT_BSEG-BUPLA. + 198| + 199| * 전기키명 + 200| CLEAR : GT_TBSLT[], GT_TBSLT. + 201| SELECT BSCHL UMSKZ LTEXT + 202| INTO TABLE GT_TBSLT + 203| FROM TBSLT + 204| FOR ALL ENTRIES IN GT_BSEG + 205| WHERE SPRAS EQ SY-LANGU + 206| AND BSCHL EQ GT_BSEG-BSCHL + 207| AND UMSKZ EQ GT_BSEG-UMSKZ. + 208| + 209| * 고객명 + 210| CLEAR : GT_KNA1[], GT_KNA1. + 211| SELECT KUNNR NAME1 + 212| INTO TABLE GT_KNA1 + 213| FROM KNA1 + 214| FOR ALL ENTRIES IN GT_BSEG + 215| WHERE KUNNR EQ GT_BSEG-KUNNR. + 216| + 217| * 구매처명 + 218| CLEAR : GT_LFA1[], GT_LFA1. + 219| SELECT LIFNR NAME1 + 220| INTO TABLE GT_LFA1 + 221| FROM LFA1 + 222| FOR ALL ENTRIES IN GT_BSEG + 223| WHERE LIFNR EQ GT_BSEG-LIFNR. + 224| + 225| * G/L 계정명 + 226| CLEAR : GT_SKAT[], GT_SKAT. + 227| SELECT SAKNR TXT50 + 228| INTO TABLE GT_SKAT + 229| FROM SKAT + 230| FOR ALL ENTRIES IN GT_BSEG + 231| WHERE KTOPL EQ T001-KTOPL + 232| AND SPRAS EQ SY-LANGU + 233| AND SAKNR EQ GT_BSEG-HKONT. + 234| + 235| SELECT SAKNR TXT50 + 236| APPENDING TABLE GT_SKAT + 237| FROM SKAT + 238| FOR ALL ENTRIES IN GT_BSEG + 239| WHERE KTOPL EQ T001-KTOPL + 240| AND SPRAS EQ SY-LANGU + 241| AND SAKNR EQ GT_BSEG-SAKNR. + 242| SORT GT_SKAT BY SAKNR. + 243| DELETE ADJACENT DUPLICATES FROM GT_SKAT COMPARING SAKNR. + 244| + 245| * 지급조건명 + 246| CLEAR : GT_T052U[], GT_T052U. + 247| SELECT ZTERM TEXT1 + 248| INTO TABLE GT_T052U + 249| FROM T052U + 250| FOR ALL ENTRIES IN GT_BSEG + 251| WHERE SPRAS EQ SY-LANGU + 252| AND ZTERM EQ GT_BSEG-ZTERM. + 253| + 254| * 세금코드명 + 255| CLEAR : GT_T007S[], GT_T007S. + 256| SELECT MWSKZ TEXT1 + 257| INTO TABLE GT_T007S + 258| FROM T007S + 259| FOR ALL ENTRIES IN GT_BSEG + 260| WHERE SPRAS EQ SY-LANGU + 261| AND KALSM EQ T005-KALSM + 262| AND MWSKZ EQ GT_BSEG-MWSKZ. + 263| +``` + +- **EN**: Bulk-loads display texts for user, document type, cost center, business place, posting key, customer, vendor, G/L account (both HKONT and SAKNR), payment terms and tax code. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md), [T003T](/tables/T003T.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [TBSLT](/tables/TBSLT.md), [KNA1](/tables/KNA1.md), [LFA1](/tables/LFA1.md), [SKAT](/tables/SKAT.md), [T052U](/tables/T052U.md), [T007S](/tables/T007S.md) / write - +- SAP 객체: V_USERNAME, T003T, CSKT, TKA02, J_1BBRANCH, TBSLT, KNA1, LFA1, SKAT, T052U, T007S +- 업무 키워드: 입력자, 전표유형, 코스트센터, 사업장, 전기키, 고객명, 구매처명, 계정명, 지급조건, 세금코드, 텍스트보강 +- English: user name, document type, cost center, business place, posting key, customer, vendor, G/L account text, payment terms, tax code +- 정의부(복사 시 함께 필요): [`GT_UNAME`](#decl-zfir0050top-96-gt_uname), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`GT_T003T`](#decl-zfir0050top-101-gt_t003t), [`GT_CSKT`](#decl-zfir0050top-106-gt_cskt), [`TKA02`](#decl-zfir0050top-9-tka02), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0050top-93-gt_bseg), [`GT_BRANCH`](#decl-zfir0050top-111-gt_branch), [`GT_TBSLT`](#decl-zfir0050top-116-gt_tbslt), [`GT_KNA1`](#decl-zfir0050top-122-gt_kna1) 외 8건 +- 선언을 못 찾은 이름: V_USERNAME, J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L159-L263` · confidence 0.87 · `ZFIR0050#ZFIR0050F01#FORM#GET_BSEG#C2` + +### FORM GET_ZFIT0100 — `ZFIR0050F01` L270-L281 (12줄) + +*조회된 전표 헤더(GT_BKPF)에 대한 임시전표 결재 관리 정보를 CBO 테이블 ZFIT0100에서 읽어 GT_Z0100에 담는 FORM이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] GT_BKPF의 전표번호·연도를 FOR ALL ENTRIES 조건으로 회사코드 P_BUKRS의 결재 이력(상태·반려사유·UNQID 등)을 ZFIT0100에서 조회한다. + +```abap + 273| SELECT * + 274| INTO TABLE GT_Z0100 + 275| FROM ZFIT0100 + 276| FOR ALL ENTRIES IN GT_BKPF + 277| WHERE BUKRS EQ P_BUKRS + 278| AND BELNR EQ GT_BKPF-BELNR + 279| AND GJAHR EQ GT_BKPF-GJAHR. +``` + +- **EN**: Reads the parked document approval history from CBO table ZFIT0100 for all documents in GT_BKPF by company code, document number and fiscal year. +- 테이블(파서): read [ZFIT0100](/tables/ZFIT0100.md) / write - +- SAP 객체: ZFIT0100, BKPF +- 업무 키워드: 결재 이력 조회, 임시전표 관리, 결재 상태, CBO 테이블 +- English: Approval History, CBO Table, FOR ALL ENTRIES, Parked Document +- 정의부(복사 시 함께 필요): [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L273-L279` · confidence 0.95 · `ZFIR0050#ZFIR0050F01#FORM#GET_ZFIT0100#C1` + +### FORM DISPLAY_DATA — `ZFIR0050F01` L287-L569 (283줄) + +*BKPF/BSEG와 ZFIT0100 결재 정보를 합쳐 결재상태별 아이콘·편집가능 여부와 각종 명칭(입력자·전표유형·전표상태·거래처·계정·전기키·지급조건·코스트센터·세금코드)을 붙인 헤더 ALV(GT_HEAD)와 아이템 ALV(GT_ITEM) 데이터를 만드는 FORM이다.* + +> 이 unit 의 조각 6개가 263/283줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표 헤더마다 ZFIT0100 결재 이력이 있으면 임원 모드(GV_CON)에서는 팀장승인(A)/임원승인(C) 건만 남기고 결재상태·반려사유·UNQID를 옮긴 뒤 상태(V/I/R/A/C/S/D/E)별 상태 아이콘을 결정한다. + +```abap + 294| LOOP AT GT_BKPF. + 295| CLEAR GT_HEAD. + 296| READ TABLE GT_Z0100 WITH KEY BELNR = GT_BKPF-BELNR + 297| GJAHR = GT_BKPF-GJAHR. + 298| + 299| IF SY-SUBRC EQ 0. + 300| * 임원일 경우 회계팀장 승인된 건만 조회 + 301| IF GV_CON EQ C_X. + 302| IF GT_Z0100-STATS EQ C_A OR GT_Z0100-STATS EQ C_C . + 303| ELSE. + 304| CONTINUE. + 305| ENDIF. + 306| ENDIF. + 307| + 308| GT_HEAD-STATS = GT_Z0100-STATS. + 309| GT_HEAD-RJTXT = GT_Z0100-RJTXT. + 310| GT_HEAD-CFMSTA = GT_Z0100-CFMSTA. + 311| GT_HEAD-CFMDAT = GT_Z0100-CFMDAT. + 312| GT_HEAD-LGCYCD = GT_Z0100-LGCYCD. + 313| GT_HEAD-UNQID = GT_Z0100-UNQID. + 314| * 결재상태에 따른 아이콘 + 315| CASE GT_HEAD-STATS. + 316| WHEN C_V. "임시전표 + 317| GT_HEAD-SICON = ICON_LIGHT_OUT. + 318| WHEN C_I. "상신 중 + 319| IF GT_HEAD-CFMSTA EQ SPACE. + 320| GT_HEAD-STATS = C_V. + 321| GT_HEAD-SICON = ICON_LIGHT_OUT. + 322| ELSE. + 323| GT_HEAD-SICON = ICON_TRANSFER. + 324| ENDIF. + 325| WHEN C_R. "반려 + 326| GT_HEAD-SICON = ICON_SYSTEM_UNDO. + 327| WHEN C_A. "팀장승인 + 328| GT_HEAD-SICON = ICON_YELLOW_LIGHT. + 329| WHEN C_C OR C_S. "임원승인 / 결재승인 + 330| GT_HEAD-SICON = ICON_GREEN_LIGHT. + 331| WHEN C_D. "역분개 + 332| GT_HEAD-SICON = ICON_STATUS_OVERVIEW. + 333| WHEN C_E. "에러 + 334| GT_HEAD-SICON = ICON_RED_LIGHT. + 335| ENDCASE. +``` + +- **EN**: For each document header with approval history, applies the executive-view filter (only team-leader/executive approved) and derives the status icon from the approval status (parked, in approval, rejected, approved, reversed, error). +- SAP 객체: ZFIT0100, BKPF +- 업무 키워드: 결재상태 아이콘, 임원 조회 필터, 결재 이력 병합, 상신중, 반려 +- English: Approval Status, Status Icon, Executive View, Parked Document +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100), [`GV_CON`](#decl-zfir0050top-157-gv_con), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`C_C`](#decl-zficom-210-c_c), [`C_V`](#decl-zficom-229-c_v), [`C_I`](#decl-zficom-216-c_i), [`C_R`](#decl-zficom-225-c_r) 외 3건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L294-L335` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C1` + +#### [validation] 결재상태 선택조건(S_STATS)으로 필터링하고, 결산전표이면서 팀장승인 상태일 때만 반려사유(RJTXT) 셀을 편집 가능하게 두며, 이력이 없는 전표는 임원 모드·역분개 전표를 제외하고 임시전표(BSTAT V)에 상신대상 아이콘을 붙인다. + +```abap + 337| * 조건값 체크 + 338| IF GT_HEAD-STATS NOT IN S_STATS. + 339| CONTINUE. + 340| ENDIF. + 341| + 342| * 결산전표이면서 승인상태인 경우 입력가능 + 343| IF P_RB EQ C_X AND GT_Z0100-STATS EQ C_A. + 344| ELSE. + 345| * 입력필드 비활성화 + 346| CLEAR : GT_CELLTAB, GT_CELLTAB[]. + 347| GS_CELLTAB-FIELDNAME = 'RJTXT'. + 348| GS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. + 349| APPEND GS_CELLTAB TO GT_CELLTAB. + 350| ENDIF. + 351| ELSE. + 352| * 임원일 경우 회계팀장 승인된 건만 조회 + 353| IF GV_CON EQ C_X . + 354| CONTINUE. + 355| ENDIF. + 356| * 역분개전표인 경우 제외 + 357| IF GT_BKPF-STBLG NE SPACE. + 358| CONTINUE. + 359| ENDIF. + 360| + 361| * 상신대상일 경우 아이콘 = 라이트 아웃 + 362| IF GT_BKPF-BSTAT EQ C_V. "임시전표 + 363| GT_HEAD-SICON = ICON_LIGHT_OUT. + 364| IF P_RA EQ C_X. + 365| GT_HEAD-STATS = C_V. + 366| ENDIF. + 367| ENDIF. + 368| + 369| * 조건값 체크 + 370| IF GT_HEAD-STATS NOT IN S_STATS. + 371| CONTINUE. + 372| ENDIF. + 373| + 374| * 일반전표는 입력불가 + 375| IF P_RA EQ C_X. + 376| * 입력필드 비활성화 + 377| CLEAR : GT_CELLTAB, GT_CELLTAB[]. + 378| GS_CELLTAB-FIELDNAME = 'RJTXT'. + 379| GS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. + 380| APPEND GS_CELLTAB TO GT_CELLTAB. + 381| ENDIF. + 382| ENDIF. +``` + +- **EN**: Filters by approval status selection, sets the RJTXT cell editable only for closing documents in team-leader-approved status, and for documents without history excludes reversed documents and marks parked ones as submittable. +- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_DISABLED +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 결재상태 필터, 반려사유 편집 제어, 역분개 전표 제외, 상신 대상, 셀 스타일 +- English: Selection Filter, Cell Style, Reversal Document, Parked Document, MC_STYLE_DISABLED +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`S_STATS`](#decl-zfir0050top-194-s_stats), [`P_RB`](#decl-zfir0050top-202-p_rb), [`C_X`](#decl-zficom-231-c_x), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100), [`C_A`](#decl-zficom-208-c_a), [`GT_CELLTAB`](#decl-zfialv-47-gt_celltab), [`GS_CELLTAB`](#decl-zfialv-63-gs_celltab), [`GV_CON`](#decl-zfir0050top-157-gv_con), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf) 외 2건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L337-L382` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C2` + +#### [output] 헤더에 입력자명(GT_UNAME), 전표유형명(T003T), 전표상태(BSTAT)·결재상태(ZDSTATS) 도메인 텍스트와 셀 스타일 테이블을 붙여 GT_HEAD에 추가한다. + +```abap + 384| MOVE-CORRESPONDING GT_BKPF TO GT_HEAD. + 385| * 입력자명 + 386| READ TABLE GT_UNAME WITH KEY BNAME = GT_HEAD-USNAM. + 387| IF SY-SUBRC EQ 0. + 388| GT_HEAD-USNAM_T = GT_UNAME-NAMET. + 389| ENDIF. + 390| * 전표유형명 + 391| READ TABLE GT_T003T WITH KEY BLART = GT_HEAD-BLART. + 392| IF SY-SUBRC EQ 0. + 393| GT_HEAD-BLART_T = GT_T003T-LTEXT. + 394| ENDIF. + 395| * 전표상태명 + 396| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'BSTAT' + 397| DOMVALUE_L = GT_HEAD-BSTAT. + 398| IF SY-SUBRC EQ 0. + 399| GT_HEAD-BSTAT_T = GT_DOMAIN-DDTEXT. + 400| ENDIF. + 401| * 결재상태명 + 402| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDSTATS' + 403| DOMVALUE_L = GT_HEAD-STATS. + 404| IF SY-SUBRC EQ 0. + 405| GT_HEAD-STATS_T = GT_DOMAIN-DDTEXT. + 406| ENDIF. + 407| + 408| GT_HEAD-CELLTAB = GT_CELLTAB. + 409| + 410| APPEND GT_HEAD. + 411| ENDLOOP. +``` + +- **EN**: Enriches the header row with user name, document type text (T003T) and domain texts for BSTAT/ZDSTATS, attaches the cell style table and appends it to GT_HEAD. +- SAP 객체: T003T, ZDSTATS +- 업무 키워드: 헤더 표시 데이터, 전표유형명, 도메인 텍스트, 입력자명 +- English: Document Type Text, Domain Text, Header Display +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`GT_UNAME`](#decl-zfir0050top-96-gt_uname), [`GT_T003T`](#decl-zfir0050top-101-gt_t003t), [`GT_DOMAIN`](#decl-zfir0050top-147-gt_domain), [`GT_CELLTAB`](#decl-zfialv-47-gt_celltab) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L384-L411` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C3` + +#### [output] 전표 아이템마다 사업장명을 붙이고 마이너스 전기(XNEGP)면 금액 부호와 차대(SHKZG)를 뒤집으며, 계정유형(D 고객/K 구매처/A 자산/M 자재/S G/L)에 따라 보조부 계정번호와 명칭(KNA1·LFA1 버퍼, ANLA·MAKT SELECT)을 채운다. + +```abap + 416| LOOP AT GT_BSEG. + 417| MOVE-CORRESPONDING GT_BSEG TO GT_ITEM. + 418| * 사업장명 + 419| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_BSEG-BUPLA. + 420| IF SY-SUBRC EQ 0. + 421| GT_ITEM-BUPLA_T = GT_BRANCH-NAME. + 422| ENDIF. + 423| + 424| * 차대지시자 + 425| IF GT_BSEG-XNEGP = C_X. "마이너스 + 426| GT_ITEM-WRBTR = 0 - GT_ITEM-WRBTR. + 427| GT_ITEM-DMBTR = 0 - GT_ITEM-DMBTR. + 428| CASE GT_BSEG-SHKZG. + 429| WHEN C_S. + 430| GT_ITEM-SHKZG = C_H. + 431| WHEN C_H. + 432| GT_ITEM-SHKZG = C_S. + 433| ENDCASE. + 434| ENDIF. + 435| + 436| * 계정유형 + 437| CASE GT_BSEG-KOART. + 438| WHEN C_D. + 439| GT_ITEM-KOART_T = '고객'. + 440| IF NOT GT_BSEG-KUNNR IS INITIAL. + 441| GT_ITEM-SUBAC = GT_BSEG-KUNNR. + 442| * 고객명 + 443| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_BSEG-KUNNR. + 444| IF SY-SUBRC EQ 0. + 445| GT_ITEM-SUBNM = GT_KNA1-NAME1. + 446| ENDIF. + 447| ENDIF. + 448| WHEN C_K. + 449| GT_ITEM-KOART_T = '구매처'. + 450| * 보조부계정 + 451| IF NOT GT_BSEG-LIFNR IS INITIAL. + 452| GT_ITEM-SUBAC = GT_BSEG-LIFNR. + 453| * 구매처명 + 454| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_BSEG-LIFNR. + 455| IF SY-SUBRC EQ 0. + 456| GT_ITEM-SUBNM = GT_LFA1-NAME1. + 457| ENDIF. + 458| ENDIF. + 459| WHEN C_A. + 460| GT_ITEM-KOART_T = '자산'. + 461| IF NOT GT_BSEG-ANLN1 IS INITIAL. + 462| GT_ITEM-SUBAC = GT_BSEG-ANLN1+2(10). + 463| * 자산코드명 + 464| SELECT SINGLE TXT50 + 465| INTO GT_ITEM-SUBNM + 466| FROM ANLA + 467| WHERE ANLA~BUKRS EQ P_BUKRS + 468| AND ANLA~ANLN1 EQ GT_BSEG-ANLN1. "자산 + 469| ENDIF. + 470| WHEN C_M. + 471| GT_ITEM-KOART_T = '자재'. + 472| IF NOT GT_BSEG-MATNR IS INITIAL. + 473| GT_ITEM-SUBAC = GT_BSEG-MATNR+8(10). + 474| * 자재코드명 + 475| SELECT SINGLE MAKTX + 476| INTO GT_ITEM-SUBNM + 477| FROM MAKT + 478| WHERE MAKT~SPRAS EQ SY-LANGU + 479| AND MAKT~MATNR EQ GT_BSEG-MATNR. + 480| ENDIF. + 481| WHEN C_S. + 482| GT_ITEM-KOART_T = 'G/L 계정'. + 483| ENDCASE. +``` + +- **EN**: Builds each line item: business place text, sign/debit-credit flip for negative postings, and account-type dependent subledger account and name from customer/vendor buffers or ANLA/MAKT lookups. +- 테이블(파서): read [ANLA](/tables/ANLA.md), [MAKT](/tables/MAKT.md) / write - +- SAP 객체: BSEG, ANLA, MAKT, KNA1, LFA1 +- 업무 키워드: 계정유형, 보조부 계정, 마이너스 전기, 고객명, 구매처명, 자산명, 자재명 +- English: Account Type KOART, Subledger Account, Negative Posting XNEGP, Asset Master, Material Description +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0050top-93-gt_bseg), [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_BRANCH`](#decl-zfir0050top-111-gt_branch), [`C_X`](#decl-zficom-231-c_x), [`C_S`](#decl-zficom-226-c_s), [`C_H`](#decl-zficom-215-c_h), [`C_D`](#decl-zficom-211-c_d), [`GT_KNA1`](#decl-zfir0050top-122-gt_kna1), [`C_K`](#decl-zficom-218-c_k), [`GT_LFA1`](#decl-zfir0050top-127-gt_lfa1), [`C_A`](#decl-zficom-208-c_a) 외 2건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L416-L483` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C4` + +#### [output] 임시전표는 계정유형이 비어 있으므로 LIFNR/KUNNR/ANLN1 존재 여부로 계정유형과 거래처·자산 명칭을 다시 결정하고, HKONT 또는 SAKNR로 G/L 계정명(GT_SKAT)을 붙인다. + +```abap + 487| IF NOT GT_BSEG-LIFNR IS INITIAL. + 488| GT_ITEM-KOART = C_K. + 489| GT_ITEM-SUBAC = GT_BSEG-LIFNR. + 490| * 구매처명 + 491| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_BSEG-LIFNR. + 492| IF SY-SUBRC EQ 0. + 493| GT_ITEM-SUBNM = GT_LFA1-NAME1. + 494| ENDIF. + 495| ENDIF. + 496| IF NOT GT_BSEG-KUNNR IS INITIAL. + 497| GT_ITEM-KOART = C_D. + 498| GT_ITEM-SUBAC = GT_BSEG-KUNNR. + 499| * 고객명 + 500| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_BSEG-KUNNR. + 501| IF SY-SUBRC EQ 0. + 502| GT_ITEM-SUBNM = GT_KNA1-NAME1. + 503| ENDIF. + 504| ENDIF. + 505| IF NOT GT_BSEG-ANLN1 IS INITIAL. + 506| GT_ITEM-SUBAC = GT_BSEG-ANLN1+2(10). + 507| * 자산코드명 + 508| SELECT SINGLE TXT50 + 509| INTO GT_ITEM-SUBNM + 510| FROM ANLA + 511| WHERE ANLA~BUKRS EQ P_BUKRS + 512| AND ANLA~ANLN1 EQ GT_BSEG-ANLN1. "자산 + 513| ENDIF. + 514| + 515| * G/L 계정명 + 516| IF NOT GT_BSEG-HKONT IS INITIAL. + 517| READ TABLE GT_SKAT WITH KEY SAKNR = GT_BSEG-HKONT. + 518| IF SY-SUBRC EQ 0. + 519| GT_ITEM-TXT50 = GT_SKAT-TXT50. + 520| ENDIF. + 521| ELSE. + 522| IF NOT GT_BSEG-SAKNR IS INITIAL. + 523| GT_ITEM-HKONT = GT_BSEG-SAKNR. + 524| READ TABLE GT_SKAT WITH KEY SAKNR = GT_BSEG-SAKNR. + 525| IF SY-SUBRC EQ 0. + 526| GT_ITEM-TXT50 = GT_SKAT-TXT50. + 527| ENDIF. + 528| ENDIF. + 529| ENDIF. +``` + +- **EN**: For parked documents lacking account type, re-derives account type and partner/asset name from vendor, customer or asset fields, and assigns the G/L account text from SKAT via HKONT or SAKNR. +- 테이블(파서): read [ANLA](/tables/ANLA.md) / write - +- SAP 객체: SKAT, ANLA, LFA1, KNA1 +- 업무 키워드: 임시전표 계정유형 보정, G/L 계정명, 거래처 명칭, 자산 명칭 +- English: Parked Document, G/L Account Text, Vendor, Customer, Asset +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0050top-93-gt_bseg), [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`C_K`](#decl-zficom-218-c_k), [`GT_LFA1`](#decl-zfir0050top-127-gt_lfa1), [`C_D`](#decl-zficom-211-c_d), [`GT_KNA1`](#decl-zfir0050top-122-gt_kna1), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`GT_SKAT`](#decl-zfir0050top-132-gt_skat) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L487-L529` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C5` + +#### [output] 전기키명(TBSLT)·지급조건명(T052U)·코스트센터명(CSKT)·세금코드명(T007S)을 버퍼 테이블에서 붙이고 헤더의 전표통화(WAERS)를 아이템에 넣어 GT_ITEM에 추가한다. + +```abap + 532| IF NOT GT_BSEG-BSCHL IS INITIAL. + 533| READ TABLE GT_TBSLT WITH KEY BSCHL = GT_BSEG-BSCHL + 534| UMSKZ = GT_BSEG-UMSKZ. + 535| IF SY-SUBRC EQ 0. + 536| GT_ITEM-BSCHL_T = GT_TBSLT-LTEXT. + 537| ENDIF. + 538| ENDIF. + 539| + 540| * 지급조건명 + 541| IF NOT GT_BSEG-ZTERM IS INITIAL. + 542| READ TABLE GT_T052U WITH KEY ZTERM = GT_BSEG-ZTERM. + 543| IF SY-SUBRC EQ 0. + 544| GT_ITEM-ZTERM_T = GT_T052U-TEXT1. + 545| ENDIF. + 546| ENDIF. + 547| + 548| * 코스트센터명 + 549| READ TABLE GT_CSKT WITH KEY KOSTL = GT_BSEG-KOSTL. + 550| IF SY-SUBRC EQ 0. + 551| GT_ITEM-KOSTL_T = GT_CSKT-KTEXT. + 552| ENDIF. + 553| + 554| * 세금코드명 + 555| READ TABLE GT_T007S WITH KEY MWSKZ = GT_BSEG-MWSKZ. + 556| IF SY-SUBRC EQ 0. + 557| GT_ITEM-MWSKZ_T = GT_T007S-TEXT1. + 558| ENDIF. + 559| + 560| READ TABLE GT_BKPF WITH KEY BELNR = GT_ITEM-BELNR + 561| GJAHR = GT_ITEM-GJAHR. + 562| IF SY-SUBRC EQ 0. + 563| GT_ITEM-WAERS = GT_BKPF-WAERS. + 564| ENDIF. + 565| APPEND GT_ITEM. CLEAR GT_ITEM. + 566| + 567| ENDLOOP. +``` + +- **EN**: Adds posting key, payment term, cost center and tax code descriptions from buffered tables, copies the document currency from the header and appends the item to GT_ITEM. +- SAP 객체: TBSLT, T052U, CSKT, T007S +- 업무 키워드: 전기키명, 지급조건명, 코스트센터명, 세금코드명, 전표통화 +- English: Posting Key Text, Payment Terms, Cost Center Text, Tax Code Text, Document Currency +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0050top-93-gt_bseg), [`GT_TBSLT`](#decl-zfir0050top-116-gt_tbslt), [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_T052U`](#decl-zfir0050top-137-gt_t052u), [`GT_CSKT`](#decl-zfir0050top-106-gt_cskt), [`GT_T007S`](#decl-zfir0050top-142-gt_t007s), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0050top-92-gt_bkpf) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L532-L567` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_DATA#C6` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0050/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0050/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0050/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0050/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0050/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0050/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0050/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0050/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0050/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0050/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0050/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0050/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0050/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0050/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0050/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0050/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0050/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0050/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0050/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0050/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0050/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0050#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0050/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0050/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0050/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0050/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs) +- 위치: `abap://ZFIR0050/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0050#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0050/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0050#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0050F01` L974-L1006 (33줄) + +*헤더 ALV 핫스팟 클릭 시 전표번호는 해당 아이템을 GT_ITEM2에 추려 하단 ALV를 갱신하고, 역분개전표번호(STBLG)는 FB03으로 조회하는 FORM이다.* + +> 이 unit 의 조각 2개가 20/33줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 클릭한 헤더 전표의 회사코드·연도·전표번호에 해당하는 아이템을 GT_ITEM에서 GT_ITEM2로 추려 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 아이템 ALV를 갱신한다. + +```abap + 982| WHEN 'BELNR'. + 983| CLEAR : GT_ITEM2[], GT_ITEM2. + 984| + 985| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 986| AND GJAHR EQ GT_HEAD-GJAHR + 987| AND BELNR EQ GT_HEAD-BELNR. + 988| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 989| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 990| ENDLOOP. + 991| SORT GT_ITEM2 BY BELNR BUZEI. + 992| * PAI로 호출 + 993| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 994| EXPORTING + 995| NEW_CODE = 'ZUSER'. +``` + +- **EN**: Filters the clicked document's line items into GT_ITEM2 and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 전표번호 핫스팟, 아이템 필터, 하단 ALV 갱신 +- English: Hotspot Click, Line Item, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_ITEM2`](#decl-zfir0050top-88-gt_item2), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L982-L995` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#HOTSPOT_CLICK#C1` + +#### [control_flow] 역분개 전표번호가 있으면 SET PARAMETER(BLN/BUK/GJR) 후 FB03을 SKIP FIRST SCREEN으로 호출해 역분개 전표를 조회한다. + +```abap + 998| WHEN 'STBLG'. + 999| CHECK GT_HEAD-STBLG IS NOT INITIAL. + 1000| SET PARAMETER ID 'BLN' FIELD GT_HEAD-STBLG. + 1001| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1002| SET PARAMETER ID 'GJR' FIELD GT_HEAD-STJAH. + 1003| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Navigates to FB03 to display the reversal document (STBLG/STJAH) via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FB03 +- SAP 객체: FB03 +- 업무 키워드: 역분개 전표 조회, 전표 조회 이동 +- English: Reversal Document, FB03, CALL TRANSACTION +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L998-L1003` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#HOTSPOT_CLICK#C2` + +### FORM HOTSPOT_CLICK2 — `ZFIR0050F01` L1015-L1053 (39줄) + +*아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다.* + +> 이 unit 의 조각 1개가 34/39줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 컬럼이 BELNR이면 SET PARAMETER(BLN/BUK/GJR) 후 FB03 전표조회를, SUBAC이면 계정유형(KOART D/K/A/M)에 따라 FD03 고객·FK03 공급업체·AS03 자산·MM03 자재 조회 트랜잭션을 SKIP FIRST SCREEN으로 호출한다. + +```abap + 1018| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX. + 1019| CHECK SY-SUBRC EQ 0. + 1020| + 1021| CASE P_COLUMN_ID. + 1022| * 전표번호 + 1023| WHEN 'BELNR'. + 1024| CHECK GT_ITEM2-BELNR IS NOT INITIAL. + 1025| SET PARAMETER ID 'BLN' FIELD GT_ITEM2-BELNR. + 1026| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1027| SET PARAMETER ID 'GJR' FIELD GT_ITEM2-GJAHR. + 1028| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 1029| WHEN 'SUBAC'. + 1030| CHECK GT_ITEM2-SUBAC IS NOT INITIAL. + 1031| * 고객 + 1032| IF GT_ITEM2-KOART EQ C_D. + 1033| SET PARAMETER ID 'KUN' FIELD GT_ITEM2-SUBAC. + 1034| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1035| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 1036| * 구매처 + 1037| ELSEIF GT_ITEM2-KOART EQ C_K. + 1038| SET PARAMETER ID 'LIF' FIELD GT_ITEM2-SUBAC. + 1039| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1040| CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN. + 1041| * 자산 + 1042| ELSEIF GT_ITEM2-KOART EQ C_A. + 1043| SET PARAMETER ID 'AN1' FIELD GT_ITEM2-ANLN1. + 1044| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1045| CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN. + 1046| * 자재 + 1047| ELSEIF GT_ITEM2-KOART EQ C_M. + 1048| SET PARAMETER ID 'MAT' FIELD GT_ITEM2-MATNR. + 1049| CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. + 1050| ENDIF. + 1051| ENDCASE. +``` + +- **EN**: Navigates from the item hotspot to FB03 (document display) or, by account type, to FD03 customer / FK03 vendor / AS03 asset / MM03 material display via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FB03, FD03, FK03, AS03, MM03 +- SAP 객체: FB03, FD03, FK03, AS03, MM03 +- 업무 키워드: 핫스팟 이동, 전표조회, 고객 조회, 공급업체 조회, 자산 조회, 자재 조회 +- English: Hotspot Navigation, Document Display, Account Type KOART, CALL TRANSACTION +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_ITEM2`](#decl-zfir0050top-88-gt_item2), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`C_D`](#decl-zficom-211-c_d), [`C_K`](#decl-zficom-218-c_k), [`C_A`](#decl-zficom-208-c_a), [`C_M`](#decl-zficom-220-c_m) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1018-L1051` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#HOTSPOT_CLICK2#C1` + +### FORM DOUBLE_CLICK — `ZFIR0050F01` L1062-L1083 (22줄) + +*헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 더블클릭한 헤더 행의 회사코드·연도·전표번호와 일치하는 아이템을 GT_ITEM에서 추려 GT_ITEM2에 담고 전표번호·항목 순으로 정렬한 뒤 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다. + +```abap + 1067| READ TABLE GT_HEAD INDEX P_ROW-INDEX. + 1068| CHECK SY-SUBRC EQ 0. + 1069| + 1070| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 1071| AND GJAHR EQ GT_HEAD-GJAHR + 1072| AND BELNR EQ GT_HEAD-BELNR. + 1073| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 1074| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 1075| ENDLOOP. + 1076| + 1077| SORT GT_ITEM2 BY BELNR BUZEI. + 1078| * PAI로 호출 + 1079| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 1080| EXPORTING + 1081| NEW_CODE = 'ZUSER'. +``` + +- **EN**: Filters the line items of the double-clicked document header into GT_ITEM2, sorts by document and line number, and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 더블클릭, 전표 아이템 필터, 헤더 아이템 연동, 화면 갱신 +- English: Double Click, Line Item, Header-Item Link, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_ITEM2`](#decl-zfir0050top-88-gt_item2) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1067-L1081` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#DOUBLE_CLICK#C1` + +### FORM ALV_GRID_DISPLAY1 — `ZFIR0050F01` L698-L713 (16줄) + +*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 임시전표 헤더 내부테이블 GT_HEAD를 상단 ALV 그리드에 출력한다. + +```abap + 701| GV_VARI1-REPORT = SY-REPID. + 702| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY + 703| EXPORTING + 704| I_STRUCTURE_NAME = 'GT_HEAD' + 705| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 706| IS_LAYOUT = GV_LAYO1 + 707| IS_VARIANT = GV_VARI1 + 708| I_BUFFER_ACTIVE = C_X + 709| I_SAVE = C_A + 710| CHANGING + 711| IT_OUTTAB = GT_HEAD[] + 712| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the parked document header list (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 헤더 ALV 출력, 임시전표 목록, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Parked Document +- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0050top-174-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0050top-171-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L701-L712` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#ALV_GRID_DISPLAY1#C1` + +### FORM ALV_GRID_DISPLAY2 — `ZFIR0050F01` L823-L838 (16줄) + +*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다. + +```abap + 826| GV_VARI2-REPORT = SY-REPID. + 827| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY + 828| EXPORTING + 829| I_STRUCTURE_NAME = 'GT_ITEM' + 830| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 831| IS_LAYOUT = GV_LAYO2 + 832| IS_VARIANT = GV_VARI2 + 833| I_BUFFER_ACTIVE = C_X + 834| I_SAVE = C_A + 835| CHANGING + 836| IT_OUTTAB = GT_ITEM2[] + 837| IT_FIELDCATALOG = GT_FCAT_ITEM[]. +``` + +- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 아이템 ALV 출력, 전표 아이템, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item +- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0050top-175-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0050top-169-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0050top-172-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`GT_ITEM2`](#decl-zfir0050top-88-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L826-L837` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#ALV_GRID_DISPLAY2#C1` + +### FORM DELETE_DATA — `ZFIR0050F01` L1089-L1177 (89줄) + +*선택한 임시전표를 검증·확인 팝업 후 Z_FI_PARKED_DOCUMENT_DELETE로 삭제하고, 반려 상태였던 건은 ZFIT0100 이력의 전표상태를 갱신하는 FORM이다.* + +> 이 unit 의 조각 3개가 77/89줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행이 없으면 중단하고, 선택 건이 모두 임시전표(BSTAT V/W)인지 확인해 아니면 오류 메시지 후 처리를 막으며 삭제 대상 건수를 센다. + +```abap + 1097| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 1098| IMPORTING + 1099| ET_INDEX_ROWS = GT_ROWS[]. + 1100| + 1101| IF GT_ROWS[] IS INITIAL. + 1102| MESSAGE S004. "선택된 데이터가 없습니다. + 1103| EXIT. + 1104| ELSE. + 1105| * 선택된 데이터의 상태가 임시전표인지 확인 + 1106| CLEAR: LV_CNT, LV_CHK, GF_CHECK, GV_TEXT. + 1107| LOOP AT GT_ROWS INTO GS_ROWS. + 1108| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1109| CHECK SY-SUBRC EQ 0. + 1110| IF GT_HEAD-BSTAT EQ C_V OR GT_HEAD-BSTAT EQ C_W. + 1111| LV_CNT = LV_CNT + 1. + 1112| ELSE. + 1113| MESSAGE I000 WITH TEXT-001. + 1114| "선택한 데이터 중 임시전표가 아닌 건이 포함되어 있습니다. + 1115| GF_CHECK = C_X. + 1116| EXIT. + 1117| ENDIF. + 1118| ENDLOOP. +``` + +- **EN**: Validates that rows are selected and every selected document is a parked document (BSTAT V/W), counting deletable documents. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 임시전표 삭제, 삭제 대상 검증, 선택행 +- English: Parked Document, Validation, ALV Selected Rows +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1090-lv_cnt), [`LV_CHK`](#decl-zfir0050f01-1091-lv_chk), [`GF_CHECK`](#decl-zficom-87-gf_check), [`GV_TEXT`](#decl-zficom-85-gv_text), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_V`](#decl-zficom-229-c_v), [`C_W`](#decl-zficom-230-c_w), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1097-L1118` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#DELETE_DATA#C1` + +#### [control_flow] '임시전표 N건 삭제' 확인 문구를 만들어 CHECK_CONFIRM_STEP 팝업으로 삭제 여부를 묻고 '예'가 아니면 중단한다. + +```abap + 1120| CHECK GF_CHECK IS INITIAL. + 1121| CONCATENATE TEXT-002 LV_CNT TEXT-003 INTO GV_TEXT + 1122| SEPARATED BY SPACE. + 1123| "선택하신 N건의 임시전표를 삭제하시겠습니까? + 1124| PERFORM CHECK_CONFIRM_STEP USING TEXT-004 GV_TEXT SPACE C_N. + 1125| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Asks the user to confirm deletion of N parked documents via CHECK_CONFIRM_STEP popup. +- 호출(파서): CHECK_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 삭제 확인 +- English: Confirmation Popup +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`LV_CNT`](#decl-zfir0050f01-1090-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1120-L1125` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#DELETE_DATA#C2` + +#### [fm_call] 선택 임시전표마다 Z_FI_PARKED_DOCUMENT_DELETE를 호출해 삭제하고 성공 시 BSTAT를 Z(삭제)로 바꿔 도메인 텍스트를 붙이며, 반려(C_R) 상태였던 건은 GT_Z0100의 BSTAT·변경자·시각을 갱신해 ZFIT0100에 MODIFY한다. + +```abap + 1126| LOOP AT GT_ROWS INTO GS_ROWS. + 1127| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1128| CHECK SY-SUBRC EQ 0. + 1129| CLEAR: LV_STATS. + 1130| CALL FUNCTION 'Z_FI_PARKED_DOCUMENT_DELETE' + 1131| EXPORTING + 1132| I_BUKRS = P_BUKRS + 1133| I_GJAHR = GT_HEAD-GJAHR + 1134| I_BELNR = GT_HEAD-BELNR + 1135| IMPORTING + 1136| E_STATS = LV_STATS + 1137| E_MESSG = GT_HEAD-ERMSG. + 1138| + 1139| * 삭제성공 + 1140| IF LV_STATS EQ C_S. + 1141| GT_HEAD-SICON = ICON_DELETE. + 1142| GT_HEAD-BSTAT = C_Z. + 1143| * 전표상태명 + 1144| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'BSTAT' + 1145| DOMVALUE_L = GT_HEAD-BSTAT. + 1146| IF SY-SUBRC EQ 0. + 1147| GT_HEAD-BSTAT_T = GT_DOMAIN-DDTEXT. + 1148| ENDIF. + 1149| ELSE. + 1150| + 1151| ENDIF. + 1152| + 1153| * 반려인 경우 삭제일 땐 CBO 저장 + 1154| IF GT_HEAD-STATS EQ C_R. + 1155| READ TABLE GT_Z0100 WITH KEY BELNR = GT_HEAD-BELNR + 1156| GJAHR = GT_HEAD-GJAHR. + 1157| IF SY-SUBRC EQ 0. + 1158| LV_CHK = C_X. + 1159| GT_Z0100-BSTAT = GT_HEAD-BSTAT. + 1160| GT_Z0100-UNAME = SY-UNAME. + 1161| GT_Z0100-UTIME = SY-UZEIT. + 1162| GT_Z0100-UDATE = SY-DATUM. + 1163| MODIFY GT_Z0100 TRANSPORTING BSTAT UNAME UTIME UDATE + 1164| WHERE BELNR EQ GT_HEAD-BELNR + 1165| AND GJAHR EQ GT_HEAD-GJAHR. + 1166| ENDIF. + 1167| + 1168| ENDIF. + 1169| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. + 1170| ENDLOOP. + 1171| + 1172| IF LV_CHK EQ C_X. + 1173| MODIFY ZFIT0100 FROM TABLE GT_Z0100. + 1174| ENDIF. +``` + +- **EN**: Deletes each selected parked document via Z_FI_PARKED_DOCUMENT_DELETE, sets document status Z with domain text on success, and for previously rejected documents updates the status history in ZFIT0100. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [ZFIT0100](/tables/ZFIT0100.md) +- 호출(파서): Z_FI_PARKED_DOCUMENT_DELETE +- SAP 객체: Z_FI_PARKED_DOCUMENT_DELETE, ZFIT0100 +- 업무 키워드: 임시전표 삭제, 전표상태 Z, 반려 이력 갱신, 도메인 텍스트 +- English: Delete Parked Document, Document Status BSTAT, CBO Table, Domain Text +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`LV_STATS`](#decl-zfir0050f01-1092-lv_stats), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`C_S`](#decl-zficom-226-c_s), [`C_Z`](#decl-zficom-233-c_z), [`GT_DOMAIN`](#decl-zfir0050top-147-gt_domain), [`C_R`](#decl-zficom-225-c_r), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100) 외 2건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1126-L1174` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#DELETE_DATA#C3` + +### FORM PROCESSING_DATA — `ZFIR0050F01` L1183-L1568 (386줄) + +*결재상신 FORM의 1번째 창으로, 세금·금액·전송 구조(ZFIS0090/91/92/93, ZFIT0101/0102) 로컬 변수를 선언하고 ALV 선택행을 GET_SELECTED_ROWS로 읽어오는 준비 구간이다.* + +> 이 unit 의 조각 8개가 290/386줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 선택행이 없거나 2건 이상이면 중단하고, 선택 전표가 임시전표(BSTAT V/W)인지 확인하며 반려(R) 재상신 시 사번·결재상태·반려사유·UNQID를 초기화하고 이미 상신중(I)이면 오류로 종료한다. + +```abap + 1220| IF GT_ROWS[] IS INITIAL. + 1221| MESSAGE S004. "선택된 데이터가 없습니다. + 1222| EXIT. + 1223| ELSE. + 1224| CLEAR: LV_CNT. + 1225| * 문서조회는 한건씩 + 1226| DESCRIBE TABLE GT_ROWS LINES LV_CNT. + 1227| + 1228| IF LV_CNT GT 1. + 1229| MESSAGE S000 WITH '결재상신은 한건씩 가능합니다' + 1230| DISPLAY LIKE C_E. + 1231| EXIT. + 1232| ENDIF. + 1233| + 1234| LOOP AT GT_ROWS INTO GS_ROWS. + 1235| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1236| CHECK SY-SUBRC EQ 0. + 1237| * 임시전표만 상신가능 + 1238| IF GT_HEAD-BSTAT EQ C_V OR GT_HEAD-BSTAT EQ C_W. + 1239| * 재상신시 관련필드 CLEAR + 1240| IF GT_HEAD-STATS EQ C_R. + 1241| CLEAR: GT_HEAD-SABUN, GT_HEAD-LGCYCD, GT_HEAD-CFMSTA, + 1242| GT_HEAD-CFMDAT, GT_HEAD-RJTXT, GT_HEAD-UNQID. + 1243| ELSEIF GT_HEAD-STATS EQ C_I. + 1244| MESSAGE S000 WITH '선택하신 데이터는 이미 상신중입니다.' + 1245| DISPLAY LIKE C_E. + 1246| EXIT. + 1247| ENDIF. + 1248| ELSE. + 1249| MESSAGE S000 WITH '임시전표만 결재상신 가능합니다.' + 1250| DISPLAY LIKE C_E. + 1251| EXIT. + 1252| ENDIF. +``` + +- **EN**: Validates that exactly one parked document (BSTAT V/W) is selected, clears approval fields for re-submission after rejection, and blocks documents already in approval. +- 업무 키워드: 결재상신 검증, 단건 상신, 임시전표, 재상신, 상신중 +- English: Parked Document, Approval Request, Validation, Re-submission +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1184-lv_cnt), [`C_E`](#decl-zficom-212-c_e), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_V`](#decl-zficom-229-c_v), [`C_W`](#decl-zficom-230-c_w), [`C_R`](#decl-zficom-225-c_r), [`C_I`](#decl-zficom-216-c_i) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1220-L1252` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C1` + +#### [fm_call] Z_IF_GET_UNQKEY로 인터페이스 공통로그 고유키(UNQID)와 로그 구조(ZIFS0010)를 발급받고 오류 메시지가 있으면 처리를 중단한다. + +```abap + 1269| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 1270| EXPORTING + 1271| I_PGMID = SY-REPID + 1272| I_MODUL = 'FI' + 1273| IMPORTING + 1274| E_MESSG = LV_MESSG + 1275| ES_CMLOG = LS_CMLOG. + 1276| + 1277| IF LV_MESSG NE SPACE. + 1278| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 1279| LEAVE LIST-PROCESSING. + 1280| ELSE. + 1281| APPEND LS_CMLOG TO LT_CMLOG. + 1282| ENDIF. +``` + +- **EN**: Obtains the interface unique key (UNQID) and common log record via Z_IF_GET_UNQKEY for module FI; aborts on error message. +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZIFS0010 +- 업무 키워드: 인터페이스 고유키, 공통로그, UNQID 발급 +- English: Interface Unique Key, Common Log, Function Module +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0050f01-1186-lv_messg), [`LS_CMLOG`](#decl-zfir0050f01-1265-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0050f01-1199-lt_cmlog) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1269-L1282` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C2` + +#### [interface] 전표 헤더(GT_HEAD)를 전송 헤더 구조 ZFIS0090에 옮기고 LEGACYTYPE='SAP', 사번, 결재양식 'REGACCFORM'을 채운 뒤 CBO 이력 ZFIT0101용 레코드(UNQID·생성일시·생성자)를 만든다. + +```abap + 1285| CLEAR: LT_BKPF[], LT_BKPF, LT_BSEG[], LT_BSEG, LT_INFO[], LT_INFO, + 1286| LT_Z0101[], LT_Z0101, LT_Z0102[], LT_Z0102. + 1287| MOVE-CORRESPONDING GT_HEAD TO LT_BKPF. + 1288| LT_BKPF-LEGACYTYPE = 'SAP'. + 1289| LT_BKPF-SABUN = GV_SABUN. "XCLICK + 1290| LT_BKPF-FORMALIAS = 'REGACCFORM'. + 1291| APPEND LT_BKPF. + 1292| MOVE-CORRESPONDING LT_BKPF TO LT_INFO. + 1293| + 1294| MOVE-CORRESPONDING LT_BKPF TO LT_Z0101. + 1295| LT_Z0101-UNQID = LS_CMLOG-UNQID. + 1296| LT_Z0101-CDATE = SY-DATUM. + 1297| LT_Z0101-CTIME = SY-UZEIT. + 1298| LT_Z0101-CNAME = SY-UNAME. + 1299| APPEND LT_Z0101. + 1300| CLEAR: LT_BKPF, LT_Z0101. +``` + +- **EN**: Builds the e-approval header record (ZFIS0090 with legacy type SAP and form alias REGACCFORM) and the corresponding ZFIT0101 history record from the parked document header. +- SAP 객체: ZFIS0090, ZFIT0101 +- 업무 키워드: 전송 헤더 생성, 결재 양식, 전표 헤더, 이력 레코드 +- English: Interface Header, Document Header, E-Approval Form +- 정의부(복사 시 함께 필요): [`LT_BKPF`](#decl-zfir0050f01-1200-lt_bkpf), [`LT_BSEG`](#decl-zfir0050f01-1201-lt_bseg), [`LT_INFO`](#decl-zfir0050f01-1202-lt_info), [`LT_Z0101`](#decl-zfir0050f01-1204-lt_z0101), [`LT_Z0102`](#decl-zfir0050f01-1205-lt_z0102), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`GV_SABUN`](#decl-zfir0050top-158-gv_sabun), [`LS_CMLOG`](#decl-zfir0050f01-1265-ls_cmlog) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1285-L1300` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C3` + +#### [calculation] 전표 아이템별로 세금 자동계산(XMWST) 시 G/L 라인의 세금코드로 CALCULATE_TAXES_GROSS를 호출해 원화/전표통화 부가세액·공급가액을 누적하고, 수동 세액인 경우 공급업체(K)/고객(D) 라인의 MWSTS·DMBTR를 누적하며 부가세 계정(0011490101/0021350101)을 정한다. + +```abap + 1305| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 1306| AND BELNR EQ GT_HEAD-BELNR + 1307| AND GJAHR EQ GT_HEAD-GJAHR. + 1308| LT_BSEG-HKONT = GT_ITEM-HKONT. + 1309| LT_BSEG-TXT50 = GT_ITEM-TXT50. + 1310| + 1311| * 부가세 라인 + 1312| CLEAR: LT_TAXIN[], LT_TAXIN, LT_TAXOUT[], LT_TAXOUT, + 1313| LT_ERROR[], LT_ERROR, LV_DMBTR, LV_WRBTR. + 1314| IF GT_HEAD-XMWST EQ C_X. "세금 자동 계산 + 1315| IF GT_ITEM-MWSKZ IS NOT INITIAL AND GT_ITEM-KOART EQ C_S. + 1316| LT_TAXIN-BUKRS = GT_HEAD-BUKRS. + 1317| LT_TAXIN-MWSKZ = GT_ITEM-MWSKZ. + 1318| LT_TAXIN-WRBTR = GT_ITEM-DMBTR. + 1319| APPEND LT_TAXIN. + 1320| LT_TAXIN-BUKRS = GT_HEAD-BUKRS. + 1321| LT_TAXIN-WAERS = GT_HEAD-WAERS. + 1322| LT_TAXIN-MWSKZ = GT_ITEM-MWSKZ. + 1323| LT_TAXIN-WRBTR = GT_ITEM-DMBTR. + 1324| APPEND LT_TAXIN. + 1325| * 세금계산 펑션 + 1326| CALL FUNCTION 'CALCULATE_TAXES_GROSS' + 1327| TABLES + 1328| TAX_ITEM_IN = LT_TAXIN + 1329| TAX_ITEM_OUT = LT_TAXOUT + 1330| ERROR_RETURN = LT_ERROR. + 1331| LOOP AT LT_TAXOUT. + 1332| LS_BSEG_TX-HKONT = LT_TAXOUT-HKONT. + 1333| LV_SHKZG = GT_ITEM-SHKZG. + 1334| LV_MWSKZ = GT_ITEM-MWSKZ. + 1335| IF LT_TAXOUT-WAERS EQ SPACE. "원화 + 1336| LV_MWSTS = LV_MWSTS + LT_TAXOUT-FWSTE. "부가세액 + 1337| LV_HWBAS = LV_HWBAS + LT_TAXOUT-FWBAS. "부가세 공급가액 + 1338| LV_DMBTR = LT_TAXOUT-FWBAS. "공급가액 + 1339| ELSE. "전표통화 + 1340| LV_WMWST = LV_WMWST + LT_TAXOUT-FWSTE. "부가세액 + 1341| LV_FWBAS = LV_FWBAS + LT_TAXOUT-FWBAS. "부가세 공급가액 + 1342| LV_WRBTR = LT_TAXOUT-FWBAS. "공급가액 + 1343| ENDIF. + 1344| ENDLOOP. + 1345| ELSE. + 1346| LV_DMBTR = GT_ITEM-DMBTR. + 1347| LV_WRBTR = GT_ITEM-WRBTR. + 1348| ENDIF. + 1349| ELSE. "고객이나 구매처의 세액 입력 부분 + 1350| IF GT_ITEM-MWSKZ IS NOT INITIAL AND + 1351| ( GT_ITEM-KOART EQ C_K OR GT_ITEM-KOART EQ C_D ). + 1352| LV_SHKZG = GT_ITEM-SHKZG. + 1353| LV_MWSKZ = GT_ITEM-MWSKZ. + 1354| LV_MWSTS = LV_MWSTS + GT_ITEM-MWSTS. "부가세액 + 1355| LV_HWBAS = LV_HWBAS + GT_ITEM-DMBTR. "공급가액 + 1356| LV_WMWST = LV_WMWST + GT_ITEM-WMWST. "부가세액(전표통화) + 1357| LV_FWBAS = LV_FWBAS + GT_ITEM-WRBTR. "공급가액(전표통화) + 1358| IF GT_ITEM-KOART EQ C_K. + 1359| LS_BSEG_TX-HKONT = '0011490101'. + 1360| ELSE. + 1361| LS_BSEG_TX-HKONT = '0021350101'. + 1362| ENDIF. + 1363| ENDIF. + 1364| LV_DMBTR = GT_ITEM-DMBTR. + 1365| LV_WRBTR = GT_ITEM-WRBTR. + 1366| ENDIF. +``` + +- **EN**: Per document line item, calculates VAT with CALCULATE_TAXES_GROSS when tax is auto-calculated, otherwise accumulates manually entered tax on vendor/customer lines, deriving the tax G/L account and base amounts in local and document currency. +- 호출(파서): CALCULATE_TAXES_GROSS +- SAP 객체: CALCULATE_TAXES_GROSS, RTAX1U38, BSEG +- 업무 키워드: 부가세 계산, 세금코드, 공급가액, 세액 누적, 자동 세금계산 +- English: Tax Calculation, Tax Code MWSKZ, Tax Base Amount, Input/Output Tax, CALCULATE_TAXES_GROSS +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`LT_BSEG`](#decl-zfir0050f01-1201-lt_bseg), [`LT_TAXIN`](#decl-zfir0050f01-1207-lt_taxin), [`LT_TAXOUT`](#decl-zfir0050f01-1208-lt_taxout), [`LT_ERROR`](#decl-zfir0050f01-1209-lt_error), [`LV_DMBTR`](#decl-zfir0050f01-1192-lv_dmbtr), [`LV_WRBTR`](#decl-zfir0050f01-1193-lv_wrbtr), [`C_X`](#decl-zficom-231-c_x), [`C_S`](#decl-zficom-226-c_s), [`LS_BSEG_TX`](#decl-zfir0050f01-1211-ls_bseg_tx) 외 8건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1305-L1366` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C4` + +#### [interface] 차/대(SHKZG)에 따라 금액을 차변·대변 컬럼으로 통화 변환해 넣고 코스트센터·거래처명·오더·적요를 채우며 LFA1/KNA1에서 사업자번호(STCD2)를 조회해 전송 아이템(ZFIS0091)·정보(ZFIS0093)·합계·CBO ZFIT0102 레코드를 만든다. + +```abap + 1368| IF GT_ITEM-SHKZG EQ C_S. + 1369| CHANGE_CURRENCY LV_DMBTR LT_BSEG-SDMBTR C_WAERS. + 1370| CHANGE_CURRENCY LV_WRBTR LT_BSEG-SWRBTR GT_HEAD-WAERS. + 1371| * CHANGE_CURRENCY GT_ITEM-DMBTR LT_BSEG-SDMBTR C_WAERS. + 1372| * CHANGE_CURRENCY GT_ITEM-MWSTS LT_BSEG-SMWSTS C_WAERS. + 1373| ELSE. + 1374| CHANGE_CURRENCY LV_DMBTR LT_BSEG-HDMBTR C_WAERS. + 1375| CHANGE_CURRENCY LV_WRBTR LT_BSEG-HWRBTR GT_HEAD-WAERS. + 1376| * CHANGE_CURRENCY GT_ITEM-DMBTR LT_BSEG-HDMBTR C_WAERS. + 1377| * CHANGE_CURRENCY GT_ITEM-MWSTS LT_BSEG-HMWSTS C_WAERS. + 1378| ENDIF. + 1379| * LT_BSEG-MWSKZ = GT_ITEM-MWSKZ. + 1380| * LT_BSEG-TEXT1 = GT_ITEM-MWSKZ_T. + 1381| LT_BSEG-KOSTL = GT_ITEM-KOSTL. + 1382| LT_BSEG-TEXT2 = GT_ITEM-KOSTL_T. + 1383| * 거래처 + 1384| IF GT_ITEM-KOART EQ C_K. + 1385| * LT_BSEG-LIFNR = GT_ITEM-SUBAC. + 1386| LT_BSEG-TXT30 = GT_ITEM-SUBNM. + 1387| * 구매처 + 1388| SELECT SINGLE STCD2 + 1389| INTO LT_BSEG-STCD2 + 1390| FROM LFA1 + 1391| WHERE LIFNR EQ GT_ITEM-SUBAC. + 1392| ELSEIF GT_ITEM-KOART EQ C_D. + 1393| * LT_BSEG-LIFNR = GT_ITEM-SUBAC. + 1394| LT_BSEG-TXT30 = GT_ITEM-SUBNM. + 1395| * 고객 + 1396| SELECT SINGLE STCD2 + 1397| INTO LT_BSEG-STCD2 + 1398| FROM KNA1 + 1399| WHERE KUNNR EQ GT_ITEM-SUBAC. + 1400| ENDIF. + 1401| + 1402| LT_BSEG-AUFNR = GT_ITEM-AUFNR. + 1403| LT_BSEG-SGTXT = GT_ITEM-SGTXT. + 1404| APPEND LT_BSEG. + 1405| MOVE-CORRESPONDING LT_BSEG TO LT_INFO. + 1406| APPEND LT_INFO. + 1407| + 1408| * 합계금액 + 1409| LT_TOTAL-SDMBTR_TOT = LT_TOTAL-SDMBTR_TOT + LT_BSEG-SDMBTR. + 1410| LT_TOTAL-SWRBTR_TOT = LT_TOTAL-SWRBTR_TOT + LT_BSEG-SWRBTR. + 1411| LT_TOTAL-HDMBTR_TOT = LT_TOTAL-HDMBTR_TOT + LT_BSEG-HDMBTR. + 1412| LT_TOTAL-HWRBTR_TOT = LT_TOTAL-HWRBTR_TOT + LT_BSEG-HWRBTR. + 1413| + 1414| * CBO TABLE + 1415| MOVE-CORRESPONDING LT_BSEG TO LT_Z0102. + 1416| LT_Z0102-BUKRS = GT_HEAD-BUKRS. + 1417| LT_Z0102-GJAHR = GT_HEAD-GJAHR. + 1418| LT_Z0102-BELNR = GT_HEAD-BELNR. + 1419| LT_Z0102-BUZEI = '000'. + 1420| LT_Z0102-UNQID = LS_CMLOG-UNQID. + 1421| APPEND LT_Z0102. + 1422| CLEAR: LT_BSEG, LT_Z0102. + 1423| ENDLOOP. +``` + +- **EN**: Formats debit/credit amounts by posting key indicator, reads vendor/customer tax number STCD2 from LFA1/KNA1, and appends the line to interface item, info, total and ZFIT0102 history tables. +- 테이블(파서): read [LFA1](/tables/LFA1.md), [KNA1](/tables/KNA1.md) / write - +- SAP 객체: LFA1, KNA1, ZFIS0091, ZFIS0093, ZFIT0102 +- 업무 키워드: 차변 대변 금액, 사업자번호, 거래처, 코스트센터, 합계 누적, 전송 아이템 +- English: Debit/Credit Indicator, Tax Number STCD2, Vendor Master, Customer Master, Interface Item +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0050top-35-gt_item), [`C_S`](#decl-zficom-226-c_s), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`LV_DMBTR`](#decl-zfir0050f01-1192-lv_dmbtr), [`LT_BSEG`](#decl-zfir0050f01-1201-lt_bseg), [`C_WAERS`](#decl-zficom-199-c_waers), [`LV_WRBTR`](#decl-zfir0050f01-1193-lv_wrbtr), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_K`](#decl-zficom-218-c_k), [`LFA1`](#decl-zficom-36-lfa1), [`C_D`](#decl-zficom-211-c_d) 외 5건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1368-L1423` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C5` + +#### [calculation] 누적 부가세액이 있으면 세금 계정의 SKAT 계정명과 T007S 세금코드명을 조회해 '세금코드-세금명, 공급가액:금액' 적요를 가진 부가세 라인을 전송 아이템·ZFIT0102에 추가하고 합계 금액에 반영한다. + +```abap + 1426| IF LV_MWSTS IS NOT INITIAL. + 1427| CLEAR: LT_BSEG, LV_TEXT1. + 1428| LT_BSEG-HKONT = LS_BSEG_TX-HKONT. + 1429| SELECT SINGLE TXT50 + 1430| INTO LT_BSEG-TXT50 + 1431| FROM SKAT + 1432| WHERE SAKNR EQ LT_BSEG-HKONT + 1433| AND SPRAS EQ SY-LANGU. + 1434| + 1435| IF LV_SHKZG EQ C_S. + 1436| CHANGE_CURRENCY LV_MWSTS LT_BSEG-SDMBTR C_WAERS. + 1437| CHANGE_CURRENCY LV_WMWST LT_BSEG-SWRBTR GT_HEAD-WAERS. + 1438| ELSE. + 1439| CHANGE_CURRENCY LV_MWSTS LT_BSEG-HDMBTR C_WAERS. + 1440| CHANGE_CURRENCY LV_WMWST LT_BSEG-HWRBTR GT_HEAD-WAERS. + 1441| ENDIF. + 1442| + 1443| CHANGE_CURRENCY LV_HWBAS LT_BSEG-SGTXT C_WAERS. + 1444| CONDENSE LT_BSEG-SGTXT. + 1445| + 1446| SELECT SINGLE TEXT1 + 1447| INTO LV_TEXT1 + 1448| FROM T007S + 1449| WHERE SPRAS EQ SY-LANGU + 1450| AND KALSM EQ T005-KALSM + 1451| AND MWSKZ EQ LV_MWSKZ. + 1452| * 지정 - 세금 + 세금코드명 + 공급가액 + 1453| CONCATENATE LV_MWSKZ '-' LV_TEXT1 ', 공급가액:' LT_BSEG-SGTXT + 1454| INTO LT_BSEG-SGTXT. + 1455| + 1456| APPEND LT_BSEG. + 1457| MOVE-CORRESPONDING LT_BSEG TO LT_INFO. + 1458| APPEND LT_INFO. + 1459| + 1460| * CBO TABLE + 1461| MOVE-CORRESPONDING LT_BSEG TO LT_Z0102. + 1462| LT_Z0102-BUKRS = GT_HEAD-BUKRS. + 1463| LT_Z0102-GJAHR = GT_HEAD-GJAHR. + 1464| LT_Z0102-BELNR = GT_HEAD-BELNR. + 1465| LT_Z0102-BUZEI = GT_ITEM-BUZEI. + 1466| LT_Z0102-UNQID = LS_CMLOG-UNQID. + 1467| APPEND LT_Z0102. + 1468| + 1469| * 합계금액 + 1470| LT_TOTAL-SDMBTR_TOT = LT_TOTAL-SDMBTR_TOT + LT_BSEG-SDMBTR. + 1471| LT_TOTAL-SWRBTR_TOT = LT_TOTAL-SWRBTR_TOT + LT_BSEG-SWRBTR. + 1472| LT_TOTAL-HDMBTR_TOT = LT_TOTAL-HDMBTR_TOT + LT_BSEG-HDMBTR. + 1473| LT_TOTAL-HWRBTR_TOT = LT_TOTAL-HWRBTR_TOT + LT_BSEG-HWRBTR. + 1474| + 1475| CLEAR: LT_BSEG, LT_Z0102. + 1476| + 1477| ENDIF. + 1478| + 1479| APPEND LT_TOTAL. +``` + +- **EN**: Creates a separate VAT line with G/L account text from SKAT and tax code description from T007S, appends it to interface items and ZFIT0102, and adds it to the totals. +- 테이블(파서): read [SKAT](/tables/SKAT.md), [T007S](/tables/T007S.md) / write - +- SAP 객체: SKAT, T007S, ZFIT0102, ZFIS0091 +- 업무 키워드: 부가세 라인 생성, 세금 계정명, 세금코드명, 공급가액 적요, 합계 +- English: Tax Line, G/L Account Text, Tax Code Description, SKAT, T007S +- 정의부(복사 시 함께 필요): [`LV_MWSTS`](#decl-zfir0050f01-1194-lv_mwsts), [`LT_BSEG`](#decl-zfir0050f01-1201-lt_bseg), [`LV_TEXT1`](#decl-zfir0050f01-1191-lv_text1), [`LS_BSEG_TX`](#decl-zfir0050f01-1211-ls_bseg_tx), [`LV_SHKZG`](#decl-zfir0050f01-1189-lv_shkzg), [`C_S`](#decl-zficom-226-c_s), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers), [`LV_WMWST`](#decl-zfir0050f01-1196-lv_wmwst), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`LV_HWBAS`](#decl-zfir0050f01-1195-lv_hwbas) 외 7건 +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1426-L1479` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C6` + +#### [fm_call] RFC 목적지 ZFI01의 Z_FI_CONFIRM_REQUEST에 정보·헤더·아이템·합계·공통로그 테이블을 넘겨 전자결재 상신을 요청하고 상태·메시지·결재 URL을 받는다. + +```abap + 1483| CALL FUNCTION 'Z_FI_CONFIRM_REQUEST' + 1484| DESTINATION 'ZFI01' + 1485| IMPORTING + 1486| E_STATS = LV_STATS + 1487| E_MESSG = LV_MESSG + 1488| E_URL = LV_URL + 1489| TABLES + 1490| IT_INFO = LT_INFO + 1491| IT_HEADER = LT_BKPF + 1492| IT_ITEM = LT_BSEG + 1493| IT_TOTAL = LT_TOTAL + 1494| IT_CMLOG = LT_CMLOG + 1495| EXCEPTIONS + 1496| SYSTEM_FAILURE = 1 + 1497| COMMUNICATION_FAILURE = 2 + 1498| OTHERS = 3. +``` + +- **EN**: Calls RFC Z_FI_CONFIRM_REQUEST (destination ZFI01) with header, item, total and log tables to submit the parked document for e-approval and receives status and approval URL. +- 호출(파서): Z_FI_CONFIRM_REQUEST +- SAP 객체: Z_FI_CONFIRM_REQUEST, ZFI01 +- 업무 키워드: 결재상신, RFC 호출, 전자결재 인터페이스, 결재 URL +- English: E-Approval Request, RFC Destination, Interface +- 정의부(복사 시 함께 필요): [`LV_STATS`](#decl-zfir0050f01-1185-lv_stats), [`LV_MESSG`](#decl-zfir0050f01-1186-lv_messg), [`LV_URL`](#decl-zfir0050f01-1187-lv_url), [`LT_INFO`](#decl-zfir0050f01-1202-lt_info), [`LT_BKPF`](#decl-zfir0050f01-1200-lt_bkpf), [`LT_BSEG`](#decl-zfir0050f01-1201-lt_bseg), [`LT_TOTAL`](#decl-zfir0050f01-1203-lt_total), [`LT_CMLOG`](#decl-zfir0050f01-1199-lt_cmlog) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1483-L1498` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C7` + +#### [db_write] URL이 없으면 오류(E) 상태로 표시하고, 있으면 상신중(I)·UNQID를 GT_HEAD에 반영한 뒤 ZFIT0100/ZFIT0101/ZFIT0102에 상신 이력을 MODIFY·COMMIT하고 CALL_BROWSER로 결재 화면을 연다. + +```abap + 1500| IF LV_URL EQ SPACE. + 1501| GT_HEAD-STATS = C_E. + 1502| GT_HEAD-STATS_T = '오류'. + 1503| GT_HEAD-SICON = ICON_RED_LIGHT. + 1504| GT_HEAD-ERMSG = '결재상신 Interface 중 에러가 발생하였습니다.'. + 1505| ELSE. + 1506| GT_HEAD-STATS = C_I. + 1507| GT_HEAD-STATS_T = '상신중'. + 1508| GT_HEAD-SICON = ICON_TRANSFER. + 1509| GT_HEAD-UNQID = LS_CMLOG-UNQID. + 1510| * CBO TABLE UPDATE + 1511| MOVE-CORRESPONDING GT_HEAD TO LT_Z0100_S. + 1512| LT_Z0100_S-CDATE = SY-DATUM. + 1513| LT_Z0100_S-CTIME = SY-UZEIT. + 1514| LT_Z0100_S-CNAME = SY-UNAME. + 1515| APPEND LT_Z0100_S. CLEAR LT_Z0100_S. + 1516| * CBO 테이블 저장 + 1517| IF LT_Z0100_S[] IS NOT INITIAL. + 1518| MODIFY ZFIT0100 FROM TABLE LT_Z0100_S. + 1519| MODIFY ZFIT0101 FROM TABLE LT_Z0101. + 1520| MODIFY ZFIT0102 FROM TABLE LT_Z0102. + 1521| + 1522| COMMIT WORK AND WAIT. + 1523| ENDIF. + 1524| + 1525| * 브라우져 호출 + 1526| CALL FUNCTION 'CALL_BROWSER' + 1527| EXPORTING + 1528| URL = LV_URL + 1529| EXCEPTIONS + 1530| FRONTEND_NOT_SUPPORTED = 1 + 1531| FRONTEND_ERROR = 2 + 1532| PROG_NOT_FOUND = 3 + 1533| NO_BATCH = 4 + 1534| UNSPECIFIED_ERROR = 5 + 1535| OTHERS = 6. + 1536| ENDIF. + 1537| + 1538| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. +``` + +- **EN**: On success sets in-approval status, persists header/item history into ZFIT0100/0101/0102 with COMMIT WORK, and opens the approval URL via CALL_BROWSER; on failure marks the row as error. +- 테이블(파서): read - / write [ZFIT0100](/tables/ZFIT0100.md), [ZFIT0101](/tables/ZFIT0101.md), [ZFIT0102](/tables/ZFIT0102.md), [GT_HEAD](/tables/GT_HEAD.md) +- 호출(파서): CALL_BROWSER +- SAP 객체: ZFIT0100, ZFIT0101, ZFIT0102, CALL_BROWSER +- 업무 키워드: 상신 결과 처리, 상신중 상태, 결재 이력 저장, 브라우저 호출, COMMIT +- English: Status Update, CBO Table, COMMIT WORK, CALL_BROWSER +- 정의부(복사 시 함께 필요): [`LV_URL`](#decl-zfir0050f01-1187-lv_url), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_E`](#decl-zficom-212-c_e), [`C_I`](#decl-zficom-216-c_i), [`LS_CMLOG`](#decl-zfir0050f01-1265-ls_cmlog), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`LT_Z0100_S`](#decl-zfir0050f01-1206-lt_z0100_s), [`LT_Z0101`](#decl-zfir0050f01-1204-lt_z0101), [`LT_Z0102`](#decl-zfir0050f01-1205-lt_z0102), [`GS_ROWS`](#decl-zficom-122-gs_rows) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1500-L1538` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#PROCESSING_DATA#C8` + +### FORM CONFIRM_DATA — `ZFIR0050F01` L1574-L1775 (202줄) + +*선택한 임시전표를 검증·확인 팝업 후 BDC로 FBV0(임시전표 전기)를 실행해 정규전표로 전기하고 성공 건을 팀장승인 상태(A)로 ZFIT0100에 저장하는 FORM이다(이전 Z_FI_PARKED_DOCUMENT_POSTING 방식은 주석 처리됨).* + +> 이 unit 의 조각 4개가 87/202줄(43%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행이 없으면 중단하고, 선택 건이 모두 임시전표(BSTAT V/W)인지 확인해 아니면 오류 메시지 후 처리를 막으며 승인 대상 건수를 센다. + +```abap + 1682| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 1683| IMPORTING + 1684| ET_INDEX_ROWS = GT_ROWS[]. + 1685| + 1686| IF GT_ROWS[] IS INITIAL. + 1687| MESSAGE S004. "선택된 데이터가 없습니다. + 1688| EXIT. + 1689| ELSE. + 1690| * 선택된 데이터의 상태가 임시전표인지 확인 + 1691| CLEAR: LV_CNT, LV_CHK, GF_CHECK, GV_TEXT. + 1692| LOOP AT GT_ROWS INTO GS_ROWS. + 1693| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1694| CHECK SY-SUBRC EQ 0. + 1695| IF GT_HEAD-BSTAT EQ C_V OR GT_HEAD-BSTAT EQ C_W. + 1696| LV_CNT = LV_CNT + 1. + 1697| ELSE. + 1698| MESSAGE I000 WITH TEXT-001. + 1699| "선택한 데이터 중 임시전표가 아닌 건이 포함되어 있습니다. + 1700| GF_CHECK = C_X. + 1701| EXIT. + 1702| ENDIF. + 1703| ENDLOOP. +``` + +- **EN**: Validates that rows are selected and that every selected document is a parked document (BSTAT V/W), counting the approvable documents. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 팀장승인, 임시전표 검증, 선택행, 건수 +- English: Parked Document, Validation, ALV Selected Rows +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1675-lv_cnt), [`LV_CHK`](#decl-zfir0050f01-1676-lv_chk), [`GF_CHECK`](#decl-zficom-87-gf_check), [`GV_TEXT`](#decl-zficom-85-gv_text), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_V`](#decl-zficom-229-c_v), [`C_W`](#decl-zficom-230-c_w), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1682-L1703` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA#C1` + +#### [control_flow] '임시전표 N건 승인' 확인 문구를 만들어 CHECK_CONFIRM_STEP 팝업으로 승인 여부를 묻고 '예'가 아니면 중단한다. + +```abap + 1705| CHECK GF_CHECK IS INITIAL. + 1706| CONCATENATE TEXT-002 LV_CNT TEXT-007 INTO GV_TEXT + 1707| SEPARATED BY SPACE. + 1708| "선택하신 N건의 임시전표를 승인하시겠습니까? + 1709| PERFORM CHECK_CONFIRM_STEP USING TEXT-008 GV_TEXT SPACE C_N. + 1710| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Asks the user to confirm approval of N parked documents via CHECK_CONFIRM_STEP popup. +- 호출(파서): CHECK_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 승인 확인 +- English: Confirmation Popup +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`LV_CNT`](#decl-zfir0050f01-1675-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1705-L1710` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA#C2` + +#### [interface] 선택 임시전표마다 SAPMF05V 0100에 회사코드·전표번호·연도를 입력하고 원래 T-Code(FB*/FV*)에 따라 SAPLF040 0700 또는 SAPMF05A 1100 화면에서 전기(=BU) OK코드를 넣는 BDC 화면 흐름을 만들어 FBV0 트랜잭션을 BDC로 실행한다. + +```abap + 1712| LOOP AT GT_ROWS INTO GS_ROWS. + 1713| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1714| CHECK SY-SUBRC EQ 0. + 1715| * 임시전표 전기 + 1716| PERFORM DYNPRO USING : + 1717| 'X' 'SAPMF05V' '0100', + 1718| ' ' 'BDC_OKCODE' '/00', + 1719| ' ' 'RF05V-BUKRS' P_BUKRS, + 1720| ' ' 'RF05V-BELNR' GT_HEAD-BELNR, + 1721| ' ' 'RF05V-GJAHR' GT_HEAD-GJAHR. + 1722| + 1723| IF GT_HEAD-TCODE(2) EQ 'FB'. + 1724| PERFORM DYNPRO USING : + 1725| 'X' 'SAPLF040' '0700', + 1726| ' ' 'BDC_OKCODE' '/00'. + 1727| + 1728| PERFORM DYNPRO USING : + 1729| 'X' 'SAPLF040' '0700', + 1730| ' ' 'BDC_OKCODE' '=BU'. + 1731| + 1732| ELSEIF GT_HEAD-TCODE(2) EQ 'FV'. + 1733| PERFORM DYNPRO USING : + 1734| 'X' 'SAPMF05A' '1100', + 1735| ' ' 'BDC_OKCODE' '/00'. + 1736| + 1737| PERFORM DYNPRO USING : + 1738| 'X' 'SAPMF05A' '1100', + 1739| ' ' 'BDC_OKCODE' '=BU'. + 1740| ENDIF. + 1741| + 1742| PERFORM BDC_TRANSACTION USING 'FBV0'. +``` + +- **EN**: Builds the BDC screen sequence for FBV0 (post parked document) per selected document, choosing the follow-up screen by original transaction prefix FB/FV, and calls BDC_TRANSACTION. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, BDC_TRANSACTION +- SAP 객체: FBV0, SAPMF05V, SAPLF040, SAPMF05A +- 업무 키워드: 임시전표 전기, BDC, 화면 흐름, 전기 OK코드 +- English: Post Parked Document, Batch Input, BDC, FBV0 +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1712-L1742` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA#C3` + +#### [db_write] BDC 메시지에서 F5 312(전표 전기 성공)를 찾아 성공 건은 정규전표·팀장승인(C_A) 상태로 GT_HEAD를 갱신하고 승인자·시각을 채워 ZFIT0100에 MODIFY하며, 실패 건은 첫 메시지를 오류 텍스트로 붙여 빨간 아이콘을 표시한다. + +```abap + 1745| READ TABLE GT_MESS WITH KEY MSGID = 'F5' + 1746| MSGNR = '312'. + 1747| * 성공 + 1748| IF SY-SUBRC EQ 0. + 1749| GT_HEAD-BSTAT = SPACE. + 1750| GT_HEAD-BSTAT_T = '정규전표'. + 1751| GT_HEAD-SICON = ICON_YELLOW_LIGHT. + 1752| GT_HEAD-STATS = C_A. + 1753| GT_HEAD-STATS_T = '팀장승인'. + 1754| * 승인 성공 건 저장 + 1755| MOVE-CORRESPONDING GT_HEAD TO LT_Z0100_S. + 1756| LT_Z0100_S-CNAME = SY-UNAME. + 1757| LT_Z0100_S-CTIME = SY-UZEIT. + 1758| LT_Z0100_S-CDATE = SY-DATUM. + 1759| APPEND LT_Z0100_S. CLEAR LT_Z0100_S. + 1760| * 실패 + 1761| ELSE. + 1762| READ TABLE GT_MESS INDEX 1. + 1763| PERFORM message_select CHANGING gt_HEAD-ERMSG. + 1764| GT_HEAD-SICON = ICON_RED_LIGHT. + 1765| ENDIF. + 1766| + 1767| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. + 1768| ENDLOOP. + 1769| + 1770| IF LT_Z0100_S[] IS NOT INITIAL. + 1771| MODIFY ZFIT0100 FROM TABLE LT_Z0100_S. + 1772| ENDIF. +``` + +- **EN**: Evaluates the BDC messages (F5 312 = posted), marks successful documents as posted/team-leader approved and saves them into ZFIT0100; failed ones get the BDC error message and a red icon. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [ZFIT0100](/tables/ZFIT0100.md) +- 호출(파서): MESSAGE_SELECT +- SAP 객체: ZFIT0100, F5 312 +- 업무 키워드: BDC 결과 판정, 전기 성공, 팀장승인 저장, 오류 메시지 +- English: BDC Message, Posting Result, Status Update, CBO Table +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_A`](#decl-zficom-208-c_a), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`LT_Z0100_S`](#decl-zfir0050f01-1674-lt_z0100_s), [`GS_ROWS`](#decl-zficom-122-gs_rows) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1745-L1772` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA#C4` + +### FORM CONFIRM_DATA_2 — `ZFIR0050F01` L1782-L1843 (62줄) + +*팀장승인된 정규전표를 선택해 확인 팝업 후 임원승인 상태(C)로 갱신하고 ZFIT0100에 승인자·시각을 저장하는 FORM이다.* + +> 이 unit 의 조각 2개가 48/62줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행이 없으면 중단하고, 선택 건수를 세어 '정규전표 N건 승인' 확인 팝업(CHECK_CONFIRM_STEP)을 띄워 '예'가 아니면 종료한다. + +```abap + 1792| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 1793| IMPORTING + 1794| ET_INDEX_ROWS = GT_ROWS[]. + 1795| + 1796| IF GT_ROWS[] IS INITIAL. + 1797| MESSAGE S004. "선택된 데이터가 없습니다. + 1798| EXIT. + 1799| ELSE. + 1800| * 선택된 데이터의 상태 업데이트 + 1801| CLEAR: LV_CNT, LV_CHK, GF_CHECK, GV_TEXT. + 1802| LOOP AT GT_ROWS INTO GS_ROWS. + 1803| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1804| CHECK SY-SUBRC EQ 0. + 1805| LV_CNT = LV_CNT + 1. + 1806| ENDLOOP. + 1807| + 1808| CHECK GF_CHECK IS INITIAL. + 1809| CONCATENATE TEXT-002 LV_CNT TEXT-015 INTO GV_TEXT + 1810| SEPARATED BY SPACE. + 1811| "선택하신 N건의 정규전표를 승인하시겠습니까? + 1812| PERFORM CHECK_CONFIRM_STEP USING TEXT-016 GV_TEXT SPACE C_N. + 1813| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Reads selected ALV rows, counts them and asks the user to confirm the executive approval of N posted documents via CHECK_CONFIRM_STEP. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS, CHECK_CONFIRM_STEP +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 임원승인, 선택행 확인, 확인 팝업, 건수 +- English: Executive Approval, ALV Selected Rows, Confirmation Popup +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1785-lv_cnt), [`LV_CHK`](#decl-zfir0050f01-1786-lv_chk), [`GF_CHECK`](#decl-zficom-87-gf_check), [`GV_TEXT`](#decl-zficom-85-gv_text), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1792-L1813` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA_2#C1` + +#### [db_write] 선택 전표의 상태를 임원승인(C_C, ICON_GREEN_LIGHT)으로 바꿔 GT_HEAD를 갱신하고, 기존 GT_Z0100 이력이 있으면 STATS만 갱신하며 승인자·시각(UNAME/UTIME/UDATE)을 채워 ZFIT0100에 MODIFY한다. + +```abap + 1815| LOOP AT GT_ROWS INTO GS_ROWS. + 1816| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1817| CHECK SY-SUBRC EQ 0. + 1818| GT_HEAD-SICON = ICON_GREEN_LIGHT. + 1819| GT_HEAD-STATS = C_C. + 1820| GT_HEAD-STATS_T = '임원승인'. + 1821| + 1822| READ TABLE GT_Z0100 WITH KEY BELNR = GT_HEAD-BELNR + 1823| GJAHR = GT_HEAD-GJAHR. + 1824| IF SY-SUBRC EQ 0. + 1825| MOVE GT_Z0100 TO LT_Z0100_S. + 1826| LT_Z0100_S-STATS = GT_HEAD-STATS. + 1827| ELSE. + 1828| MOVE-CORRESPONDING GT_HEAD TO LT_Z0100_S. + 1829| ENDIF. + 1830| LT_Z0100_S-UNAME = SY-UNAME. + 1831| LT_Z0100_S-UTIME = SY-UZEIT. + 1832| LT_Z0100_S-UDATE = SY-DATUM. + 1833| APPEND LT_Z0100_S. CLEAR LT_Z0100_S. + 1834| + 1835| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. + 1836| ENDLOOP. + 1837| + 1838| IF LT_Z0100_S[] IS NOT INITIAL. + 1839| MODIFY ZFIT0100 FROM TABLE LT_Z0100_S. + 1840| ENDIF. +``` + +- **EN**: Sets executive-approved status on the selected documents in the ALV and persists status plus approver/timestamp into CBO table ZFIT0100. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [ZFIT0100](/tables/ZFIT0100.md) +- SAP 객체: ZFIT0100 +- 업무 키워드: 임원승인 처리, 상태 갱신, 결재 이력 저장, 승인자 +- English: Executive Approval, Status Update, CBO Table, Approval History +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_C`](#decl-zficom-210-c_c), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100), [`LT_Z0100_S`](#decl-zfir0050f01-1784-lt_z0100_s) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1815-L1840` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CONFIRM_DATA_2#C2` + +### FORM REJECT_DATA — `ZFIR0050F01` L1849-L1917 (69줄) + +*선택한 임시전표를 검증·확인 팝업 후 반려 상태(R)로 바꾸고 반려자·시각을 ZFIT0100에 저장하는 FORM이다.* + +> 이 unit 의 조각 3개가 53/69줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행을 읽어 선택 건이 모두 임시전표(BSTAT V/W)인지 확인하고 아니면 오류 메시지 후 중단하며, 반려사유(RJTXT) 필수 체크 코드가 있으나 EXIT 뒤에 있어 실행되지 않는다. + +```abap + 1860| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 1861| IMPORTING + 1862| ET_INDEX_ROWS = GT_ROWS[]. + 1863| + 1864| IF GT_ROWS[] IS INITIAL. + 1865| MESSAGE S004. "선택된 데이터가 없습니다. + 1866| EXIT. + 1867| ELSE. + 1868| * 선택된 데이터의 상태가 임시전표인지 확인 + 1869| CLEAR: LV_CNT, LV_CHK, GF_CHECK, GV_TEXT. + 1870| LOOP AT GT_ROWS INTO GS_ROWS. + 1871| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1872| CHECK SY-SUBRC EQ 0. + 1873| IF GT_HEAD-BSTAT EQ C_V OR GT_HEAD-BSTAT EQ C_W. + 1874| LV_CNT = LV_CNT + 1. + 1875| ELSE. + 1876| MESSAGE I000 WITH TEXT-001. + 1877| "선택한 데이터 중 임시전표가 아닌 건이 포함되어 있습니다. + 1878| GF_CHECK = C_X. + 1879| EXIT. + 1880| * 반려사유 기입 체크 + 1881| IF GT_HEAD-RJTXT IS INITIAL. + 1882| MESSAGE I000 WITH TEXT-011. + 1883| "반려시 반려사유(결재내역)는 필수입력입니다. + 1884| GF_CHECK = C_X. + 1885| EXIT. + 1886| ENDIF. + 1887| ENDIF. + 1888| ENDLOOP. +``` + +- **EN**: Validates that all selected rows are parked documents (BSTAT V/W); the rejection-reason (RJTXT) mandatory check is placed after EXIT and is effectively dead code. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 반려 대상 검증, 임시전표, 반려사유 필수, 선택행 +- English: Parked Document, Rejection Reason, Validation +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1853-lv_cnt), [`LV_CHK`](#decl-zfir0050f01-1854-lv_chk), [`GF_CHECK`](#decl-zficom-87-gf_check), [`GV_TEXT`](#decl-zficom-85-gv_text), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_V`](#decl-zficom-229-c_v), [`C_W`](#decl-zficom-230-c_w), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1860-L1888` · confidence 0.85 · `ZFIR0050#ZFIR0050F01#FORM#REJECT_DATA#C1` + +#### [control_flow] 선택 건수를 담은 반려 확인 문구를 만들어 CHECK_CONFIRM_STEP 팝업으로 반려 여부를 묻고 '예'가 아니면 중단한다. + +```abap + 1890| CHECK GF_CHECK IS INITIAL. + 1891| CONCATENATE TEXT-002 LV_CNT TEXT-009 INTO GV_TEXT + 1892| SEPARATED BY SPACE. + 1893| "선택하신 N건의 임시전표를 반려하시겠습니까? + 1894| PERFORM CHECK_CONFIRM_STEP USING TEXT-010 GV_TEXT SPACE C_N. + 1895| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Asks the user to confirm rejection of N parked documents via CHECK_CONFIRM_STEP popup. +- 호출(파서): CHECK_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 반려 확인 +- English: Confirmation Popup +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`LV_CNT`](#decl-zfir0050f01-1853-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1890-L1895` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#REJECT_DATA#C2` + +#### [db_write] 선택 전표의 상태를 반려(C_R, ICON_SYSTEM_UNDO)로 바꿔 GT_HEAD를 갱신하고 반려자·반려시각(CNAME/CTIME/CDATE)을 채워 ZFIT0100에 MODIFY로 결재 이력을 저장한다. + +```abap + 1897| LOOP AT GT_ROWS INTO GS_ROWS. + 1898| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1899| CHECK SY-SUBRC EQ 0. + 1900| GT_HEAD-SICON = ICON_SYSTEM_UNDO. + 1901| GT_HEAD-STATS = C_R. + 1902| GT_HEAD-STATS_T = '반려'. + 1903| MOVE-CORRESPONDING GT_HEAD TO LT_Z0100_S. + 1904| LT_Z0100_S-CNAME = SY-UNAME. + 1905| LT_Z0100_S-CTIME = SY-UZEIT. + 1906| LT_Z0100_S-CDATE = SY-DATUM. + 1907| APPEND LT_Z0100_S. CLEAR LT_Z0100_S. + 1908| + 1909| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. + 1910| ENDLOOP. + 1911| + 1912| IF LT_Z0100_S[] IS NOT INITIAL. + 1913| MODIFY ZFIT0100 FROM TABLE LT_Z0100_S. + 1914| ENDIF. +``` + +- **EN**: Sets the selected parked documents to rejected status in the ALV and persists the rejection with approver name/time into CBO table ZFIT0100. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [ZFIT0100](/tables/ZFIT0100.md) +- SAP 객체: ZFIT0100 +- 업무 키워드: 반려 처리, 상태 갱신, 결재 이력 저장, 반려자 +- English: Rejection, Status Update, CBO Table, Approval History +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_R`](#decl-zficom-225-c_r), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`LT_Z0100_S`](#decl-zfir0050f01-1852-lt_z0100_s) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1897-L1914` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#REJECT_DATA#C3` + +### FORM CANCEL_CONFIRM_DATA — `ZFIR0050F01` L1923-L2026 (104줄) + +*승인된 정규전표를 선택해 확인 팝업 후 Z_FI_DOCUMENT_REVERSE로 역분개(승인취소)하고 결과 상태를 GT_HEAD와 ZFIT0100에 반영하는 FORM이다.* + +> 이 unit 의 조각 3개가 88/104줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행을 읽어 임시전표(BSTAT V/W)가 포함되었거나 이미 역분개(STBLG 존재)된 전표가 있으면 오류 메시지를 띄우고 처리를 중단하며, 정상 건수를 센다. + +```abap + 1934| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 1935| IMPORTING + 1936| ET_INDEX_ROWS = GT_ROWS[]. + 1937| + 1938| IF GT_ROWS[] IS INITIAL. + 1939| MESSAGE S004. "선택된 데이터가 없습니다. + 1940| EXIT. + 1941| ELSE. + 1942| * 선택된 데이터의 상태가 임시전표인지 확인 + 1943| CLEAR: LV_CNT, LV_CHK, GF_CHECK, GV_TEXT. + 1944| LOOP AT GT_ROWS INTO GS_ROWS. + 1945| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1946| CHECK SY-SUBRC EQ 0. + 1947| IF GT_HEAD-BSTAT EQ C_V OR GT_HEAD-BSTAT EQ C_W. + 1948| MESSAGE I000 WITH TEXT-012. + 1949| "임시전표가 포함되어있습니다.(정규전표만 취소 가능) + 1950| GF_CHECK = C_X. + 1951| EXIT. + 1952| ELSE. + 1953| * 이미 역분개 되었는지 확인 + 1954| IF GT_HEAD-STBLG IS INITIAL. + 1955| LV_CNT = LV_CNT + 1. + 1956| ELSE. + 1957| MESSAGE I000 WITH TEXT-013. + 1958| "이미 승인취소된 전표가 포함되어 있습니다. + 1959| GF_CHECK = C_X. + 1960| EXIT. + 1961| ENDIF. + 1962| ENDIF. + 1963| ENDLOOP. +``` + +- **EN**: Validates the selected rows: rejects parked documents (BSTAT V/W) and already reversed documents (STBLG filled), counting eligible posted documents for reversal. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 승인취소, 역분개 대상 검증, 임시전표 제외, 이미 역분개 +- English: Reversal, Parked Document, Reversal Document STBLG, Validation +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-1927-lv_cnt), [`LV_CHK`](#decl-zfir0050f01-1928-lv_chk), [`GF_CHECK`](#decl-zficom-87-gf_check), [`GV_TEXT`](#decl-zficom-85-gv_text), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_V`](#decl-zficom-229-c_v), [`C_W`](#decl-zficom-230-c_w), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1934-L1963` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CANCEL_CONFIRM_DATA#C1` + +#### [control_flow] 선택 건수를 담은 확인 문구를 만들어 CHECK_CONFIRM_STEP 팝업으로 승인취소(역분개) 실행 여부를 묻고 '예'가 아니면 중단한다. + +```abap + 1965| CHECK GF_CHECK IS INITIAL. + 1966| CONCATENATE TEXT-002 LV_CNT TEXT-014 INTO GV_TEXT + 1967| SEPARATED BY SPACE. + 1968| "선택하신 N건의 승인취소(역분개)를 실행하시겠습니까? + 1969| PERFORM CHECK_CONFIRM_STEP USING TEXT-010 GV_TEXT SPACE C_N. + 1970| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Builds a confirmation text with the count and asks the user via CHECK_CONFIRM_STEP popup whether to execute the reversal. +- 호출(파서): CHECK_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 승인취소 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`LV_CNT`](#decl-zfir0050f01-1927-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1965-L1970` · confidence 0.8 · `ZFIR0050#ZFIR0050F01#FORM#CANCEL_CONFIRM_DATA#C2` + +#### [fm_call] 선택 전표마다 Z_FI_DOCUMENT_REVERSE(역분개 사유 03)를 호출해 역분개 전표번호(STBLG/STJAH)를 받고, 성공/오류에 따라 상태 아이콘·STATS(D 승인취소/E 오류)를 GT_HEAD에 갱신한 뒤 ZFIT0100에 상태·역분개 정보·변경자를 MODIFY한다. + +```abap + 1972| LOOP AT GT_ROWS INTO GS_ROWS. + 1973| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 1974| CHECK SY-SUBRC EQ 0. + 1975| * 역분개 + 1976| CALL FUNCTION 'Z_FI_DOCUMENT_REVERSE' + 1977| EXPORTING + 1978| I_BUKRS = P_BUKRS + 1979| I_BELNR = GT_HEAD-BELNR + 1980| I_GJAHR = GT_HEAD-GJAHR + 1981| I_STGRD = '03' + 1982| I_MESSAGE = SPACE + 1983| IMPORTING + 1984| E_STBLG = GT_HEAD-STBLG + 1985| E_STJAH = GT_HEAD-STJAH + 1986| E_NATXT = LV_NATXT + 1987| TABLES + 1988| T_MSG = LT_MSG. + 1989| + 1990| IF GT_HEAD-STBLG EQ SPACE. + 1991| GT_HEAD-SICON = ICON_RED_LIGHT. + 1992| GT_HEAD-ERMSG = LV_NATXT. + 1993| GT_HEAD-STATS = C_E. + 1994| GT_HEAD-STATS_T = '오류'. + 1995| ELSE. + 1996| GT_HEAD-SICON = ICON_STATUS_OVERVIEW. + 1997| GT_HEAD-STATS = C_D. + 1998| GT_HEAD-STATS_T = '승인취소'. + 1999| ENDIF. + 2000| MODIFY GT_HEAD INDEX GS_ROWS-INDEX. + 2001| + 2002| READ TABLE GT_Z0100 WITH KEY BELNR = GT_HEAD-BELNR + 2003| GJAHR = GT_HEAD-GJAHR. + 2004| IF SY-SUBRC EQ 0. + 2005| MOVE GT_Z0100 TO LT_Z0100_S. + 2006| LT_Z0100_S-STATS = GT_HEAD-STATS. + 2007| LT_Z0100_S-STBLG = GT_HEAD-STBLG. + 2008| LT_Z0100_S-STJAH = GT_HEAD-STJAH. + 2009| LT_Z0100_S-RJTXT = GT_HEAD-RJTXT. + 2010| ELSE. + 2011| MOVE-CORRESPONDING GT_HEAD TO LT_Z0100_S. + 2012| ENDIF. + 2013| + 2014| LT_Z0100_S-UNAME = SY-UNAME. + 2015| LT_Z0100_S-UTIME = SY-UZEIT. + 2016| LT_Z0100_S-UDATE = SY-DATUM. + 2017| APPEND LT_Z0100_S. CLEAR LT_Z0100_S. + 2018| + 2019| ENDLOOP. + 2020| + 2021| IF LT_Z0100_S[] IS NOT INITIAL. + 2022| MODIFY ZFIT0100 FROM TABLE LT_Z0100_S. + 2023| ENDIF. +``` + +- **EN**: Reverses each selected FI document via Z_FI_DOCUMENT_REVERSE (reversal reason 03), updates the ALV status (approval cancelled or error) and persists reversal document number and status into ZFIT0100. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [ZFIT0100](/tables/ZFIT0100.md) +- 호출(파서): Z_FI_DOCUMENT_REVERSE +- SAP 객체: Z_FI_DOCUMENT_REVERSE, ZFIT0100, ZFIS0030 +- 업무 키워드: 역분개, 승인취소, 역분개 사유, 상태 갱신, 결재 이력 저장 +- English: Document Reversal, Reversal Reason, Status Update, CBO Table +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`P_BUKRS`](#decl-zfir0050top-188-p_bukrs), [`LV_NATXT`](#decl-zfir0050f01-1926-lv_natxt), [`LT_MSG`](#decl-zfir0050f01-1924-lt_msg), [`C_E`](#decl-zficom-212-c_e), [`C_D`](#decl-zficom-211-c_d), [`ZFIT0100`](#decl-zfir0050top-7-zfit0100), [`GT_Z0100`](#decl-zfir0050top-90-gt_z0100), [`LT_Z0100_S`](#decl-zfir0050f01-1925-lt_z0100_s) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L1972-L2023` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#CANCEL_CONFIRM_DATA#C3` + +### FORM DISPLAY_PROCESSING_DATA — `ZFIR0050F01` L2032-L2138 (107줄) + +*ALV에서 선택한 결재중/승인 상태의 임시전표 1건에 대해 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다.* + +> 이 unit 의 조각 3개가 88/107줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행을 가져와 미선택·복수선택을 막고, 선택 전표의 상태가 결재중(C_I) 또는 승인(C_A)이며 전자결재 고유ID(UNQID)가 있는지 검증한다. + +```abap + 2043| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 2044| IMPORTING + 2045| ET_INDEX_ROWS = GT_ROWS[]. + 2046| + 2047| IF GT_ROWS[] IS INITIAL. + 2048| MESSAGE S004. "선택된 데이터가 없습니다. + 2049| EXIT. + 2050| ELSE. + 2051| CLEAR: LV_CNT. + 2052| * 문서조회는 한건씩 + 2053| DESCRIBE TABLE GT_ROWS LINES LV_CNT. + 2054| + 2055| IF LV_CNT GT 1. + 2056| MESSAGE S000 WITH '문서조회는 한건씩 조회 가능합니다' + 2057| DISPLAY LIKE C_E. + 2058| EXIT. + 2059| ENDIF. + 2060| + 2061| LOOP AT GT_ROWS INTO GS_ROWS. + 2062| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 2063| CHECK SY-SUBRC EQ 0. + 2064| * 문서조회는 결제중/승인 인 것만 가능 + 2065| IF GT_HEAD-STATS EQ C_I OR GT_HEAD-STATS EQ C_A. + 2066| ELSE. + 2067| MESSAGE S000 WITH '결재중 또는 승인데이터만 조회가능합니다.' + 2068| DISPLAY LIKE C_E. + 2069| EXIT. + 2070| ENDIF. + 2071| + 2072| IF GT_HEAD-UNQID IS INITIAL. + 2073| MESSAGE S000 WITH '해당 데이터의 문서조회를 할 수 없습니다.' + 2074| DISPLAY LIKE C_E. + 2075| EXIT. + 2076| ENDIF. +``` + +- **EN**: Reads selected ALV rows and validates that exactly one parked document with status in-approval/approved and a non-empty approval unique ID (UNQID) is chosen. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 선택행 검증, 결재중, 승인, 문서조회, 단건 조회 +- English: ALV Selected Rows, Validation, Approval Status +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0050top-168-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0050f01-2033-lv_cnt), [`C_E`](#decl-zficom-212-c_e), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`C_I`](#decl-zficom-216-c_i), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L2043-L2076` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_PROCESSING_DATA#C1` + +#### [db_write] ZIFT0010에서 해당 UNQID의 최대 SEQ를 조회해 +1한 순번으로 호스트·프로그램·요청자·시간을 담은 인터페이스 공통로그를 MODIFY하고 LT_CMLOG에도 적재한다. + +```abap + 2078| SELECT MAX( SEQ ) + 2079| INTO LV_MAX + 2080| FROM ZIFT0010 + 2081| WHERE UNQID EQ GT_HEAD-UNQID. + 2082| + 2083| CLEAR ZIFT0010. + 2084| ZIFT0010-UNQID = GT_HEAD-UNQID. + 2085| ZIFT0010-SEQ = LV_MAX + 1. + 2086| ZIFT0010-HOST = SY-HOST. + 2087| ZIFT0010-PGMID = SY-REPID. + 2088| ZIFT0010-REQID = GV_SABUN. + 2089| ZIFT0010-REQTM = SY-UZEIT. + 2090| * CBO TABLE 저장 + 2091| ZIFT0010-MODUL = 'FI'. + 2092| MODIFY ZIFT0010. + 2093| MOVE-CORRESPONDING ZIFT0010 TO LT_CMLOG. + 2094| APPEND LT_CMLOG. +``` + +- **EN**: Determines the next sequence for the approval unique ID in ZIFT0010 and writes an interface common log record (host, program, requester, time, module FI). +- 테이블(파서): read [ZIFT0010](/tables/ZIFT0010.md) / write [ZIFT0010](/tables/ZIFT0010.md) +- SAP 객체: ZIFT0010, ZIFS0010 +- 업무 키워드: 인터페이스 로그, 공통로그, 순번 채번, 전자결재 +- English: Interface Log, Sequence Number, CBO Table +- 정의부(복사 시 함께 필요): [`LV_MAX`](#decl-zfir0050f01-2037-lv_max), [`ZIFT0010`](#decl-zfir0050top-8-zift0010), [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`GV_SABUN`](#decl-zfir0050top-158-gv_sabun), [`LT_CMLOG`](#decl-zfir0050f01-2038-lt_cmlog) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L2078-L2094` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_PROCESSING_DATA#C2` + +#### [fm_call] RFC 목적지 ZFI01의 Z_FI_CONFIRM_DISPLAY를 호출해 전자결재 문서 URL을 받고, URL이 있으면 CALL_BROWSER로 웹 브라우저를 띄우며 실패 시 오류 메시지를 표시한다. + +```abap + 2098| CALL FUNCTION 'Z_FI_CONFIRM_DISPLAY' + 2099| DESTINATION 'ZFI01' + 2100| EXPORTING + 2101| I_UNQID = GT_HEAD-UNQID + 2102| IMPORTING + 2103| E_STATS = LV_STATS + 2104| E_MESSG = LV_MESSG + 2105| E_URL = LV_URL + 2106| TABLES + 2107| IT_CMLOG = LT_CMLOG + 2108| EXCEPTIONS + 2109| SYSTEM_FAILURE = 1 + 2110| COMMUNICATION_FAILURE = 2 + 2111| OTHERS = 3. + 2112| + 2113| IF LV_URL EQ SPACE. + 2114| MESSAGE S000 WITH '문서조회할 URL 주소가 없습니다.' + 2115| DISPLAY LIKE C_E. + 2116| EXIT. + 2117| ELSE. + 2118| * 브라우져 호출 + 2119| CALL FUNCTION 'CALL_BROWSER' + 2120| EXPORTING + 2121| URL = LV_URL + 2122| EXCEPTIONS + 2123| FRONTEND_NOT_SUPPORTED = 1 + 2124| FRONTEND_ERROR = 2 + 2125| PROG_NOT_FOUND = 3 + 2126| NO_BATCH = 4 + 2127| UNSPECIFIED_ERROR = 5 + 2128| OTHERS = 6. + 2129| IF SY-SUBRC NE 0. + 2130| MESSAGE S000 WITH '웹 브라우저 호출 시 에러가 발생하였습니다.' + 2131| DISPLAY LIKE C_E. + 2132| EXIT. + 2133| ENDIF. + 2134| ENDIF. +``` + +- **EN**: Calls RFC Z_FI_CONFIRM_DISPLAY (destination ZFI01) to obtain the e-approval document URL and opens it with CALL_BROWSER, reporting errors when no URL or browser failure. +- 호출(파서): Z_FI_CONFIRM_DISPLAY, CALL_BROWSER +- SAP 객체: Z_FI_CONFIRM_DISPLAY, CALL_BROWSER, ZFI01 +- 업무 키워드: 전자결재, 문서조회, RFC 호출, 브라우저 호출, URL +- English: RFC Destination, E-Approval, CALL_BROWSER, Interface +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_HEAD`](#decl-zfir0050top-16-gt_head), [`LV_STATS`](#decl-zfir0050f01-2034-lv_stats), [`LV_MESSG`](#decl-zfir0050f01-2035-lv_messg), [`LV_URL`](#decl-zfir0050f01-2036-lv_url), [`LT_CMLOG`](#decl-zfir0050f01-2038-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0050/ZFIR0050F01#L2098-L2134` · confidence 0.9 · `ZFIR0050#ZFIR0050F01#FORM#DISPLAY_PROCESSING_DATA#C3` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0050I01` L9-L38 (30줄) + +*화면 0100 PAI에서 사용자 명령(삭제·결재상신·문서조회·팀장승인·임원승인·반려·승인취소·새로고침)에 따라 해당 처리 FORM으로 분기하는 디스패처 모듈이다.* + +> 이 unit 의 조각 1개가 27/30줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SY-UCOMM 값에 따라 임시전표 삭제(DEL)·결재상신(PRC)·문서조회(DIS)·팀장승인(CON)·임원승인(CON2)·반려(REJ)·승인취소(RVS)·새로고침(RFSH) 처리 FORM을 PERFORM으로 분기 호출한다. + +```abap + 11| GV_UCOMM = SY-UCOMM. + 12| CASE GV_UCOMM. + 13| * 임시전표 삭제 + 14| WHEN 'DEL'. + 15| PERFORM DELETE_DATA. + 16| * 결재상신 + 17| WHEN 'PRC'. + 18| PERFORM PROCESSING_DATA. + 19| * 문서조회 + 20| WHEN 'DIS'. + 21| PERFORM DISPLAY_PROCESSING_DATA. + 22| * 팀장승인 + 23| WHEN 'CON'. + 24| PERFORM CONFIRM_DATA. + 25| * 임원승인 + 26| WHEN 'CON2'. + 27| PERFORM CONFIRM_DATA_2. + 28| * 반려 + 29| WHEN 'REJ'. + 30| PERFORM REJECT_DATA. + 31| * 승인취소 + 32| WHEN 'RVS'. + 33| PERFORM CANCEL_CONFIRM_DATA. + 34| * 새로고침 + 35| WHEN 'RFSH'. + 36| PERFORM GET_DATA. + 37| ENDCASE. +``` + +- **EN**: Dispatches the OK-code of screen 0100 to the parked document workflow actions (delete, submit for approval, display, team-leader approve, executive approve, reject, cancel approval, refresh). +- 호출(파서): DELETE_DATA, PROCESSING_DATA, DISPLAY_PROCESSING_DATA, CONFIRM_DATA, CONFIRM_DATA_2, REJECT_DATA, CANCEL_CONFIRM_DATA, GET_DATA +- SAP 객체: ZFIT0100 +- 업무 키워드: 임시전표, 결재상신, 팀장승인, 임원승인, 반려, 승인취소, 사용자명령 +- English: Parked Document, Approval Workflow, User Command, PAI +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm) +- 위치: `abap://ZFIR0050/ZFIR0050I01#L11-L37` · confidence 0.9 · `ZFIR0050#ZFIR0050I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (380건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0050CLS` (3건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0050cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK2 + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW E_COLUMN ES_ROW_NO . + + + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT1 — data · L48-L48 {#decl-zfir0050cls-48-gv_event1} + +```abap +DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +#### GV_EVENT2 — data · L49-L49 {#decl-zfir0050cls-49-gv_event2} + +```abap +DATA: + GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0050TOP` (51건) + +#### ZFIT0100 — tables · L7-L7 {#decl-zfir0050top-7-zfit0100} + +```abap +TABLES: ZFIT0100. " 임시전표 상신 관리 +``` + +#### ZIFT0010 — tables · L8-L8 {#decl-zfir0050top-8-zift0010} + +```abap +TABLES: + ZIFT0010. " IF 공통 Log +``` + +#### TKA02 — tables · L9-L9 {#decl-zfir0050top-9-tka02} + +```abap +TABLES: + TKA02. " 관리회계 영역 지정 +``` + +#### GT_HEAD — data · L16-L32 {#decl-zfir0050top-16-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0. + INCLUDE STRUCTURE BKPF. +DATA: SICON LIKE ICON-ID, "아이콘 + STATS LIKE ZFIT0100-STATS, "결재상태 + RJTXT LIKE ZFIT0100-RJTXT, "반려사유 + USNAM_T LIKE V_USERNAME-NAME_TEXT, "입력자명 + BSTAT_T LIKE DD07T-DDTEXT, "전표상태명 + BLART_T LIKE T003T-LTEXT, "전표유형명 + STATS_T LIKE DD07T-DDTEXT, "결재상태명 + ERMSG LIKE ZFIT0100-ERMSG, "에러메시지 + UNQID LIKE ZFIT0100-UNQID, "유효ID + SABUN LIKE ZFIT0100-SABUN, "사번 + LGCYCD LIKE ZFIT0100-LGCYCD, + CFMSTA LIKE ZFIT0100-CFMSTA, + CFMDAT LIKE ZFIT0100-CFMDAT, + CELLTAB TYPE LVC_T_STYL, + END OF GT_HEAD. +``` + +#### GT_ITEM — data · L35-L86 {#decl-zfir0050top-35-gt_item} + +```abap +DATA: BEGIN OF GT_ITEM OCCURS 0, + BUKRS LIKE BSEG-BUKRS, + GJAHR LIKE BSEG-GJAHR, "회계년도 + BELNR LIKE BSEG-BELNR, "전표번호 + BUZEI LIKE BSEG-BUZEI, "개별항목id + SHKZG LIKE BSEG-SHKZG, "차대(S,H) + BSCHL LIKE BSEG-BSCHL, "전기키 + UMSKZ LIKE BSEG-UMSKZ, "SpGl + BSCHL_T LIKE TBSLT-LTEXT, "전기키이름 + HKONT LIKE BSEG-HKONT, "G/L 계정 + TXT50 LIKE SKAT-TXT50, "G/L 계정명 + MWSKZ LIKE BSEG-MWSKZ, "세금코드(Tx) + MWSKZ_T LIKE T007S-TEXT1, "세금코드명 + DMBTR LIKE BSEG-DMBTR, "원화금액 + WRBTR LIKE BSEG-WRBTR, "전표통화금액 + MWSTS LIKE BSEG-MWSTS, "세액(현지 통화) + WMWST LIKE BSEG-WMWST, "세액(전표 통화) + GSBER LIKE BSEG-GSBER, "BA(사업영역) + SGTXT LIKE BSEG-SGTXT, "적요 + KOART LIKE BSEG-KOART, "계정유형 + KOART_T(8) TYPE C, "계정유형명 + SUBAC LIKE BSEG-LIFNR, "보조부계정(구매처,고객) + SUBNM LIKE LFA1-NAME1, "보조부계정명 + ZLSPR LIKE BSEG-ZLSPR, "지급보류 + ZLSPR_T LIKE T008T-TEXTL, "지급보류명 + ZTERM LIKE /DSD/HH_RACOLPAY-ZTERM, "지급조건 + ZTERM_T LIKE T052U-TEXT1, "지급조건명 + FDTAG LIKE BSEG-FDTAG, "계획일(지급만기일) + ZLSCH LIKE BSEG-ZLSCH, "지급방법 + ZLSCH_T LIKE T042Z-TEXT1, "지급방법명 + KOSTL LIKE BSEG-KOSTL, "코스트센터 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + AUFNR LIKE BSEG-AUFNR, "오더 + FISTL LIKE BSEG-FISTL, "FUND CENTER + FISTL_T LIKE FMFCTRT-BESCHR, "FUND CENTER Description + PICON LIKE ICON-ID, "PA 아이콘 + PRCTR LIKE BSEG-PRCTR, "손익센터 + ANBWA LIKE BSEG-ANBWA, "자산거래유형 + WAERS LIKE BKPF-WAERS, "통화 + FKBER LIKE BSEG-FKBER, "기능영역 + XREF1 LIKE BSEG-XREF1, "신고사업자 + XNEGP LIKE BSEG-XNEGP, "마이너스 + EBELN LIKE BSEG-EBELN, "구매문서 + ZUONR LIKE BSEG-ZUONR, "지정 + BUPLA LIKE BSEG-BUPLA, "사업장 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + MATNR LIKE BSEG-MATNR, "자재번호 + ANLN1 LIKE BSEG-ANLN1, "자산번호 + AUGBL LIKE BSEG-AUGBL, + AUGDT LIKE BSEG-AUGDT, + KIDNO LIKE BSEG-KIDNO, + END OF GT_ITEM. +``` + +#### GT_ITEM2 — data · L88-L88 {#decl-zfir0050top-88-gt_item2} + +```abap +DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0100 — data · L90-L90 {#decl-zfir0050top-90-gt_z0100} + +```abap +DATA: GT_Z0100 LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_VBKPF — data · L91-L91 {#decl-zfir0050top-91-gt_vbkpf} + +```abap +DATA: + GT_VBKPF LIKE VBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BKPF — data · L92-L92 {#decl-zfir0050top-92-gt_bkpf} + +```abap +DATA: + GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSEG — data · L93-L93 {#decl-zfir0050top-93-gt_bseg} + +```abap +DATA: + GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_UNAME — data · L96-L99 {#decl-zfir0050top-96-gt_uname} + +```abap +DATA: BEGIN OF GT_UNAME OCCURS 0, + BNAME LIKE V_USERNAME-BNAME, + NAMET LIKE V_USERNAME-NAME_TEXT, + END OF GT_UNAME. +``` + +#### GT_T003T — data · L101-L104 {#decl-zfir0050top-101-gt_t003t} + +```abap +DATA: BEGIN OF GT_T003T OCCURS 0, + BLART LIKE T003T-BLART, + LTEXT LIKE T003T-LTEXT, + END OF GT_T003T. +``` + +#### GT_CSKT — data · L106-L109 {#decl-zfir0050top-106-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + KTEXT LIKE CSKT-KTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L111-L114 {#decl-zfir0050top-111-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_TBSLT — data · L116-L120 {#decl-zfir0050top-116-gt_tbslt} + +```abap +DATA: BEGIN OF GT_TBSLT OCCURS 0, + BSCHL LIKE TBSLT-BSCHL, + UMSKZ LIKE TBSLT-UMSKZ, + LTEXT LIKE TBSLT-LTEXT, + END OF GT_TBSLT. +``` + +#### GT_KNA1 — data · L122-L125 {#decl-zfir0050top-122-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_LFA1 — data · L127-L130 {#decl-zfir0050top-127-gt_lfa1} + +```abap +DATA: BEGIN OF GT_LFA1 OCCURS 0, + LIFNR LIKE LFA1-LIFNR, + NAME1 LIKE LFA1-NAME1, + END OF GT_LFA1. +``` + +#### GT_SKAT — data · L132-L135 {#decl-zfir0050top-132-gt_skat} + +```abap +DATA: BEGIN OF GT_SKAT OCCURS 0, + SAKNR LIKE SKAT-SAKNR, + TXT50 LIKE SKAT-TXT50 , + END OF GT_SKAT. +``` + +#### GT_T052U — data · L137-L140 {#decl-zfir0050top-137-gt_t052u} + +```abap +DATA: BEGIN OF GT_T052U OCCURS 0, + ZTERM LIKE T052U-ZTERM, + TEXT1 LIKE T052U-TEXT1, + END OF GT_T052U. +``` + +#### GT_T007S — data · L142-L145 {#decl-zfir0050top-142-gt_t007s} + +```abap +DATA: BEGIN OF GT_T007S OCCURS 0, + MWSKZ LIKE T007S-MWSKZ, + TEXT1 LIKE T007S-TEXT1, + END OF GT_T007S. +``` + +#### GT_DOMAIN — data · L147-L151 {#decl-zfir0050top-147-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L153-L153 {#decl-zfir0050top-153-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0100-STATS. +``` + +#### R_BLART — ranges · L154-L154 {#decl-zfir0050top-154-r_blart} + +```abap +RANGES: + R_BLART FOR BKPF-BLART. +``` + +#### GV_SUPER — data · L156-L156 {#decl-zfir0050top-156-gv_super} + +```abap +DATA: GV_SUPER TYPE C. " 회계팀장권한 +``` + +#### GV_CON — data · L157-L157 {#decl-zfir0050top-157-gv_con} + +```abap +DATA: + GV_CON TYPE C. " 임원권한 +``` + +#### GV_SABUN — data · L158-L158 {#decl-zfir0050top-158-gv_sabun} + +```abap +DATA: + GV_SABUN LIKE ZFIT0100-SABUN VALUE 'xclick'. " 사번(입력) +``` + +#### GT_FCAT_ITEM2 — data · L161-L161 {#decl-zfir0050top-161-gt_fcat_item2} + +```abap +DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT. +``` + +#### GS_STABLE — data · L163-L163 {#decl-zfir0050top-163-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GC_SPLITTER — data · L164-L164 {#decl-zfir0050top-164-gc_splitter} + +```abap +DATA: + GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GC_CONTAINER1 — data · L165-L165 {#decl-zfir0050top-165-gc_container1} + +```abap +DATA: + GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GC_CONTAINER2 — data · L166-L166 {#decl-zfir0050top-166-gc_container2} + +```abap +DATA: + GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GV_ALV_GRID — data · L167-L167 {#decl-zfir0050top-167-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID1 — data · L168-L168 {#decl-zfir0050top-168-gv_alv_grid1} + +```abap +DATA: + GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID2 — data · L169-L169 {#decl-zfir0050top-169-gv_alv_grid2} + +```abap +DATA: + GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L170-L170 {#decl-zfir0050top-170-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_LAYO1 — data · L171-L171 {#decl-zfir0050top-171-gv_layo1} + +```abap +DATA: + GV_LAYO1 TYPE LVC_S_LAYO. +``` + +#### GV_LAYO2 — data · L172-L172 {#decl-zfir0050top-172-gv_layo2} + +```abap +DATA: + GV_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L173-L173 {#decl-zfir0050top-173-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### GV_VARI1 — data · L174-L174 {#decl-zfir0050top-174-gv_vari1} + +```abap +DATA: + GV_VARI1 TYPE DISVARIANT. +``` + +#### GV_VARI2 — data · L175-L175 {#decl-zfir0050top-175-gv_vari2} + +```abap +DATA: + GV_VARI2 TYPE DISVARIANT. +``` + +#### C_USNAM — constants · L180-L180 {#decl-zfir0050top-180-c_usnam} + +```abap +CONSTANTS: C_USNAM TYPE SY-UNAME VALUE 'FI07'. " 회계팀장ID +``` + +#### C_USNAM_2 — constants · L181-L181 {#decl-zfir0050top-181-c_usnam_2} + +```abap +CONSTANTS: + C_USNAM_2 TYPE SY-UNAME VALUE 'FI03'. " 임원ID +``` + +#### P_BUKRS — parameter · L188-L188 {#decl-zfir0050top-188-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### S_BUDAT — select-option · L189-L189 {#decl-zfir0050top-189-s_budat} + +```abap +SELECT-OPTIONS: S_BUDAT FOR BKPF-BUDAT OBLIGATORY. +``` + +#### S_BELNR — select-option · L190-L190 {#decl-zfir0050top-190-s_belnr} + +```abap +SELECT-OPTIONS: + S_BELNR FOR BKPF-BELNR. +``` + +#### S_BLART — select-option · L191-L191 {#decl-zfir0050top-191-s_blart} + +```abap +SELECT-OPTIONS: + S_BLART FOR BKPF-BLART. +``` + +#### S_CPUDT — select-option · L192-L192 {#decl-zfir0050top-192-s_cpudt} + +```abap +SELECT-OPTIONS: + S_CPUDT FOR BKPF-CPUDT. +``` + +#### S_USNAM — select-option · L193-L193 {#decl-zfir0050top-193-s_usnam} + +```abap +SELECT-OPTIONS: + S_USNAM FOR BKPF-USNAM MODIF ID A. +``` + +#### S_STATS — select-option · L194-L194 {#decl-zfir0050top-194-s_stats} + +```abap +SELECT-OPTIONS: + S_STATS FOR ZFIT0100-STATS. +``` + +#### P_RA — parameter · L200-L200 {#decl-zfir0050top-200-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . "일반임시전표 +``` + +#### P_RB — parameter · L202-L202 {#decl-zfir0050top-202-p_rb} + +```abap +PARAMETERS: P_RB RADIOBUTTON GROUP G1. "결산조정전표 +``` + +### `ZFIR0050F01` (49건) + +#### LV_CNT — data · unit 로컬 · L1090-L1090 {#decl-zfir0050f01-1090-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_CHK — data · unit 로컬 · L1091-L1091 {#decl-zfir0050f01-1091-lv_chk} + +```abap +DATA: + LV_CHK(1). +``` + +#### LV_STATS — data · unit 로컬 · L1092-L1092 {#decl-zfir0050f01-1092-lv_stats} + +```abap +DATA: + LV_STATS(1). +``` + +#### LV_CNT — data · unit 로컬 · L1184-L1184 {#decl-zfir0050f01-1184-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_STATS — data · unit 로컬 · L1185-L1185 {#decl-zfir0050f01-1185-lv_stats} + +```abap +DATA: + LV_STATS TYPE CHAR1. +``` + +#### LV_MESSG — data · unit 로컬 · L1186-L1186 {#decl-zfir0050f01-1186-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LV_URL — data · unit 로컬 · L1187-L1187 {#decl-zfir0050f01-1187-lv_url} + +```abap +DATA: + LV_URL TYPE CHAR1024. +``` + +#### LV_SHKZG — data · unit 로컬 · L1189-L1189 {#decl-zfir0050f01-1189-lv_shkzg} + +```abap +DATA: + LV_SHKZG LIKE BSEG-SHKZG. +``` + +#### LV_MWSKZ — data · unit 로컬 · L1190-L1190 {#decl-zfir0050f01-1190-lv_mwskz} + +```abap +DATA: + LV_MWSKZ LIKE BSEG-MWSKZ. +``` + +#### LV_TEXT1 — data · unit 로컬 · L1191-L1191 {#decl-zfir0050f01-1191-lv_text1} + +```abap +DATA: + LV_TEXT1 LIKE T007S-TEXT1. +``` + +#### LV_DMBTR — data · unit 로컬 · L1192-L1192 {#decl-zfir0050f01-1192-lv_dmbtr} + +```abap +DATA: + LV_DMBTR LIKE BSEG-DMBTR. +``` + +#### LV_WRBTR — data · unit 로컬 · L1193-L1193 {#decl-zfir0050f01-1193-lv_wrbtr} + +```abap +DATA: + LV_WRBTR LIKE BSEG-WRBTR. +``` + +#### LV_MWSTS — data · unit 로컬 · L1194-L1194 {#decl-zfir0050f01-1194-lv_mwsts} + +```abap +DATA: + LV_MWSTS LIKE BSEG-MWSTS. +``` + +#### LV_HWBAS — data · unit 로컬 · L1195-L1195 {#decl-zfir0050f01-1195-lv_hwbas} + +```abap +DATA: + LV_HWBAS LIKE BSEG-HWBAS. +``` + +#### LV_WMWST — data · unit 로컬 · L1196-L1196 {#decl-zfir0050f01-1196-lv_wmwst} + +```abap +DATA: + LV_WMWST LIKE BSEG-WMWST. +``` + +#### LV_FWBAS — data · unit 로컬 · L1197-L1197 {#decl-zfir0050f01-1197-lv_fwbas} + +```abap +DATA: + LV_FWBAS LIKE BSEG-FWBAS. +``` + +#### LT_CMLOG — data · unit 로컬 · L1199-L1199 {#decl-zfir0050f01-1199-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_BKPF — data · unit 로컬 · L1200-L1200 {#decl-zfir0050f01-1200-lt_bkpf} + +```abap +DATA: + LT_BKPF LIKE ZFIS0090 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_BSEG — data · unit 로컬 · L1201-L1201 {#decl-zfir0050f01-1201-lt_bseg} + +```abap +DATA: + LT_BSEG LIKE ZFIS0091 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_INFO — data · unit 로컬 · L1202-L1202 {#decl-zfir0050f01-1202-lt_info} + +```abap +DATA: + LT_INFO LIKE ZFIS0093 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_TOTAL — data · unit 로컬 · L1203-L1203 {#decl-zfir0050f01-1203-lt_total} + +```abap +DATA: + LT_TOTAL LIKE ZFIS0092 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_Z0101 — data · unit 로컬 · L1204-L1204 {#decl-zfir0050f01-1204-lt_z0101} + +```abap +DATA: + LT_Z0101 LIKE ZFIT0101 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_Z0102 — data · unit 로컬 · L1205-L1205 {#decl-zfir0050f01-1205-lt_z0102} + +```abap +DATA: + LT_Z0102 LIKE ZFIT0102 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_Z0100_S — data · unit 로컬 · L1206-L1206 {#decl-zfir0050f01-1206-lt_z0100_s} + +```abap +DATA: + LT_Z0100_S LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_TAXIN — data · unit 로컬 · L1207-L1207 {#decl-zfir0050f01-1207-lt_taxin} + +```abap +DATA: + LT_TAXIN LIKE RTAX1U38 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_TAXOUT — data · unit 로컬 · L1208-L1208 {#decl-zfir0050f01-1208-lt_taxout} + +```abap +DATA: + LT_TAXOUT LIKE RTAX1U38 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_ERROR — data · unit 로컬 · L1209-L1209 {#decl-zfir0050f01-1209-lt_error} + +```abap +DATA: + LT_ERROR LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_BSEG_TX — data · unit 로컬 · L1211-L1211 {#decl-zfir0050f01-1211-ls_bseg_tx} + +```abap + DATA: LS_BSEG_TX LIKE ZFIS0091. +``` + +#### LS_CMLOG — data · unit 로컬 · L1265-L1265 {#decl-zfir0050f01-1265-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LT_Z0100_S — data · unit 로컬 · L1674-L1674 {#decl-zfir0050f01-1674-lt_z0100_s} + +```abap +DATA: + LT_Z0100_S LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L1675-L1675 {#decl-zfir0050f01-1675-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_CHK — data · unit 로컬 · L1676-L1676 {#decl-zfir0050f01-1676-lv_chk} + +```abap +DATA: + LV_CHK(1). +``` + +#### LT_Z0100_S — data · unit 로컬 · L1784-L1784 {#decl-zfir0050f01-1784-lt_z0100_s} + +```abap +DATA: + LT_Z0100_S LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L1785-L1785 {#decl-zfir0050f01-1785-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_CHK — data · unit 로컬 · L1786-L1786 {#decl-zfir0050f01-1786-lv_chk} + +```abap +DATA: + LV_CHK(1). +``` + +#### LT_Z0100_S — data · unit 로컬 · L1852-L1852 {#decl-zfir0050f01-1852-lt_z0100_s} + +```abap +DATA: + LT_Z0100_S LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L1853-L1853 {#decl-zfir0050f01-1853-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_CHK — data · unit 로컬 · L1854-L1854 {#decl-zfir0050f01-1854-lv_chk} + +```abap +DATA: + LV_CHK(1). +``` + +#### LT_MSG — data · unit 로컬 · L1924-L1924 {#decl-zfir0050f01-1924-lt_msg} + +```abap + DATA: LT_MSG LIKE ZFIS0030 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_Z0100_S — data · unit 로컬 · L1925-L1925 {#decl-zfir0050f01-1925-lt_z0100_s} + +```abap +DATA: + LT_Z0100_S LIKE ZFIT0100 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_NATXT — data · unit 로컬 · L1926-L1926 {#decl-zfir0050f01-1926-lv_natxt} + +```abap + DATA: LV_NATXT TYPE NATXT. +``` + +#### LV_CNT — data · unit 로컬 · L1927-L1927 {#decl-zfir0050f01-1927-lv_cnt} + +```abap +DATA: + LV_CNT TYPE N. +``` + +#### LV_CHK — data · unit 로컬 · L1928-L1928 {#decl-zfir0050f01-1928-lv_chk} + +```abap +DATA: + LV_CHK(1). +``` + +#### LV_CNT — data · unit 로컬 · L2033-L2033 {#decl-zfir0050f01-2033-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_STATS — data · unit 로컬 · L2034-L2034 {#decl-zfir0050f01-2034-lv_stats} + +```abap +DATA: + LV_STATS TYPE CHAR1. +``` + +#### LV_MESSG — data · unit 로컬 · L2035-L2035 {#decl-zfir0050f01-2035-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LV_URL — data · unit 로컬 · L2036-L2036 {#decl-zfir0050f01-2036-lv_url} + +```abap +DATA: + LV_URL TYPE CHAR1024. +``` + +#### LV_MAX — data · unit 로컬 · L2037-L2037 {#decl-zfir0050f01-2037-lv_max} + +```abap +DATA: + LV_MAX LIKE ZIFT0010-SEQ. +``` + +#### LT_CMLOG — data · unit 로컬 · L2038-L2038 {#decl-zfir0050f01-2038-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0050 L32-87 | 2 | ALV 초기 설정 후 전기일 기본값을 전월로 잡고, 사용자ID로 임원(GV_CON)/회계팀(GV_SUPER)/일반 사용자를 구분해 일반 사용자는 본인 입력 전표만 조회되도록 S_USNAM을 고정하며 도메인 텍스트를 읽는 INITIALIZATION 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0050 L88-94 | 0 | 선택화면 출력 시 MODIFY_SCREEN을 호출해 사용자 역할에 따라 입력 필드를 조정하는 AT SELECTION-SCREEN OUTPUT 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0050 L95-103 | 0 | 회사코드 권한을 검증(AUTHORITY_BUKRS)한 뒤 GET_DATA로 전표 데이터를 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZFIR0050 L104-110 | 0 | 조회 결과 GT_HEAD가 비어 있으면 '데이터 없음' 메시지로 종료하고, 있으면 화면 0100(ALV 화면)을 호출하는 END-OF-SELECTION 이벤트이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0050CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0050CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0050CLS L41-43 | 0 | ALV 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DOMAIN | FORM | ZFIR0050F01 L9-32 | 1 | 전표상태(BSTAT)와 결재상태(ZDSTATS) 도메인의 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 담는 FORM이다. | +| MODIFY_SCREEN | FORM | ZFIR0050F01 L38-45 | 0 | 회계팀(GV_SUPER)이나 임원(GV_CON)이 아닌 일반 사용자에게는 그룹 A 선택화면 필드를 입력 불가로 바꾸는 화면 속성 조정 FORM이다. | +| GET_DATA | FORM | ZFIR0050F01 L51-64 | 1 | 전표 헤더(GET_BKPF)·아이템(GET_BSEG)·임시전표 결재정보(GET_ZFIT0100)를 차례로 읽고 DISPLAY_DATA로 표시 데이터를 만드는 조회 총괄 FORM이다. | +| GET_BKPF | FORM | ZFIR0050F01 L70-108 | 2 | 선택조건(회사코드·전기일·전표번호·전표유형·입력일·입력자)과 일반/결산조정전표 구분(BLART SC~SJ 범위)으로 BKPF 전표 헤더를 조회하고 회사코드(T001)·국가(T005) 정보를 읽는 FORM이다. | +| GET_BSEG | FORM | ZFIR0050F01 L114-264 | 2 | 정식 전표와 임시(파킹) 전표의 아이템을 모두 모아 조직단위·거래처·계정 텍스트를 붙인다. | +| GET_ZFIT0100 | FORM | ZFIR0050F01 L270-281 | 1 | 조회된 전표 헤더(GT_BKPF)에 대한 임시전표 결재 관리 정보를 CBO 테이블 ZFIT0100에서 읽어 GT_Z0100에 담는 FORM이다. | +| DISPLAY_DATA | FORM | ZFIR0050F01 L287-569 | 6 | BKPF/BSEG와 ZFIT0100 결재 정보를 합쳐 결재상태별 아이콘·편집가능 여부와 각종 명칭(입력자·전표유형·전표상태·거래처·계정·전기키·지급조건·코스트센터·세금코드)을 붙인 헤더 ALV(GT_HEAD)와 아이템 ALV(GT_ITEM) 데이터를 만드는 FORM이다. | +| SPLITTER_CONTAINER | FORM | ZFIR0050F01 L575-627 | 0 | 화면 0100의 커스텀 컨테이너에 2행 1열 스플리터를 만들고 상단(헤더)·하단(아이템) 컨테이너에 ALV 그리드 객체 두 개를 생성하는 FORM이다. | +| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0050F01 L636-663 | 0 | 헤더/아이템 ALV 그리드에 핫스팟·더블클릭 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·필드카탈로그 설정 후 두 ALV를 표시하도록 초기화하는 FORM이다. | +| SET_GRID_LAYOUT1 | FORM | ZFIR0050F01 L672-689 | 0 | 헤더/아이템 ALV의 레이아웃(제목, 열 최적화, 행 선택모드, 줄무늬, 셀 스타일 필드명)을 설정하는 FORM이다. | +| ALV_GRID_DISPLAY1 | FORM | ZFIR0050F01 L698-713 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS1 | FORM | ZFIR0050F01 L722-814 | 0 | 헤더 ALV(GT_HEAD)의 필드카탈로그를 생성해 상태아이콘·전표번호·전표상태·결재상태·전표유형·전기일·반려사유(편집)·역분개전표·오류메시지 컬럼의 속성을 설정하는 FORM이다. | +| ALV_GRID_DISPLAY2 | FORM | ZFIR0050F01 L823-838 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS2 | FORM | ZFIR0050F01 L847-964 | 0 | 아이템 ALV(GT_ITEM)의 필드카탈로그를 생성해 전표번호·항목·전기키·계정·거래처·금액·세금코드·코스트센터 등 컬럼의 제목·위치·통화·핫스팟 속성을 설정하는 FORM이다. | +| HOTSPOT_CLICK | FORM | ZFIR0050F01 L974-1006 | 2 | 헤더 ALV 핫스팟 클릭 시 전표번호는 해당 아이템을 GT_ITEM2에 추려 하단 ALV를 갱신하고, 역분개전표번호(STBLG)는 FB03으로 조회하는 FORM이다. | +| HOTSPOT_CLICK2 | FORM | ZFIR0050F01 L1015-1053 | 1 | 아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다. | +| DOUBLE_CLICK | FORM | ZFIR0050F01 L1062-1083 | 1 | 헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. | +| DELETE_DATA | FORM | ZFIR0050F01 L1089-1177 | 3 | 선택한 임시전표를 검증·확인 팝업 후 Z_FI_PARKED_DOCUMENT_DELETE로 삭제하고, 반려 상태였던 건은 ZFIT0100 이력의 전표상태를 갱신하는 FORM이다. | +| PROCESSING_DATA | FORM | ZFIR0050F01 L1183-1568 | 8 | 결재상신 FORM의 1번째 창으로, 세금·금액·전송 구조(ZFIS0090/91/92/93, ZFIT0101/0102) 로컬 변수를 선언하고 ALV 선택행을 GET_SELECTED_ROWS로 읽어오는 준비 구간이다. | +| CONFIRM_DATA | FORM | ZFIR0050F01 L1574-1775 | 4 | 선택한 임시전표를 검증·확인 팝업 후 BDC로 FBV0(임시전표 전기)를 실행해 정규전표로 전기하고 성공 건을 팀장승인 상태(A)로 ZFIT0100에 저장하는 FORM이다(이전 Z_FI_PARKED_DOCUMENT_POSTING 방식은 주석 처리됨). | +| CONFIRM_DATA_2 | FORM | ZFIR0050F01 L1782-1843 | 2 | 팀장승인된 정규전표를 선택해 확인 팝업 후 임원승인 상태(C)로 갱신하고 ZFIT0100에 승인자·시각을 저장하는 FORM이다. | +| REJECT_DATA | FORM | ZFIR0050F01 L1849-1917 | 3 | 선택한 임시전표를 검증·확인 팝업 후 반려 상태(R)로 바꾸고 반려자·시각을 ZFIT0100에 저장하는 FORM이다. | +| CANCEL_CONFIRM_DATA | FORM | ZFIR0050F01 L1923-2026 | 3 | 승인된 정규전표를 선택해 확인 팝업 후 Z_FI_DOCUMENT_REVERSE로 역분개(승인취소)하고 결과 상태를 GT_HEAD와 ZFIT0100에 반영하는 FORM이다. | +| DISPLAY_PROCESSING_DATA | FORM | ZFIR0050F01 L2032-2138 | 3 | ALV에서 선택한 결재중/승인 상태의 임시전표 1건에 대해 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0050I01 L9-38 | 1 | 화면 0100 PAI에서 사용자 명령(삭제·결재상신·문서조회·팀장승인·임원승인·반려·승인취소·새로고침)에 따라 해당 처리 FORM으로 분기하는 디스패처 모듈이다. | +| USER_COMMAND_0200 INPUT | MODULE | ZFIR0050I01 L44-52 | 0 | 화면 0200(결재상신 문서 조회 팝업)의 PAI에서 ENTR 입력 시 화면을 닫는 단순 사용자 명령 처리 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0050O01 L9-44 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0050O01 L50-73 | 0 | | +| STATUS_0200 OUTPUT | MODULE | ZFIR0050O01 L79-84 | 0 | | diff --git a/wiki/programs/ZFIR0060.md b/wiki/programs/ZFIR0060.md new file mode 100644 index 0000000..b8e163f --- /dev/null +++ b/wiki/programs/ZFIR0060.md @@ -0,0 +1,3615 @@ +--- +type: abap-program +title: "ZFIR0060 — 카드채권 반제내역 처리결과 IF" +description: "카드사에서 받은 카드채권 입금·반제 내역(CBO 테이블 ZFIT0110)을 읽어 반제 전표를 자동 생성하고, 처리 결과를 다시 외부로 전송하는 인터페이스 배치다. 미전송 건을 추출해 전표 헤더·아이템을 만들고 FB01 BDC 로 전기한 뒤, 성공/실패 상태를 ZFIT0110 에 갱신하고 송신한다. 카드 매출채권의 일일 반제 자동화가 목적이다." +resource: "abap://ZFIR0060" +tags: ["인터페이스", "반제", "채권관리", "배치작업", "자동기표", "자동반제", "FI", "인터페이스로그", "고유키", "공통로그", "전송키", "처리결과전송", "반제결과", "RFC", "카드채권", "상태값전송", "CBO갱신", "반제내역", "미전송", "수신건"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:20+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LTDX", "SKAT", "T007S", "USR01", "V_USERNAME", "ZFIT0110", "ZFIT0160"] +x-tables-write: ["ZFIT0110"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "e58ec7022fc71c4552d9afc0a90da6c7636add011faabd7331d0b099ba91910c" +x-unit-count: 89 +x-chunk-count: 42 +x-declaration-count: 281 +--- + +## 업무 목적 + +카드사에서 받은 카드채권 입금·반제 내역(CBO 테이블 ZFIT0110)을 읽어 반제 전표를 자동 생성하고, 처리 결과를 다시 외부로 전송하는 인터페이스 배치다. 미전송 건을 추출해 전표 헤더·아이템을 만들고 FB01 BDC 로 전기한 뒤, 성공/실패 상태를 ZFIT0110 에 갱신하고 송신한다. 카드 매출채권의 일일 반제 자동화가 목적이다. + +## 주 흐름 + +1. 처리 기준일을 받는다 +2. ZFIT0110 에서 아직 전송·전기되지 않은 카드채권 반제 건을 추출한다 (GET_ZFIT0110) +3. 전표 헤더를 구성한다 (MAKE_BKPF) +4. 반제 대상 채권 라인과 입금 라인을 아이템으로 구성한다 (MAKE_BSEG) +5. FB01 BDC 로 반제 전표를 생성한다 (BDC_TRANSACTION_FB01) +6. 처리 결과(전표번호/오류)를 ZFIT0110 에 갱신하고 외부로 전송한다 (SEND_CLEARING_INFO) + +## 핵심 내부테이블 + +- `GT_ZFIT0110` — 카드채권 반제 미전송 건 (채움: GET_ZFIT0110 / 소비: MAKE_BKPF, MAKE_BSEG) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LTDX, SKAT, T007S, USR01, V_USERNAME, ZFIT0110, ZFIT0160 +- write: ZFIT0110 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (42건 / unit 34개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DATA — `ZFIR0060F01` L9-L17 (9줄) + +*미전송 카드채권 반제 건을 추출(GET_ZFIT0110)하고 처리결과를 전송(SEND_CLEARING_INFO)하는 메인 처리 FORM 이다.* + +> 이 unit 의 조각 1개가 4/9줄(44%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_ZFIT0110 으로 ZFIT0110 의 미전송 카드채권 반제 건을 읽은 뒤 SEND_CLEARING_INFO 로 전표 생성 결과 상태·메시지를 갱신·전송한다. + +```abap + 12| PERFORM GET_ZFIT0110. + 13| + 14| * 처리결과 전송(상태 및 메시지 업데이트) + 15| PERFORM SEND_CLEARING_INFO. +``` + +- **EN**: Reads unsent card receivable clearing records from ZFIT0110 via GET_ZFIT0110 and then updates/sends the clearing results via SEND_CLEARING_INFO. +- 호출(파서): GET_ZFIT0110, SEND_CLEARING_INFO +- SAP 객체: ZFIT0110 +- 업무 키워드: 카드채권 반제, 미전송 건, 처리결과 전송, 인터페이스 +- English: Card Receivable, Interface, Clearing Result +- 위치: `abap://ZFIR0060/ZFIR0060F01#L12-L15` · confidence 0.8 · `ZFIR0060#ZFIR0060F01#FORM#GET_DATA#C1` + +### FORM GET_ZFIT0110 — `ZFIR0060F01` L23-L56 (34줄) + +*카드채권 반제 미전송 건을 읽어 오류가 없는 건마다 반제 전표를 만들어 전기한다.* + +> 이 unit 의 조각 2개가 27/34줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전송 플래그(PRCHK)가 설정된 카드채권 반제 수신 건을 ZFIT0110 에서 전량 읽어온다. + +```abap + 26| SELECT * + 27| INTO TABLE GT_Z0110 + 28| FROM ZFIT0110 + 29| WHERE PRCHK EQ C_X. "전송받은 건 + 30| + 31| CHECK GT_Z0110[] IS NOT INITIAL. +``` + +- **EN**: Reads inbound card-receivable clearing records flagged as received (PRCHK) from ZFIT0110. +- 테이블(파서): read [ZFIT0110](/tables/ZFIT0110.md) / write - +- SAP 객체: ZFIT0110, PRCHK +- 업무 키워드: 카드채권, 반제내역, 미전송, 수신건, 인터페이스수신 +- English: card receivable, clearing record, inbound interface, ZFIT0110 +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L26-L31` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#GET_ZFIT0110#C1` + +#### [control_flow] 건별로 돌며 오류상태가 아닌 건에 대해 전표 헤더를 만들고, 발생취소(GUBUN=R) 건은 마이너스 전기 지시자를 세운 뒤 아이템을 구성해 전기 함수를 호출하고, 결과를 결과 테이블에 누적한다. + +```abap + 33| LOOP AT GT_Z0110. + 34| CLEAR: GT_Z0110-PRCHK, GV_XNEGP. + 35| MOVE-CORRESPONDING GT_Z0110 TO GT_RESULT. + 36| + 37| * 오류가 없는 경우 전표생성 + 38| IF GT_Z0110-STATS EQ SPACE. + 39| * 전표 헤더 + 40| PERFORM MAKE_BKPF. + 41| * 발생/취소 구분에 따라 + 42| IF GT_Z0110-GUBUN EQ C_R. + 43| GV_XNEGP = C_X. + 44| ENDIF. + 45| * 전표 아이템 + 46| PERFORM MAKE_BSEG USING GV_XNEGP. + 47| * 전표생성 Function Call + 48| PERFORM BDC_TRANSACTION_FB01. + 49| ENDIF. + 50| + 51| MODIFY GT_Z0110. + 52| APPEND GT_RESULT. CLEAR GT_RESULT. + 53| ENDLOOP. +``` + +- **EN**: Per record: for error-free rows builds the header, sets the negative-posting flag on reversals, builds items and posts, accumulating results. +- 호출(파서): MAKE_BKPF, MAKE_BSEG, BDC_TRANSACTION_FB01 +- SAP 객체: ZFIT0110, GUBUN, XNEGP +- 업무 키워드: 반제전표, 건별처리, 발생취소, 마이너스전기, 전기호출, 결과누적 +- English: clearing document, per-record processing, reversal, negative posting, posting call +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`GV_XNEGP`](#decl-zfir0060top-37-gv_xnegp), [`GT_RESULT`](#decl-zfir0060top-20-gt_result), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L33-L53` · confidence 0.87 · `ZFIR0060#ZFIR0060F01#FORM#GET_ZFIT0110#C2` + +### FORM MAKE_BKPF — `ZFIR0060F01` L62-L75 (14줄) + +*카드채권 반제 건의 입금일·회사코드·통화로 FB01 용 BBKPF 전표 헤더(전표유형 C_BLART)를 구성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 9/14줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전표 헤더에 T-Code FB01, 증빙일·전기일=입금일(PYDAT), 카드채권 반제 전표유형(C_BLART), 회사코드·통화·헤더텍스트(거래내역 25자)를 채워 GT_BBKPF 에 추가한다. + +```abap + 65| GT_BBKPF-TCODE = 'FB01'. + 66| GT_BBKPF-BLDAT = GT_Z0110-PYDAT. "입금일 + 67| GT_BBKPF-BUDAT = GT_Z0110-PYDAT. "입금일 + 68| GT_BBKPF-BLART = C_BLART. "카드채권 반제 + 69| GT_BBKPF-BUKRS = GT_Z0110-BUKRS. + 70| GT_BBKPF-WAERS = GT_Z0110-WAERS. + 71| GT_BBKPF-BKTXT = GT_Z0110-SGTXT(25). "거래내역 + 72| + 73| APPEND GT_BBKPF. +``` + +- **EN**: Fills the BBKPF header with FB01, document/posting date = payment date, the card-receivable clearing document type, company code, currency and header text and appends it. +- SAP 객체: BBKPF, FB01 +- 업무 키워드: 전표 헤더, 입금일, 전표유형, 카드채권 반제, 헤더 텍스트 +- English: Document Header, BBKPF, Document Type, Posting Date +- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`C_BLART`](#decl-zfir0060top-42-c_blart) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L65-L73` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#MAKE_BKPF#C1` + +### FORM MAKE_BSEG — `ZFIR0060F01` L83-L184 (102줄) + +*카드채권 반제 건(GT_Z0110)의 입금액·채권반제·수수료·무이자수수료·잡손실·잡이익 금액을 고정 G/L 계정과 전기키로 BBSEG 아이템으로 구성하는 FORM 이다.* + +> 이 unit 의 조각 2개가 95/102줄(93%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 라인 1 은 입금액(AMT1)을 예수금_기타 계정 0021337901 에 전기키 40(역전기 시 50)으로, 라인 2 는 채권반제금액(AMT2)을 카드사 고객(KUNNR) 전기키 15(역전기 시 05)·G/L 0011217901(기타매출채권_카드사)로 만들어 입금일/채권발생일을 지정(ZUONR)에 넣는다. + +```abap + 87| IF P_XNEGP EQ C_X. + 88| GT_BBSEG-NEWBS = '50'. "전기키 + 89| ELSE. + 90| GT_BBSEG-NEWBS = '40'. "전기키 + 91| ENDIF. + 92| GT_BBSEG-NEWKO = '0021337901'. "계정-예수금_기타 + 93| GT_BBSEG-WRBTR = GT_Z0110-AMT1. "금액 + 94| GT_BBSEG-ZUONR = GT_Z0110-PYDAT. "지정 - 입금일 + 95| GT_BBSEG-PRCTR = GT_Z0110-PRCTR. "손익센터 + 96| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 97| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 98| + 99| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 100| + 101| * 라인아이템 2 - 채권반제금액 + 102| IF P_XNEGP EQ C_X. + 103| GT_BBSEG-NEWBS = '05'. "전기키 + 104| ELSE. + 105| GT_BBSEG-NEWBS = '15'. "전기키 + 106| ENDIF. + 107| GT_BBSEG-NEWKO = GT_Z0110-KUNNR. "카드사 고객코드 + 108| GT_BBSEG-HKONT = '0011217901'. "GL계정 - 기타매출채권_CREDIT_카드사 + 109| GT_BBSEG-WRBTR = GT_Z0110-AMT2. "채권반제금액 + 110| GT_BBSEG-ZUONR = GT_Z0110-ARDAT. "지정 - 채권발생일 + 111| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 112| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 113| + 114| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds line 1 (deposit amount AMT1 to G/L 0021337901 with posting key 40/50) and line 2 (receivable clearing AMT2 to the card company customer KUNNR with posting key 15/05, G/L 0011217901), using payment date / receivable date as assignment. +- SAP 객체: BBSEG, 0021337901, 0011217901 +- 업무 키워드: 입금액, 채권반제, 카드사 고객, 전기키, 예수금, 기타매출채권, 역전기 +- English: Deposit, Receivable Clearing, Customer, Posting Key, Negative Posting +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L87-L114` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#MAKE_BSEG#C1` + +#### [calculation] 금액이 있을 때만 카드수수료(AMT3→0053310301)·무이자수수료(AMT4→0053310307)·잡손실(AMT5→0057797905)은 전기키 40(역전기 50)으로, 잡이익(AMT6→0055797901)은 전기키 50(역전기 40)으로 코스트센터·입금일 지정과 함께 BBSEG 아이템으로 추가한다. + +```abap + 117| IF GT_Z0110-AMT3 IS NOT INITIAL. + 118| IF P_XNEGP EQ C_X. + 119| GT_BBSEG-NEWBS = '50'. "전기키 + 120| ELSE. + 121| GT_BBSEG-NEWBS = '40'. "전기키 + 122| ENDIF. + 123| GT_BBSEG-NEWKO = '0053310301'. "지급수수료_카드수수료_신용카드 + 124| GT_BBSEG-WRBTR = GT_Z0110-AMT3. "수수료 + 125| GT_BBSEG-ZUONR = GT_Z0110-PYDAT. "지정 - 입금일 + 126| GT_BBSEG-KOSTL = GT_Z0110-KOSTL. "코스트센터 + 127| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 128| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 129| + 130| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 131| ENDIF. + 132| + 133| * 라인아이템 4 - 무이자 수수료 + 134| IF GT_Z0110-AMT4 IS NOT INITIAL. + 135| IF P_XNEGP EQ C_X. + 136| GT_BBSEG-NEWBS = '50'. "전기키 + 137| ELSE. + 138| GT_BBSEG-NEWBS = '40'. "전기키 + 139| ENDIF. + 140| GT_BBSEG-NEWKO = '0053310307'. "지급수수료_카드수수료_무이자 + 141| GT_BBSEG-WRBTR = GT_Z0110-AMT4. "무이자 수수료 + 142| GT_BBSEG-ZUONR = GT_Z0110-PYDAT. "지정 - 입금일 + 143| GT_BBSEG-KOSTL = GT_Z0110-KOSTL. "코스트센터 + 144| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 145| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 146| + 147| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 148| ENDIF. + 149| + 150| * 라인아이템 5 - 잡손실 + 151| IF GT_Z0110-AMT5 IS NOT INITIAL. + 152| IF P_XNEGP EQ C_X. + 153| GT_BBSEG-NEWBS = '50'. "전기키 + 154| ELSE. + 155| GT_BBSEG-NEWBS = '40'. "전기키 + 156| ENDIF. + 157| GT_BBSEG-NEWKO = '0057797905'. "잡손실_기타 + 158| GT_BBSEG-WRBTR = GT_Z0110-AMT5. "잡손실 + 159| GT_BBSEG-ZUONR = GT_Z0110-PYDAT. "지정 - 입금일 + 160| GT_BBSEG-KOSTL = GT_Z0110-KOSTL. "코스트센터 + 161| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 162| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 163| + 164| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 165| ENDIF. + 166| + 167| * 라인아이템 6 - 잡이익 + 168| IF GT_Z0110-AMT6 IS NOT INITIAL. + 169| IF P_XNEGP EQ C_X. + 170| GT_BBSEG-NEWBS = '40'. "전기키 + 171| ELSE. + 172| GT_BBSEG-NEWBS = '50'. "전기키 + 173| ENDIF. + 174| GT_BBSEG-NEWKO = '0055797901'. "잡이익_기타 + 175| GT_BBSEG-WRBTR = GT_Z0110-AMT6. "잡이익 + 176| GT_BBSEG-ZUONR = GT_Z0110-PYDAT. "지정 - 입금일 + 177| GT_BBSEG-KOSTL = GT_Z0110-KOSTL. "코스트센터 + 178| GT_BBSEG-SGTXT = GT_Z0110-SGTXT. "적요 + 179| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 180| + 181| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 182| ENDIF. + 183| +``` + +- **EN**: Optionally adds card fee (AMT3), interest-free fee (AMT4) and miscellaneous loss (AMT5) lines with posting key 40/50 and miscellaneous gain (AMT6) with posting key 50/40 to fixed expense/income G/L accounts, carrying cost center and payment date. +- SAP 객체: BBSEG, 0053310301, 0053310307, 0057797905, 0055797901 +- 업무 키워드: 카드수수료, 무이자수수료, 잡손실, 잡이익, 코스트센터, 비용 계정 +- English: Card Fee, Miscellaneous Loss, Miscellaneous Gain, Cost Center, Expense Account +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`C_X`](#decl-zficom-231-c_x), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L117-L183` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#MAKE_BSEG#C2` + +### FORM BDC_TRANSACTION_FB01 — `ZFIR0060F01` L190-L257 (68줄) + +*구성된 BBKPF/BBSEG 로 Z_FI_DOCUMENT_POSTING 을 호출해 카드채권 반제 전표를 생성하고 성공/오류 상태·메시지·처리자 로그를 GT_Z0110 및 재전송용 GT_RESULT 에 기록하는 FORM 이다.* + +> 이 unit 의 조각 3개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_FI_DOCUMENT_POSTING 에 BDC 모드와 전표 헤더(GT_BBKPF)·아이템(GT_BBSEG)을 넘겨 FB01 반제 전표를 생성하고 전표번호·회계연도·회사코드와 메시지(GT_FIMSG)를 받는다. + +```abap + 194| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 195| EXPORTING + 196| I_BDC_MODE = GV_MODE + 197| I_MESSAGE = SPACE + 198| IMPORTING + 199| E_BELNR = GV_BELNR + 200| E_GJAHR = GV_GJAHR + 201| E_BUKRS = GV_BUKRS + 202| TABLES + 203| T_BBKPF = GT_BBKPF + 204| T_BBSEG = GT_BBSEG + 205| T_MESSTAB = GT_FIMSG. +``` + +- **EN**: Calls Z_FI_DOCUMENT_POSTING with BDC mode, BBKPF header and BBSEG items to post the FB01 clearing document, returning document number, fiscal year, company code and FIMSG messages. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, BBKPF, BBSEG, FIMSG, FB01 +- 업무 키워드: 전표 생성, 카드채권 반제, FB01, 전기 메시지 +- English: Document Posting, FB01, Clearing Document, Z_FI_DOCUMENT_POSTING +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L194-L205` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#BDC_TRANSACTION_FB01#C1` + +#### [control_flow] 전표번호가 생성되면 GT_Z0110 에 연도·전표번호와 성공(S) 상태를, 실패면 오류(E) 상태와 함께 E/A 타입 메시지(없으면 마지막 메시지)를 MESSAGE_TEXT_BUILD 로 텍스트화해 MESSG 에 기록한다. + +```abap + 207| IF GV_BELNR NE SPACE. + 208| GT_Z0110-GJAHR = GV_GJAHR. + 209| GT_Z0110-BELNR = GV_BELNR. + 210| GT_Z0110-STATS = C_S. + 211| ELSE. + 212| GT_Z0110-STATS = C_E. + 213| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 214| IF SY-SUBRC <> 0. + 215| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 216| ENDIF. + 217| IF GT_FIMSG IS INITIAL. + 218| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 219| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 220| READ TABLE GT_MESS INDEX GV_INDEX. + 221| IF SY-SUBRC EQ 0. + 222| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 223| EXPORTING + 224| MSGID = GT_FIMSG-MSGID + 225| MSGNR = GT_FIMSG-MSGNO + 226| MSGV1 = GT_FIMSG-MSGV1 + 227| MSGV2 = GT_FIMSG-MSGV2 + 228| MSGV3 = GT_FIMSG-MSGV3 + 229| MSGV4 = GT_FIMSG-MSGV4 + 230| IMPORTING + 231| MESSAGE_TEXT_OUTPUT = GT_Z0110-MESSG. + 232| ENDIF. + 233| ELSE. + 234| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 235| EXPORTING + 236| MSGID = GT_FIMSG-MSGID + 237| MSGNR = GT_FIMSG-MSGNO + 238| MSGV1 = GT_FIMSG-MSGV1 + 239| MSGV2 = GT_FIMSG-MSGV2 + 240| MSGV3 = GT_FIMSG-MSGV3 + 241| MSGV4 = GT_FIMSG-MSGV4 + 242| IMPORTING + 243| MESSAGE_TEXT_OUTPUT = GT_Z0110-MESSG. + 244| ENDIF. + 245| ENDIF. +``` + +- **EN**: On success stores fiscal year, document number and status S in GT_Z0110; on failure sets status E and builds the E/A-type (or last) message text via MESSAGE_TEXT_BUILD into MESSG. +- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, ZFIT0110 +- 업무 키워드: 처리 상태, 오류 메시지, 전표번호 기록, 성공/실패 +- English: Status, Error Message, MESSAGE_TEXT_BUILD +- 정의부(복사 시 함께 필요): [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`C_S`](#decl-zficom-226-c_s), [`C_E`](#decl-zficom-212-c_e), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L207-L245` · confidence 0.9 · `ZFIR0060#ZFIR0060F01#FORM#BDC_TRANSACTION_FB01#C2` + +#### [calculation] 처리 일시·처리자를 GT_Z0110 에 남기고 전표번호·연도·상태·메시지를 외부 재전송용 GT_RESULT 에 복사한다. + +```abap + 247| * 로그 + 248| GT_Z0110-UDATE = SY-DATUM. + 249| GT_Z0110-UTIME = SY-UZEIT. + 250| GT_Z0110-UNAME = SY-UNAME. + 251| * 재전송 + 252| GT_RESULT-BELNR = GT_Z0110-BELNR. + 253| GT_RESULT-GJAHR = GT_Z0110-GJAHR. + 254| GT_RESULT-STATS = GT_Z0110-STATS. + 255| GT_RESULT-MESSG = GT_Z0110-MESSG. +``` + +- **EN**: Stamps processing date/time/user into GT_Z0110 and copies document number, year, status and message into GT_RESULT for outbound resend. +- SAP 객체: ZFIT0110 +- 업무 키워드: 처리 로그, 재전송, 처리 결과, 인터페이스 +- English: Processing Log, Resend, Interface Result +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`GT_RESULT`](#decl-zfir0060top-20-gt_result) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L247-L255` · confidence 0.85 · `ZFIR0060#ZFIR0060F01#FORM#BDC_TRANSACTION_FB01#C3` + +### FORM SEND_CLEARING_INFO — `ZFIR0060F01` L263-L315 (53줄) + +*카드채권 반제 처리 결과를 공통 로그 키와 함께 송신 시스템으로 RFC 전송하고 ZFIT0110 을 갱신한다.* + +> 이 unit 의 조각 2개가 39/53줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 인터페이스 공통 로그의 고유키를 발급받고 실패 시 메시지 후 처리를 중단한다. + +```abap + 273| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 274| EXPORTING + 275| I_PGMID = SY-REPID + 276| I_MODUL = 'FI' + 277| IMPORTING + 278| E_MESSG = LV_MESSG + 279| ES_CMLOG = LS_CMLOG. + 280| + 281| IF LV_MESSG NE SPACE. + 282| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 283| LEAVE LIST-PROCESSING. + 284| ELSE. + 285| APPEND LS_CMLOG TO LT_CMLOG. + 286| ENDIF. +``` + +- **EN**: Obtains the interface common-log unique key and aborts on failure. +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZIFS0010, UNQID +- 업무 키워드: 인터페이스로그, 고유키, 공통로그, 전송키 +- English: interface log, unique key, common log, UNQID +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0060f01-267-lv_messg), [`LS_CMLOG`](#decl-zfir0060f01-266-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0060f01-265-lt_cmlog) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L273-L286` · confidence 0.85 · `ZFIR0060#ZFIR0060F01#FORM#SEND_CLEARING_INFO#C1` + +#### [interface] 고유키를 채워 ZFIT0110 을 갱신하고, 반제 처리 결과를 RFC destination 'ZFI01' 의 Z_FI_SAVE_CLEARING_RETURN 으로 전송한 뒤 성공/실패를 알린다. + +```abap + 289| GT_Z0110-UNQID = LS_CMLOG-UNQID. + 290| MODIFY GT_Z0110 TRANSPORTING UNQID + 291| WHERE UNQID EQ SPACE. + 292| * CBO테이블 업데이트 + 293| MODIFY ZFIT0110 FROM TABLE GT_Z0110. + 294| + 295| * 데이터 가공하여 테이블에 저장 및 상태 값 전송 + 296| CALL FUNCTION 'Z_FI_SAVE_CLEARING_RETURN' + 297| DESTINATION 'ZFI01' + 298| TABLES + 299| IT_RESULT = GT_RESULT + 300| IT_CMLOG = LT_CMLOG + 301| EXCEPTIONS + 302| SYSTEM_FAILURE = 1 + 303| COMMUNICATION_FAILURE = 2 + 304| OTHERS = 3. + 305| IF SY-SUBRC EQ 0. + 306| ** CBO테이블 업데이트 + 307| * MODIFY ZFIT0110 FROM TABLE GT_Z0110. + 308| + 309| MESSAGE S000 WITH '성공적으로 저장하였습니다.'. + 310| ELSE. + 311| MESSAGE S000 WITH '데이터 전송 중 오류가 발생했습니다.' + 312| DISPLAY LIKE C_E. + 313| ENDIF. +``` + +- **EN**: Stamps the unique key onto ZFIT0110 and sends clearing results via RFC (Z_FI_SAVE_CLEARING_RETURN, destination ZFI01). +- 테이블(파서): read - / write [ZFIT0110](/tables/ZFIT0110.md) +- 호출(파서): Z_FI_SAVE_CLEARING_RETURN +- SAP 객체: Z_FI_SAVE_CLEARING_RETURN, ZFIT0110, ZIFS0010, ZFI01 +- 업무 키워드: 처리결과전송, 반제결과, RFC, 카드채권, 상태값전송, CBO갱신 +- English: result transmission, clearing result, RFC destination, status feedback +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0060top-8-zfit0110), [`GT_Z0110`](#decl-zfir0060top-17-gt_z0110), [`LS_CMLOG`](#decl-zfir0060f01-266-ls_cmlog), [`GT_RESULT`](#decl-zfir0060top-20-gt_result), [`LT_CMLOG`](#decl-zfir0060f01-265-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0060/ZFIR0060F01#L289-L313` · confidence 0.88 · `ZFIR0060#ZFIR0060F01#FORM#SEND_CLEARING_INFO#C2` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0060/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0060/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0060/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0060/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0060/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0060/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0060#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0060/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 정의부(복사 시 함께 필요): [`P_DATE`](#decl-zfir0060top-47-p_date) +- 위치: `abap://ZFIR0060/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0060/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0060/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0060/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0060/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0060/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0060/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0060/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0060/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0060/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0060/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0060/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0060/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0060/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0060/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0060#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0060/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0060/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0060/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0060/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 위치: `abap://ZFIR0060/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0060#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0060/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0060#ZFICOM#FORM#STATUS_BAR#C1` + +## 정의부 (296건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0060TOP` (16건) + +#### TCURC — tables · L8-L8 {#decl-zfir0060top-8-tcurc} + +```abap +TABLES: ZFIT0110, ZFIT0040, TCURC. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0060top-8-zfit0040} + +```abap +TABLES: ZFIT0110, ZFIT0040, TCURC. +``` + +#### ZFIT0110 — tables · L8-L8 {#decl-zfir0060top-8-zfit0110} + +```abap +TABLES: ZFIT0110, ZFIT0040, TCURC. +``` + +#### GS_INFO — data · L13-L13 {#decl-zfir0060top-13-gs_info} + +```abap +DATA: GS_INFO LIKE ZFIS0100. +``` + +#### GS_RESULT — data · L14-L14 {#decl-zfir0060top-14-gs_result} + +```abap +DATA: + GS_RESULT LIKE ZFIS0101. +``` + +#### GT_Z0040 — data · L16-L16 {#decl-zfir0060top-16-gt_z0040} + +```abap +DATA: GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0110 — data · L17-L17 {#decl-zfir0060top-17-gt_z0110} + +```abap +DATA: + GT_Z0110 LIKE ZFIT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_TCURC — data · L18-L18 {#decl-zfir0060top-18-gt_tcurc} + +```abap +DATA: + GT_TCURC LIKE TCURC OCCURS 0 WITH HEADER LINE. +``` + +#### GT_INFO — data · L19-L19 {#decl-zfir0060top-19-gt_info} + +```abap +DATA: + GT_INFO LIKE ZFIS0100 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RESULT — data · L20-L20 {#decl-zfir0060top-20-gt_result} + +```abap +DATA: + GT_RESULT LIKE ZFIS0101 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_KNB1 — data · L23-L27 {#decl-zfir0060top-23-gt_knb1} + +```abap +DATA: BEGIN OF GT_KNB1 OCCURS 0, + BUKRS LIKE KNB1-BUKRS, + KUNNR LIKE KNB1-KUNNR, + ALTKN LIKE KNB1-ALTKN, + END OF GT_KNB1. +``` + +#### GT_DOMAIN — data · L30-L34 {#decl-zfir0060top-30-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### GV_ERR — data · L36-L36 {#decl-zfir0060top-36-gv_err} + +```abap +DATA: GV_ERR(1) TYPE C. +``` + +#### GV_XNEGP — data · L37-L37 {#decl-zfir0060top-37-gv_xnegp} + +```abap +DATA: + GV_XNEGP LIKE BSEG-XNEGP. +``` + +#### C_BLART — constants · L42-L42 {#decl-zfir0060top-42-c_blart} + +```abap +CONSTANTS: C_BLART LIKE BKPF-BLART VALUE '18'. "카드채권 반제 +``` + +#### P_DATE — parameter · L47-L47 {#decl-zfir0060top-47-p_date} + +```abap +PARAMETERS : P_DATE LIKE SY-DATUM. +``` + +### `ZFIR0060F01` (3건) + +#### LT_CMLOG — data · unit 로컬 · L265-L265 {#decl-zfir0060f01-265-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CMLOG — data · unit 로컬 · L266-L266 {#decl-zfir0060f01-266-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LV_MESSG — data · unit 로컬 · L267-L267 {#decl-zfir0060f01-267-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0060 L28-33 | 0 | 처리 기준일 파라미터(P_DATE)를 오늘 날짜로 초기화하는 이벤트다. | +| AT SELECTION-SCREEN | EVENT | ZFIR0060 L34-38 | 0 | 내용이 없는 AT SELECTION-SCREEN 이벤트다. | +| START-OF-SELECTION | EVENT | ZFIR0060 L39-45 | 0 | GET_DATA 를 수행해 카드채권 반제 인터페이스 처리를 시작하는 이벤트다. | +| END-OF-SELECTION | EVENT | ZFIR0060 L46-46 | 0 | 내용이 없는 END-OF-SELECTION 이벤트다. | +| GET_DATA | FORM | ZFIR0060F01 L9-17 | 1 | 미전송 카드채권 반제 건을 추출(GET_ZFIT0110)하고 처리결과를 전송(SEND_CLEARING_INFO)하는 메인 처리 FORM 이다. | +| GET_ZFIT0110 | FORM | ZFIR0060F01 L23-56 | 2 | 카드채권 반제 미전송 건을 읽어 오류가 없는 건마다 반제 전표를 만들어 전기한다. | +| MAKE_BKPF | FORM | ZFIR0060F01 L62-75 | 1 | 카드채권 반제 건의 입금일·회사코드·통화로 FB01 용 BBKPF 전표 헤더(전표유형 C_BLART)를 구성하는 FORM 이다. | +| MAKE_BSEG | FORM | ZFIR0060F01 L83-184 | 2 | 카드채권 반제 건(GT_Z0110)의 입금액·채권반제·수수료·무이자수수료·잡손실·잡이익 금액을 고정 G/L 계정과 전기키로 BBSEG 아이템으로 구성하는 FORM 이다. | +| BDC_TRANSACTION_FB01 | FORM | ZFIR0060F01 L190-257 | 3 | 구성된 BBKPF/BBSEG 로 Z_FI_DOCUMENT_POSTING 을 호출해 카드채권 반제 전표를 생성하고 성공/오류 상태·메시지·처리자 로그를 GT_Z0110 및 재전송용 GT_RESULT 에 기록하는 FORM 이다. | +| SEND_CLEARING_INFO | FORM | ZFIR0060F01 L263-315 | 2 | 카드채권 반제 처리 결과를 공통 로그 키와 함께 송신 시스템으로 RFC 전송하고 ZFIT0110 을 갱신한다. | diff --git a/wiki/programs/ZFIR0061.md b/wiki/programs/ZFIR0061.md new file mode 100644 index 0000000..e0d99ee --- /dev/null +++ b/wiki/programs/ZFIR0061.md @@ -0,0 +1,4087 @@ +--- +type: abap-program +title: "ZFIR0061 — 카드채권 반제내역 I/F 이력 조회" +description: "ZFIR0060 이 처리한 카드채권 반제 인터페이스 이력을 거래일자·처리상태(전체/오류)로 조회하는 화면이며, 오류 건을 화면에서 직접 재전기할 수 있다. ZFIT0110 을 읽어 고객·오더·손익센터 텍스트를 붙여 ALV 로 보여주고, ZFIR0060 과 동일한 전표 생성·결과송신 로직을 내장한다." +resource: "abap://ZFIR0061" +tags: ["인터페이스", "반제", "채권관리", "리포트", "오류재처리", "FI", "카드채권", "처리상태", "거래일", "지급일", "반제일", "손익센터", "고객", "코스트센터", "오더", "사업장", "고객명", "텍스트보강", "조직단위", "번호범위"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:20+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["AUFK", "CEPCT", "CSKT", "DD07T", "J_1BBRANCH", "KNA1", "LTDX", "SKAT", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0110", "ZFIT0160"] +x-tables-write: ["ZFIT0110"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN"] +x-code-hash: "b7deedcf87d85e469d5717bf61b8e6a826d6d0e7080ab78bd5bf20613609f307" +x-unit-count: 102 +x-chunk-count: 49 +x-declaration-count: 297 +--- + +## 업무 목적 + +ZFIR0060 이 처리한 카드채권 반제 인터페이스 이력을 거래일자·처리상태(전체/오류)로 조회하는 화면이며, 오류 건을 화면에서 직접 재전기할 수 있다. ZFIT0110 을 읽어 고객·오더·손익센터 텍스트를 붙여 ALV 로 보여주고, ZFIR0060 과 동일한 전표 생성·결과송신 로직을 내장한다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 거래일자·처리상태 조건으로 ZFIT0110 인터페이스 이력을 추출한다 (GET_ZFIT0110) +4. 고객(KNA1)·오더(AUFK)·손익센터(CEPCT) 텍스트를 붙여 표시 데이터를 만든다 (DISPLAY_DATA) +5. 화면 0100 에 ALV 로 출력한다 +6. 재전기 지시 시 전표를 다시 만들어 FB01 BDC 로 전기하고 결과를 송신한다 (POSTING_DOCUMET → MAKE_BKPF/MAKE_BSEG → BDC_TRANSACTION_FB01 → SEND_CLEARING_INFO) + +## 핵심 내부테이블 + +- `GT_DATA` — 카드채권 반제 I/F 이력 및 재전기 대상 (채움: GET_ZFIT0110 / 소비: DISPLAY_DATA, POSTING_DOCUMET) + +## 테이블 / 외부 호출 + +- read: AUFK, CEPCT, CSKT, DD07T, J_1BBRANCH, KNA1, LTDX, SKAT, T007S, TKA02, USR01, V_USERNAME, ZFIT0110, ZFIT0160 +- write: ZFIT0110 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET + +## 로직 조각 (49건 / unit 38개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0061F01` L9-L22 (14줄) + +*DD07T 에서 발생/취소 구분 도메인 ZDGUBUN 의 고정값 텍스트를 GT_DOMAIN 에 읽는 FORM 이다.* + +> 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] DD07T 에서 로그온 언어의 도메인 ZDGUBUN(발생/취소 구분) 고정값과 텍스트를 GT_DOMAIN 에 읽어 화면 표시에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDGUBUN' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Reads fixed values and texts of domain ZDGUBUN (posting/reversal flag) from DD07T into GT_DOMAIN for display. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T, ZDGUBUN +- 업무 키워드: 도메인 텍스트, 발생/취소 구분 +- English: Domain Fixed Values, Text Lookup +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0061top-62-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L13-L20` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#GET_DOMAIN#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0061/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0061#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0110 — `ZFIR0061F01` L42-L128 (87줄) + +*카드채권 반제 인터페이스 이력을 처리상태·일자 조건으로 읽고 조직단위·고객 텍스트를 붙인다.* + +> 이 unit 의 조각 2개가 70/87줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 처리상태(전체/성공 S/오류 E+F)를 레인지로 만들고, 거래일·손익센터·지급일·반제일·고객 조건으로 카드채권 반제 테이블 ZFIT0110 을 조회한다. + +```abap + 48| R_STATS-SIGN = C_I. + 49| R_STATS-OPTION = C_EQ. + 50| CASE C_X. + 51| WHEN P_RA. + 52| WHEN P_RS. + 53| R_STATS-LOW = C_S. + 54| APPEND R_STATS. + 55| WHEN P_RE. + 56| R_STATS-LOW = C_E. + 57| APPEND R_STATS. + 58| R_STATS-LOW = C_F. + 59| APPEND R_STATS. + 60| ENDCASE. + 61| + 62| SELECT * + 63| INTO TABLE GT_Z0110 + 64| FROM ZFIT0110 + 65| WHERE BUKRS EQ P_BUKRS + 66| AND TRDAT IN S_TRDAT + 67| AND PRCTR IN S_PRCTR + 68| AND PYDAT IN S_PYDAT + 69| AND ARDAT IN S_ARDAT + 70| AND KUNNR IN S_KUNNR + 71| AND STATS IN R_STATS. + 72| + 73| CHECK GT_Z0110[] IS NOT INITIAL. +``` + +- **EN**: Builds a status range (success S, errors E/F) and reads card-receivable clearing records from ZFIT0110 by transaction, payment and clearing dates. +- 테이블(파서): read [ZFIT0110](/tables/ZFIT0110.md) / write - +- SAP 객체: ZFIT0110, TRDAT, PYDAT, ARDAT, PRCTR, KUNNR, STATS +- 업무 키워드: 카드채권, 반제, 처리상태, 거래일, 지급일, 반제일, 손익센터, 고객 +- English: card receivable, clearing, processing status, transaction date, payment date, clearing date +- 정의부(복사 시 함께 필요): [`R_STATS`](#decl-zfir0061top-68-r_stats), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_X`](#decl-zficom-231-c_x), [`P_RA`](#decl-zfir0061top-99-p_ra), [`P_RS`](#decl-zfir0061top-101-p_rs), [`C_S`](#decl-zficom-226-c_s), [`P_RE`](#decl-zfir0061top-103-p_re), [`C_E`](#decl-zficom-212-c_e), [`C_F`](#decl-zficom-213-c_f), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110`](#decl-zfir0061top-27-gt_z0110) 외 6건 +- 위치: `abap://ZFIR0061/ZFIR0061F01#L48-L73` · confidence 0.89 · `ZFIR0061#ZFIR0061F01#FORM#GET_ZFIT0110#C1` + +#### [sql_select] 관리회계영역(TKA02)을 읽고 코스트센터명·손익센터명·오더명(AUFK)·사업장명·고객명·지점고객명을 FOR ALL ENTRIES 로 붙여 표시용 텍스트를 확보한다. + +```abap + 83| SELECT SINGLE * + 84| FROM TKA02 + 85| WHERE BUKRS EQ P_BUKRS. + 86| * 코스트센터명 + 87| SELECT KOSTL LTEXT + 88| INTO TABLE GT_CSKT + 89| FROM CSKT + 90| FOR ALL ENTRIES IN GT_Z0110 + 91| WHERE SPRAS EQ SY-LANGU + 92| AND KOKRS EQ TKA02-KOKRS + 93| AND KOSTL EQ GT_Z0110-KOSTL. + 94| * 손익센터명 + 95| SELECT PRCTR KTEXT + 96| INTO TABLE GT_CEPCT + 97| FROM CEPCT + 98| FOR ALL ENTRIES IN GT_Z0110 + 99| WHERE SPRAS EQ SY-LANGU + 100| AND KOKRS EQ TKA02-KOKRS + 101| AND PRCTR EQ GT_Z0110-PRCTR. + 102| * 오더명 + 103| SELECT AUFNR KTEXT + 104| INTO TABLE GT_AUFK + 105| FROM AUFK + 106| FOR ALL ENTRIES IN GT_Z0110 + 107| WHERE AUFNR EQ GT_Z0110-AUFNR. + 108| * 사업장명 + 109| SELECT BRANCH NAME + 110| INTO TABLE GT_BRANCH + 111| FROM J_1BBRANCH + 112| FOR ALL ENTRIES IN GT_Z0110 + 113| WHERE BUKRS EQ P_BUKRS + 114| AND BRANCH EQ GT_Z0110-BUPLA. + 115| * 고객명 + 116| SELECT KUNNR NAME1 + 117| INTO TABLE GT_KNA1 + 118| FROM KNA1 + 119| FOR ALL ENTRIES IN GT_Z0110 + 120| WHERE KUNNR EQ GT_Z0110-KUNNR. + 121| * 지점고객명 + 122| SELECT KUNNR NAME1 + 123| APPENDING TABLE GT_KNA1 + 124| FROM KNA1 + 125| FOR ALL ENTRIES IN GT_Z0110 + 126| WHERE KUNNR EQ GT_Z0110-KUNNR2. +``` + +- **EN**: Enriches the rows with controlling area, cost center, profit center, order, business place and customer texts. +- 테이블(파서): read [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [CEPCT](/tables/CEPCT.md), [AUFK](/tables/AUFK.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [KNA1](/tables/KNA1.md) / write - +- SAP 객체: TKA02, CSKT, CEPCT, AUFK, J_1BBRANCH, KNA1 +- 업무 키워드: 코스트센터, 손익센터, 오더, 사업장, 고객명, 텍스트보강, 조직단위 +- English: cost center, profit center, internal order, business place, customer name, text enrichment +- 정의부(복사 시 함께 필요): [`TKA02`](#decl-zfir0061top-8-tka02), [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs), [`GT_CSKT`](#decl-zfir0061top-47-gt_cskt), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110`](#decl-zfir0061top-27-gt_z0110), [`GT_CEPCT`](#decl-zfir0061top-37-gt_cepct), [`GT_AUFK`](#decl-zfir0061top-42-gt_aufk), [`GT_BRANCH`](#decl-zfir0061top-52-gt_branch), [`GT_KNA1`](#decl-zfir0061top-57-gt_kna1), [`KNA1`](#decl-zficom-38-kna1) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L83-L126` · confidence 0.88 · `ZFIR0061#ZFIR0061F01#FORM#GET_ZFIT0110#C2` + +### FORM DISPLAY_DATA — `ZFIR0061F01` L134-L196 (63줄) + +*ZFIT0110 이력 각 건에 상태 아이콘과 발생취소·코스트센터·손익센터·오더·사업장·고객 텍스트를 붙여 ALV 표시용 GT_DATA 를 만들고 거래일자·순번으로 정렬하는 FORM 이다.* + +> 이 unit 의 조각 1개가 58/63줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 카드채권 반제 I/F 이력(GT_Z0110)마다 처리상태(S 성공/F 실패/기타)에 따라 신호등 아이콘을 넣고 도메인 ZDGUBUN 텍스트, CSKT 코스트센터명, CEPCT 손익센터명, AUFK 오더명, 사업장명, KNA1 고객명·지점고객명을 붙여 GT_DATA 에 적재한 뒤 거래일자·순번으로 정렬한다. + +```abap + 137| LOOP AT GT_Z0110. + 138| MOVE-CORRESPONDING GT_Z0110 TO GT_DATA. + 139| * 상태 아이콘 + 140| IF GT_Z0110-STATS EQ C_S. + 141| GT_DATA-CICON = ICON_GREEN_LIGHT. + 142| ELSEIF GT_Z0110-STATS EQ C_F. + 143| GT_DATA-CICON = ICON_RED_LIGHT. + 144| ELSE. + 145| GT_DATA-CICON = ICON_YELLOW_LIGHT. + 146| ENDIF. + 147| * 발생/취소구분 + 148| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDGUBUN' + 149| DOMVALUE_L = GT_Z0110-GUBUN. + 150| IF SY-SUBRC EQ 0. + 151| GT_DATA-GUBUN_T = GT_DOMAIN-DDTEXT. + 152| ENDIF. + 153| ** 사업영역명 + 154| * READ TABLE GT_TGSBT WITH KEY GSBER = GT_Z0110-GSBER. + 155| * IF SY-SUBRC EQ 0. + 156| * GT_DATA-GSBER_T = GT_TGSBT-GTEXT. + 157| * ENDIF. + 158| * 코스트센터명 + 159| READ TABLE GT_CSKT WITH KEY KOSTL = GT_Z0110-KOSTL. + 160| IF SY-SUBRC EQ 0. + 161| GT_DATA-KOSTL_T = GT_CSKT-LTEXT. + 162| ENDIF. + 163| * 손익센터명 + 164| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0110-PRCTR. + 165| IF SY-SUBRC EQ 0. + 166| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 167| ENDIF. + 168| * 오더명 + 169| READ TABLE GT_AUFK WITH KEY AUFNR = GT_Z0110-AUFNR. + 170| IF SY-SUBRC EQ 0. + 171| GT_DATA-AUFNR_T = GT_AUFK-KTEXT. + 172| ENDIF. + 173| * 사업장명 + 174| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_Z0110-BUPLA. + 175| IF SY-SUBRC EQ 0. + 176| GT_DATA-BUPLA_T = GT_BRANCH-NAME. + 177| ENDIF. + 178| * 고객명 + 179| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0110-KUNNR. + 180| IF SY-SUBRC EQ 0. + 181| GT_DATA-KUNNR_T = GT_KNA1-NAME1. + 182| ENDIF. + 183| * 지점고객명 + 184| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0110-KUNNR2. + 185| IF SY-SUBRC EQ 0. + 186| GT_DATA-KUNNR2_T = GT_KNA1-NAME1. + 187| ENDIF. + 188| + 189| APPEND GT_DATA. CLEAR GT_DATA. + 190| ENDLOOP. + 191| + 192| SORT GT_DATA BY TRDAT SEQ. + 193| + 194| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: Enriches each clearing-history row with a status icon and texts for reversal flag, cost center (CSKT), profit center (CEPCT), order (AUFK), business place and customer names (KNA1), then sorts by transaction date and sequence. +- SAP 객체: ZFIT0110, CSKT, CEPCT, AUFK, KNA1, GT_DATA +- 업무 키워드: 상태 아이콘, 코스트센터명, 손익센터명, 고객명, 표시 데이터 구성 +- English: Status Icon, Master Data Text, Cost Center, Profit Center, Customer Name +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110`](#decl-zfir0061top-27-gt_z0110), [`GT_DATA`](#decl-zfir0061top-14-gt_data), [`C_S`](#decl-zficom-226-c_s), [`C_F`](#decl-zficom-213-c_f), [`GT_DOMAIN`](#decl-zfir0061top-62-gt_domain), [`GT_CSKT`](#decl-zfir0061top-47-gt_cskt), [`GT_CEPCT`](#decl-zfir0061top-37-gt_cepct), [`GT_AUFK`](#decl-zfir0061top-42-gt_aufk), [`GT_BRANCH`](#decl-zfir0061top-52-gt_branch), [`GT_KNA1`](#decl-zfir0061top-57-gt_kna1), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L137-L194` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#DISPLAY_DATA#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0061/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0061/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0061/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0061/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0061/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0061/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0061/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0061/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0061/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0061/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0061/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0061/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0061/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0061/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0061/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0061/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0061/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0061/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0061/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0061/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0061/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0061/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0061/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0061/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0061#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0061/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0061/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0061/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0061/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs) +- 위치: `abap://ZFIR0061/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0061#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0061/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0061#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0061F01` L432-L460 (29줄) + +*ALV 핫스팟 클릭 시 고객/지점고객 코드는 FD03 고객 조회로, 전표번호는 FB03 전표 조회로 이동하는 FORM이다.* + +> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭 컬럼이 KUNNR/KUNNR2이면 SET PARAMETER KUN·BUK 후 FD03을, BELNR이면 BLN·BUK·GJR 후 FB03을 SKIP FIRST SCREEN으로 호출한다. + +```abap + 435| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 436| CHECK SY-SUBRC EQ 0. + 437| + 438| CASE P_COLUMN_ID. + 439| * 고객코드 + 440| WHEN 'KUNNR'. + 441| CHECK GT_DATA-KUNNR IS NOT INITIAL. + 442| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR. + 443| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 444| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 445| * 지점고객코드 + 446| WHEN 'KUNNR2'. + 447| CHECK GT_DATA-KUNNR2 IS NOT INITIAL. + 448| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR2. + 449| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 450| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 451| * 전표번호 + 452| WHEN 'BELNR'. + 453| CHECK GT_DATA-BELNR IS NOT INITIAL. + 454| SET PARAMETER ID 'BLN' FIELD GT_DATA-BELNR. + 455| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 456| SET PARAMETER ID 'GJR' FIELD GT_DATA-GJAHR. + 457| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 458| ENDCASE. +``` + +- **EN**: Navigates from hotspot columns to FD03 (customer display) or FB03 (document display) via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FD03, FD03, FB03 +- SAP 객체: FD03, FB03 +- 업무 키워드: 핫스팟 이동, 고객 조회, 전표 조회 +- English: Hotspot Navigation, Customer Display, Document Display, CALL TRANSACTION +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_DATA`](#decl-zfir0061top-14-gt_data), [`P_BUKRS`](#decl-zfir0061top-88-p_bukrs) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L435-L458` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0061F01` L256-L271 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 257| PERFORM SET_FIELD_CATALOGS. + 258| * Report Display. + 259| GV_VARI-REPORT = SY-REPID. + 260| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 261| EXPORTING + 262| I_STRUCTURE_NAME = 'GT_DATA' + 263| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 264| IS_LAYOUT = GV_LAYO + 265| IS_VARIANT = GV_VARI + 266| I_BUFFER_ACTIVE = C_X + 267| I_SAVE = C_A + 268| CHANGING + 269| IT_OUTTAB = GT_DATA[] + 270| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0061top-76-gv_vari), [`GV_ALV_GRID`](#decl-zfir0061top-74-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0061top-75-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_DATA`](#decl-zfir0061top-14-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L257-L270` · confidence 0.85 · `ZFIR0061#ZFIR0061F01#FORM#ALV_GRID_DISPLAY#C1` + +### FORM POSTING_DOCUMET — `ZFIR0061F01` L466-L537 (72줄) + +*ALV 에서 선택한 미전기 카드채권 반제 건을 검증·확인 팝업 후 전표 헤더·아이템을 만들어 FB01 BDC 로 재전기하고 결과를 송신한 뒤 재조회하는 FORM 이다.* + +> 이 unit 의 조각 3개가 60/72줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] GET_SELECTED_ROWS 로 선택 행을 얻고 선택이 없거나, 수신오류(STATS F) 건 또는 이미 전표(BELNR)가 생성된 건이 포함되면 메시지를 띄우고 재전기를 중단하며 대상 건수를 센다. + +```abap + 473| CALL METHOD GV_ALV_GRID->GET_SELECTED_ROWS + 474| IMPORTING + 475| ET_INDEX_ROWS = GT_ROWS[]. + 476| + 477| IF GT_ROWS[] IS INITIAL. + 478| MESSAGE S004. "선택된 데이터가 없습니다. + 479| EXIT. + 480| ELSE. + 481| * 선택된 데이터의 전표 생성여부 확인 + 482| LOOP AT GT_ROWS INTO GS_ROWS. + 483| READ TABLE GT_DATA INDEX GS_ROWS-INDEX. + 484| CHECK SY-SUBRC EQ 0. + 485| IF GT_DATA-BELNR EQ SPACE. + 486| IF GT_DATA-STATS EQ C_F. "전송받은 값 에러 + 487| MESSAGE I000 WITH TEXT-004. + 488| "선택한 데이터 중 오류가 있는 건이 존재합니다. + 489| GF_CHECK = C_X. EXIT. + 490| ENDIF. + 491| LV_CNT = LV_CNT + 1. + 492| ELSE. + 493| MESSAGE I000 WITH TEXT-001. + 494| "선택한 데이터 중 이미 전표가 생성된 건이 있습니다. + 495| GF_CHECK = C_X. EXIT. + 496| ENDIF. + 497| ENDLOOP. + 498| + 499| CHECK GF_CHECK IS INITIAL. +``` + +- **EN**: Reads the selected ALV rows and rejects the request if none are selected, if any row has a receive error status, or if a document already exists; counts eligible rows. +- 호출(파서): GV_ALV_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS, GT_DATA +- 업무 키워드: 선택 행 검증, 재전기 대상, 전표 생성 여부, 오류 건 제외 +- English: Selected Rows, Validation, Repost Eligibility +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID`](#decl-zfir0061top-74-gv_alv_grid), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_DATA`](#decl-zfir0061top-14-gt_data), [`C_F`](#decl-zficom-213-c_f), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x), [`LV_CNT`](#decl-zfir0061f01-468-lv_cnt) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L473-L499` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#POSTING_DOCUMET#C1` + +#### [validation] '선택하신 N건의 전표를 생성하시겠습니까' 문구로 CHECK_CONFIRM_STEP 확인 팝업을 띄워 사용자가 예(J)를 선택한 경우에만 진행한다. + +```abap + 500| CONCATENATE TEXT-002 LV_CNT TEXT-003 INTO GV_TEXT + 501| SEPARATED BY SPACE. + 502| "선택하신 N건의 데이터의 전표를 생성하시겠습니까? + 503| PERFORM CHECK_CONFIRM_STEP USING TEXT-005 GV_TEXT SPACE C_N. + 504| CHECK GF_ANSWER EQ C_J. +``` + +- **EN**: Shows a confirmation popup for the N selected rows via CHECK_CONFIRM_STEP and continues only on Yes. +- 호출(파서): CHECK_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 전표 생성 확인 +- English: Confirmation Popup +- 정의부(복사 시 함께 필요): [`LV_CNT`](#decl-zfir0061f01-468-lv_cnt), [`GV_TEXT`](#decl-zficom-85-gv_text), [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L500-L504` · confidence 0.8 · `ZFIR0061#ZFIR0061F01#FORM#POSTING_DOCUMET#C2` + +#### [control_flow] 선택 건마다 GT_Z0110_S 로 옮겨 상태를 초기화하고 MAKE_BKPF 로 헤더, 취소(C_R) 건은 XNEGP 마이너스 전기 지시자를 세워 MAKE_BSEG 로 아이템을 만든 뒤 BDC_TRANSACTION_FB01 로 전기하고, 루프 후 SEND_CLEARING_INFO 로 결과를 송신하고 GET_DATA 로 재조회한다. + +```abap + 506| LOOP AT GT_ROWS INTO GS_ROWS. + 507| CLEAR: GT_Z0110_S, GV_XNEGP. + 508| READ TABLE GT_DATA INDEX GS_ROWS-INDEX. + 509| CHECK SY-SUBRC EQ 0. + 510| MOVE-CORRESPONDING: GT_DATA TO GT_Z0110_S. + 511| CLEAR: GT_Z0110_S-STATS, GT_Z0110_S-MESSG. + 512| + 513| MOVE-CORRESPONDING: GT_Z0110_S TO GT_RESULT. + 514| + 515| * 전표 헤더 + 516| PERFORM MAKE_BKPF. + 517| * 발생/취소 구분에 따라 + 518| IF GT_DATA-GUBUN EQ C_R. + 519| GV_XNEGP = C_X. + 520| ENDIF. + 521| * 전표 아이템 + 522| PERFORM MAKE_BSEG USING GV_XNEGP. + 523| * 전표생성 Function Call + 524| PERFORM BDC_TRANSACTION_FB01. + 525| CLEAR GT_Z0110_S-PRCHK. + 526| APPEND GT_Z0110_S. CLEAR GT_Z0110_S. + 527| APPEND GT_RESULT. CLEAR GT_RESULT. + 528| ENDLOOP. + 529| + 530| * 처리결과 전송(상태 및 메시지 업데이트) + 531| PERFORM SEND_CLEARING_INFO. + 532| + 533| PERFORM GET_DATA. +``` + +- **EN**: For each selected row builds header and line items (negative posting for reversals), posts via FB01 BDC, then sends the results back and refreshes the list. +- 호출(파서): MAKE_BKPF, MAKE_BSEG, BDC_TRANSACTION_FB01, SEND_CLEARING_INFO, GET_DATA +- SAP 객체: FB01, ZFIT0110, GT_RESULT +- 업무 키워드: 재전기, 전표 생성, 마이너스 전기, 결과 송신, 카드채권 반제 +- English: Repost, Document Creation, Negative Posting, FB01 +- 정의부(복사 시 함께 필요): [`GT_ROWS`](#decl-zficom-121-gt_rows), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s), [`GV_XNEGP`](#decl-zfir0061top-70-gv_xnegp), [`GT_DATA`](#decl-zfir0061top-14-gt_data), [`GT_RESULT`](#decl-zfir0061top-29-gt_result), [`C_R`](#decl-zficom-225-c_r), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L506-L533` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#POSTING_DOCUMET#C3` + +### FORM MAKE_BKPF — `ZFIR0061F01` L543-L556 (14줄) + +*카드채권 반제 전표 헤더(FB01, 증빙일·전기일=입금일, 전표유형 C_BLART, 회사코드, 통화, 헤더텍스트)를 GT_BBKPF 에 생성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 9/14줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 입금일(PYDAT)을 증빙일·전기일로, 카드채권 반제 전표유형(C_BLART)·회사코드·통화·거래내역 헤더텍스트를 세팅해 FB01 BDC 용 전표 헤더 GT_BBKPF 를 만든다. + +```abap + 546| GT_BBKPF-TCODE = 'FB01'. + 547| GT_BBKPF-BLDAT = GT_Z0110_S-PYDAT. "입금일 + 548| GT_BBKPF-BUDAT = GT_Z0110_S-PYDAT. "입금일 + 549| GT_BBKPF-BLART = C_BLART. "카드채권 반제 + 550| GT_BBKPF-BUKRS = GT_Z0110_S-BUKRS. + 551| GT_BBKPF-WAERS = GT_Z0110_S-WAERS. + 552| GT_BBKPF-BKTXT = GT_Z0110_S-SGTXT(25). "거래내역 + 553| + 554| APPEND GT_BBKPF. +``` + +- **EN**: Fills the FB01 document header (document/posting date = payment date, document type, company code, currency, header text) into GT_BBKPF. +- SAP 객체: BBKPF, FB01, GT_Z0110_S +- 업무 키워드: 전표 헤더, 전기일, 전표유형, 카드채권 반제 +- English: Document Header, Posting Date, Document Type +- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s), [`C_BLART`](#decl-zfir0061top-81-c_blart) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L546-L554` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#MAKE_BKPF#C1` + +### FORM MAKE_BSEG — `ZFIR0061F01` L564-L665 (102줄) + +*카드채권 반제 전표의 라인아이템(예수금 입금액, 카드사 채권 반제, 카드수수료, 무이자수수료, 잡손실, 잡이익)을 마이너스 전기 지시자에 따라 전기키를 바꿔 GT_BBSEG 에 생성하는 FORM 이다.* + +> 이 unit 의 조각 2개가 96/102줄(94%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 입금액(AMT1)을 예수금_기타 계정 0021337901 에 전기키 40(취소 50)으로, 채권반제금액(AMT2)을 카드사 고객(KUNNR) 전기키 15(취소 05)·기타매출채권 GL 0011217901 로 세팅해 손익센터·지정·적요와 함께 GT_BBSEG 에 추가한다. + +```abap + 567| * 라인아이템 1 - 입금액 + 568| IF P_XNEGP EQ C_X. + 569| GT_BBSEG-NEWBS = '50'. "전기키 + 570| ELSE. + 571| GT_BBSEG-NEWBS = '40'. "전기키 + 572| ENDIF. + 573| GT_BBSEG-NEWKO = '0021337901'. "계정-예수금_기타 + 574| GT_BBSEG-WRBTR = GT_Z0110_S-AMT1. "금액 + 575| GT_BBSEG-ZUONR = GT_Z0110_S-PYDAT. "지정 - 입금일 + 576| GT_BBSEG-PRCTR = GT_Z0110_S-PRCTR. "손익센터 + 577| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 578| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 579| + 580| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 581| + 582| * 라인아이템 2 - 채권반제금액 + 583| IF P_XNEGP EQ C_X. + 584| GT_BBSEG-NEWBS = '05'. "전기키 + 585| ELSE. + 586| GT_BBSEG-NEWBS = '15'. "전기키 + 587| ENDIF. + 588| GT_BBSEG-NEWKO = GT_Z0110_S-KUNNR. "카드사 고객코드 + 589| GT_BBSEG-HKONT = '0011217901'. "GL계정 - 기타매출채권_CREDIT_카드사 + 590| GT_BBSEG-WRBTR = GT_Z0110_S-AMT2. "채권반제금액 + 591| GT_BBSEG-ZUONR = GT_Z0110_S-ARDAT. "지정 - 채권발생일 + 592| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 593| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 594| + 595| APPEND GT_BBSEG. CLEAR GT_BBSEG. +``` + +- **EN**: Builds the deposit-received line (AMT1 on G/L 0021337901, key 40/50) and the card-company customer clearing line (AMT2, key 15/05 with special G/L 0011217901) with assignment, profit center and text. +- SAP 객체: BBSEG, GT_Z0110_S +- 업무 키워드: 카드채권 반제, 입금액, 예수금, 카드사 고객, 전기키 +- English: Card Receivable Clearing, Incoming Payment, Customer Line, Posting Key +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L567-L595` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#MAKE_BSEG#C1` + +#### [calculation] 금액이 있을 때만 카드수수료(AMT3, 0053310301)·무이자수수료(AMT4, 0053310307)·잡손실(AMT5, 0057797905)은 전기키 40(취소 50), 잡이익(AMT6, 0055797901)은 전기키 50(취소 40)으로 코스트센터·입금일 지정·적요를 붙여 GT_BBSEG 에 추가한다. + +```abap + 597| * 라인아이템 3 - 수수료 + 598| IF GT_Z0110-AMT3 IS NOT INITIAL. + 599| IF P_XNEGP EQ C_X. + 600| GT_BBSEG-NEWBS = '50'. "전기키 + 601| ELSE. + 602| GT_BBSEG-NEWBS = '40'. "전기키 + 603| ENDIF. + 604| GT_BBSEG-NEWKO = '0053310301'. "지급수수료_카드수수료_신용카드 + 605| GT_BBSEG-WRBTR = GT_Z0110_S-AMT3. "수수료 + 606| GT_BBSEG-ZUONR = GT_Z0110_S-PYDAT. "지정 - 입금일 + 607| GT_BBSEG-KOSTL = GT_Z0110_S-KOSTL. "코스트센터 + 608| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 609| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 610| + 611| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 612| ENDIF. + 613| + 614| * 라인아이템 4 - 무이자 수수료 + 615| IF GT_Z0110-AMT4 IS NOT INITIAL. + 616| IF P_XNEGP EQ C_X. + 617| GT_BBSEG-NEWBS = '50'. "전기키 + 618| ELSE. + 619| GT_BBSEG-NEWBS = '40'. "전기키 + 620| ENDIF. + 621| GT_BBSEG-NEWKO = '0053310307'. "지급수수료_카드수수료_무이자 + 622| GT_BBSEG-WRBTR = GT_Z0110_S-AMT4. "무이자 수수료 + 623| GT_BBSEG-ZUONR = GT_Z0110_S-PYDAT. "지정 - 입금일 + 624| GT_BBSEG-KOSTL = GT_Z0110_S-KOSTL. "코스트센터 + 625| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 626| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 627| + 628| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 629| ENDIF. + 630| + 631| * 라인아이템 5 - 잡손실 + 632| IF GT_Z0110-AMT5 IS NOT INITIAL. + 633| IF P_XNEGP EQ C_X. + 634| GT_BBSEG-NEWBS = '50'. "전기키 + 635| ELSE. + 636| GT_BBSEG-NEWBS = '40'. "전기키 + 637| ENDIF. + 638| GT_BBSEG-NEWKO = '0057797905'. "잡손실_기타 + 639| GT_BBSEG-WRBTR = GT_Z0110_S-AMT5. "잡손실 + 640| GT_BBSEG-ZUONR = GT_Z0110_S-PYDAT. "지정 - 입금일 + 641| GT_BBSEG-KOSTL = GT_Z0110_S-KOSTL. "코스트센터 + 642| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 643| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 644| + 645| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 646| ENDIF. + 647| + 648| * 라인아이템 6 - 잡이익 + 649| IF GT_Z0110-AMT6 IS NOT INITIAL. + 650| IF P_XNEGP EQ C_X. + 651| GT_BBSEG-NEWBS = '40'. "전기키 + 652| ELSE. + 653| GT_BBSEG-NEWBS = '50'. "전기키 + 654| ENDIF. + 655| GT_BBSEG-NEWKO = '0055797901'. "잡이익_기타 + 656| GT_BBSEG-WRBTR = GT_Z0110_S-AMT6. "잡이익 + 657| GT_BBSEG-ZUONR = GT_Z0110_S-PYDAT. "지정 - 입금일 + 658| GT_BBSEG-KOSTL = GT_Z0110_S-KOSTL. "코스트센터 + 659| GT_BBSEG-SGTXT = GT_Z0110_S-SGTXT. "적요 + 660| GT_BBSEG-XNEGP = P_XNEGP. "마이너스전기지시자 + 661| + 662| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 663| ENDIF. +``` + +- **EN**: Adds optional lines for card fee, interest-free fee, miscellaneous loss (key 40/50) and miscellaneous gain (key 50/40) on their fixed G/L accounts with cost center and assignment. +- SAP 객체: BBSEG, GT_Z0110_S +- 업무 키워드: 카드수수료, 무이자수수료, 잡손실, 잡이익, 코스트센터 +- English: Card Fee, Miscellaneous Loss, Miscellaneous Gain, Cost Center +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110`](#decl-zfir0061top-27-gt_z0110), [`C_X`](#decl-zficom-231-c_x), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L597-L663` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#MAKE_BSEG#C2` + +### FORM BDC_TRANSACTION_FB01 — `ZFIR0061F01` L671-L738 (68줄) + +*Z_FI_DOCUMENT_POSTING 으로 FB01 BDC 전기를 수행하고 성공 시 전표번호·연도, 실패 시 오류 메시지를 GT_Z0110_S 와 재전송용 GT_RESULT 에 기록하는 FORM 이다.* + +> 이 unit 의 조각 3개가 59/68줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 전표 헤더(GT_BBKPF)·아이템(GT_BBSEG)을 넘겨 Z_FI_DOCUMENT_POSTING 으로 FB01 BDC 전기를 실행하고 전표번호·회계연도·회사코드와 메시지 테이블을 받는다. + +```abap + 675| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 676| EXPORTING + 677| I_BDC_MODE = GV_MODE + 678| I_MESSAGE = SPACE + 679| IMPORTING + 680| E_BELNR = GV_BELNR + 681| E_GJAHR = GV_GJAHR + 682| E_BUKRS = GV_BUKRS + 683| TABLES + 684| T_BBKPF = GT_BBKPF + 685| T_BBSEG = GT_BBSEG + 686| T_MESSTAB = GT_FIMSG. +``` + +- **EN**: Posts the FI document via Z_FI_DOCUMENT_POSTING (FB01 BDC) with header and line-item tables, returning document number, fiscal year and messages. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, FB01, BBKPF, BBSEG +- 업무 키워드: 전표 전기, BDC, FB01, 카드채권 반제 +- English: Document Posting, BDC, FB01 +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L675-L686` · confidence 0.95 · `ZFIR0061#ZFIR0061F01#FORM#BDC_TRANSACTION_FB01#C1` + +#### [validation] 전표번호가 생성되면 상태 S 와 전표번호·연도를 기록하고, 실패면 상태 E 로 두고 E/A 타입 메시지를 찾아 MESSAGE_TEXT_BUILD 로 오류 텍스트를 만들어 MESSG 에 저장한다. + +```abap + 688| IF GV_BELNR NE SPACE. + 689| GT_Z0110_S-GJAHR = GV_GJAHR. + 690| GT_Z0110_S-BELNR = GV_BELNR. + 691| GT_Z0110_S-STATS = C_S. + 692| ELSE. + 693| GT_Z0110_S-STATS = C_E. + 694| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 695| IF SY-SUBRC <> 0. + 696| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 697| ENDIF. + 698| IF GT_FIMSG IS INITIAL. + 699| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 700| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 701| READ TABLE GT_MESS INDEX GV_INDEX. + 702| IF SY-SUBRC EQ 0. + 703| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 704| EXPORTING + 705| MSGID = GT_FIMSG-MSGID + 706| MSGNR = GT_FIMSG-MSGNO + 707| MSGV1 = GT_FIMSG-MSGV1 + 708| MSGV2 = GT_FIMSG-MSGV2 + 709| MSGV3 = GT_FIMSG-MSGV3 + 710| MSGV4 = GT_FIMSG-MSGV4 + 711| IMPORTING + 712| MESSAGE_TEXT_OUTPUT = GT_Z0110_S-MESSG. + 713| ENDIF. + 714| ELSE. + 715| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 716| EXPORTING + 717| MSGID = GT_FIMSG-MSGID + 718| MSGNR = GT_FIMSG-MSGNO + 719| MSGV1 = GT_FIMSG-MSGV1 + 720| MSGV2 = GT_FIMSG-MSGV2 + 721| MSGV3 = GT_FIMSG-MSGV3 + 722| MSGV4 = GT_FIMSG-MSGV4 + 723| IMPORTING + 724| MESSAGE_TEXT_OUTPUT = GT_Z0110_S-MESSG. + 725| ENDIF. + 726| ENDIF. +``` + +- **EN**: Sets status S with document number on success, otherwise status E and builds the error text from the E/A message via MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD +- 업무 키워드: 전기 결과 판정, 오류 메시지, 상태 코드 +- English: Posting Result, Error Message, Status +- 정의부(복사 시 함께 필요): [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`C_S`](#decl-zficom-226-c_s), [`C_E`](#decl-zficom-212-c_e), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L688-L726` · confidence 0.85 · `ZFIR0061#ZFIR0061F01#FORM#BDC_TRANSACTION_FB01#C2` + +#### [other] 변경 일시·사용자를 기록하고 전표번호·연도·상태·메시지를 재전송용 GT_RESULT 에 복사한다. + +```abap + 729| GT_Z0110_S-UDATE = SY-DATUM. + 730| GT_Z0110_S-UTIME = SY-UZEIT. + 731| GT_Z0110_S-UNAME = SY-UNAME. + 732| * 재전송 + 733| GT_RESULT-BELNR = GT_Z0110_S-BELNR. + 734| GT_RESULT-GJAHR = GT_Z0110_S-GJAHR. + 735| GT_RESULT-STATS = GT_Z0110_S-STATS. + 736| GT_RESULT-MESSG = GT_Z0110_S-MESSG. +``` + +- **EN**: Stamps change log fields and copies document number, year, status and message into the result table for re-sending. +- SAP 객체: GT_RESULT +- 업무 키워드: 변경 로그, 재전송 결과 +- English: Change Log, Result Table +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s), [`GT_RESULT`](#decl-zfir0061top-29-gt_result) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L729-L736` · confidence 0.8 · `ZFIR0061#ZFIR0061F01#FORM#BDC_TRANSACTION_FB01#C3` + +### FORM SEND_CLEARING_INFO — `ZFIR0061F01` L744-L798 (55줄) + +*재전기 결과를 인터페이스 로그 키와 함께 ZFIT0110 에 저장하고 RFC Z_FI_SAVE_CLEARING_RETURN 으로 카드채권 반제 처리결과를 원천 시스템에 송신하는 FORM 이다.* + +> 이 unit 의 조각 3개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] Z_IF_GET_UNQKEY 로 FI 모듈 인터페이스 공통 로그 고유키(ZIFS0010)를 발급받고 오류 메시지가 있으면 처리를 중단한다. + +```abap + 754| CALL FUNCTION 'Z_IF_GET_UNQKEY' + 755| EXPORTING + 756| I_PGMID = SY-REPID + 757| I_MODUL = 'FI' + 758| IMPORTING + 759| E_MESSG = LV_MESSG + 760| ES_CMLOG = LS_CMLOG. + 761| + 762| IF LV_MESSG NE SPACE. + 763| MESSAGE S000 WITH LV_MESSG DISPLAY LIKE C_E. + 764| LEAVE LIST-PROCESSING. + 765| ELSE. + 766| APPEND LS_CMLOG TO LT_CMLOG. + 767| ENDIF. +``` + +- **EN**: Obtains the interface common-log unique key via Z_IF_GET_UNQKEY and aborts on error. +- 호출(파서): Z_IF_GET_UNQKEY +- SAP 객체: Z_IF_GET_UNQKEY, ZIFS0010 +- 업무 키워드: 인터페이스 로그, 고유키 발급 +- English: Interface Log, Unique Key +- 정의부(복사 시 함께 필요): [`LV_MESSG`](#decl-zfir0061f01-748-lv_messg), [`LS_CMLOG`](#decl-zfir0061f01-747-ls_cmlog), [`C_E`](#decl-zficom-212-c_e), [`LT_CMLOG`](#decl-zfir0061f01-746-lt_cmlog) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L754-L767` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#SEND_CLEARING_INFO#C1` + +#### [db_write] 재전기 대상 건(GT_Z0110_S)에 로그 고유키 UNQID 를 채운 뒤 MODIFY ZFIT0110 으로 카드채권 반제 I/F 이력 CBO 테이블을 갱신한다. + +```abap + 770| IF GT_Z0110_S[] IS NOT INITIAL. + 771| GT_Z0110_S-UNQID = LS_CMLOG-UNQID. + 772| MODIFY GT_Z0110_S TRANSPORTING UNQID + 773| WHERE UNQID EQ SPACE. + 774| + 775| MODIFY ZFIT0110 FROM TABLE GT_Z0110_S. + 776| ENDIF. +``` + +- **EN**: Stamps the log unique ID on the reposted rows and updates the card-receivable clearing history table ZFIT0110. +- 테이블(파서): read - / write [ZFIT0110](/tables/ZFIT0110.md) +- SAP 객체: ZFIT0110 +- 업무 키워드: I/F 이력 갱신, CBO 테이블, 고유키 +- English: CBO Table Update, Interface History +- 정의부(복사 시 함께 필요): [`ZFIT0110`](#decl-zfir0061top-8-zfit0110), [`GT_Z0110_S`](#decl-zfir0061top-28-gt_z0110_s), [`LS_CMLOG`](#decl-zfir0061f01-747-ls_cmlog) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L770-L776` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#SEND_CLEARING_INFO#C2` + +#### [interface] RFC 목적지 ZFI01 로 Z_FI_SAVE_CLEARING_RETURN 을 호출해 전표번호·상태·메시지(GT_RESULT)를 원천 시스템에 송신하고 성공/실패 메시지를 표시한다. + +```abap + 779| CALL FUNCTION 'Z_FI_SAVE_CLEARING_RETURN' + 780| DESTINATION 'ZFI01' + 781| TABLES + 782| IT_RESULT = GT_RESULT + 783| IT_CMLOG = LT_CMLOG + 784| EXCEPTIONS + 785| SYSTEM_FAILURE = 1 + 786| COMMUNICATION_FAILURE = 2 + 787| OTHERS = 3. + 788| IF SY-SUBRC EQ 0. + 789| ** CBO테이블 업데이트 + 790| * MODIFY ZFIT0110 FROM TABLE GT_Z0110. + 791| + 792| MESSAGE S000 WITH '성공적으로 저장하였습니다.'. + 793| ELSE. + 794| MESSAGE S000 WITH '데이터 전송 중 오류가 발생했습니다.' + 795| DISPLAY LIKE C_E. + 796| ENDIF. +``` + +- **EN**: Sends the clearing result (document number, status, message) to the source system via RFC Z_FI_SAVE_CLEARING_RETURN on destination ZFI01. +- 호출(파서): Z_FI_SAVE_CLEARING_RETURN +- SAP 객체: Z_FI_SAVE_CLEARING_RETURN, ZFI01 +- 업무 키워드: 처리결과 송신, 카드채권 반제, RFC, 상태 전송 +- English: RFC Outbound, Clearing Result, Interface +- 정의부(복사 시 함께 필요): [`GT_RESULT`](#decl-zfir0061top-29-gt_result), [`LT_CMLOG`](#decl-zfir0061f01-746-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0061/ZFIR0061F01#L779-L796` · confidence 0.9 · `ZFIR0061#ZFIR0061F01#FORM#SEND_CLEARING_INFO#C3` + +## 정의부 (313건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0061CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0061cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfir0061cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0061TOP` (30건) + +#### TKA02 — tables · L8-L8 {#decl-zfir0061top-8-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0110, TKA02. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0061top-8-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0110, TKA02. +``` + +#### ZFIT0110 — tables · L8-L8 {#decl-zfir0061top-8-zfit0110} + +```abap +TABLES: ZFIT0040, ZFIT0110, TKA02. +``` + +#### GT_DATA — data · L14-L25 {#decl-zfir0061top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0110. +DATA: CICON LIKE ICON-ID, "상태아이콘 + GUBUN_T LIKE DD07T-DDTEXT, "발생/취소 + GSBER_T LIKE TGSBT-GTEXT, "사업영역명 + PRCTR_T LIKE CEPCT-LTEXT, "손익센터명 + AUFNR_T LIKE AUFK-KTEXT , "오더명 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + KUNNR_T LIKE KNA1-NAME1, "고객명 + KUNNR2_T LIKE KNA1-NAME1, "지점고객명 + END OF GT_DATA. +``` + +#### GT_Z0110 — data · L27-L27 {#decl-zfir0061top-27-gt_z0110} + +```abap +DATA: GT_Z0110 LIKE ZFIT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0110_S — data · L28-L28 {#decl-zfir0061top-28-gt_z0110_s} + +```abap +DATA: + GT_Z0110_S LIKE ZFIT0110 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RESULT — data · L29-L29 {#decl-zfir0061top-29-gt_result} + +```abap +DATA: + GT_RESULT LIKE ZFIS0101 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_TGSBT — data · L32-L35 {#decl-zfir0061top-32-gt_tgsbt} + +```abap +DATA: BEGIN OF GT_TGSBT OCCURS 0, + GSBER LIKE TGSBT-GSBER, + GTEXT LIKE TGSBT-GTEXT, + END OF GT_TGSBT. +``` + +#### GT_CEPCT — data · L37-L40 {#decl-zfir0061top-37-gt_cepct} + +```abap +DATA: BEGIN OF GT_CEPCT OCCURS 0, + PRCTR LIKE CEPCT-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPCT. +``` + +#### GT_AUFK — data · L42-L45 {#decl-zfir0061top-42-gt_aufk} + +```abap +DATA: BEGIN OF GT_AUFK OCCURS 0, + AUFNR LIKE AUFK-AUFNR, + KTEXT LIKE AUFK-KTEXT, + END OF GT_AUFK. +``` + +#### GT_CSKT — data · L47-L50 {#decl-zfir0061top-47-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + LTEXT LIKE CSKT-LTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L52-L55 {#decl-zfir0061top-52-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_KNA1 — data · L57-L60 {#decl-zfir0061top-57-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_DOMAIN — data · L62-L66 {#decl-zfir0061top-62-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L68-L68 {#decl-zfir0061top-68-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0110-STATS. +``` + +#### GV_XNEGP — data · L70-L70 {#decl-zfir0061top-70-gv_xnegp} + +```abap +DATA: GV_XNEGP LIKE BSEG-XNEGP. +``` + +#### GS_STABLE — data · L73-L73 {#decl-zfir0061top-73-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L74-L74 {#decl-zfir0061top-74-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L75-L75 {#decl-zfir0061top-75-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L76-L76 {#decl-zfir0061top-76-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### C_BLART — constants · L81-L81 {#decl-zfir0061top-81-c_blart} + +```abap +CONSTANTS: C_BLART LIKE BKPF-BLART VALUE '18'. "카드채권 반제 +``` + +#### P_BUKRS — parameter · L88-L88 {#decl-zfir0061top-88-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### S_TRDAT — select-option · L89-L89 {#decl-zfir0061top-89-s_trdat} + +```abap +SELECT-OPTIONS: S_TRDAT FOR ZFIT0110-TRDAT OBLIGATORY. +``` + +#### S_PRCTR — select-option · L90-L90 {#decl-zfir0061top-90-s_prctr} + +```abap +SELECT-OPTIONS: + S_PRCTR FOR ZFIT0110-PRCTR OBLIGATORY. +``` + +#### S_PYDAT — select-option · L91-L91 {#decl-zfir0061top-91-s_pydat} + +```abap +SELECT-OPTIONS: + S_PYDAT FOR ZFIT0110-PYDAT. +``` + +#### S_ARDAT — select-option · L92-L92 {#decl-zfir0061top-92-s_ardat} + +```abap +SELECT-OPTIONS: + S_ARDAT FOR ZFIT0110-ARDAT. +``` + +#### S_KUNNR — select-option · L93-L93 {#decl-zfir0061top-93-s_kunnr} + +```abap +SELECT-OPTIONS: + S_KUNNR FOR ZFIT0110-KUNNR. +``` + +#### P_RA — parameter · L99-L99 {#decl-zfir0061top-99-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . "전체 +``` + +#### P_RS — parameter · L101-L101 {#decl-zfir0061top-101-p_rs} + +```abap +PARAMETERS: P_RS RADIOBUTTON GROUP G1. "완료 +``` + +#### P_RE — parameter · L103-L103 {#decl-zfir0061top-103-p_re} + +```abap +PARAMETERS: P_RE RADIOBUTTON GROUP G1. "오류 +``` + +### `ZFIR0061F01` (4건) + +#### LV_CNT — data · unit 로컬 · L468-L468 {#decl-zfir0061f01-468-lv_cnt} + +```abap + DATA: LV_CNT(3) TYPE N. +``` + +#### LT_CMLOG — data · unit 로컬 · L746-L746 {#decl-zfir0061f01-746-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +#### LS_CMLOG — data · unit 로컬 · L747-L747 {#decl-zfir0061f01-747-ls_cmlog} + +```abap + DATA: LS_CMLOG LIKE ZIFS0010. +``` + +#### LV_MESSG — data · unit 로컬 · L748-L748 {#decl-zfir0061f01-748-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0061 L32-51 | 0 | ALV 초기 설정과 도메인 텍스트를 준비하고 거래일자 선택조건 기본값을 오늘로 세팅하는 INITIALIZATION 이벤트 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0061 L52-60 | 0 | 회사코드 권한 체크(AUTHORITY_BUKRS) 후 GET_DATA 로 이력을 조회하는 START-OF-SELECTION 이벤트 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0061 L61-67 | 0 | 조회 결과가 없으면 메시지 후 종료하고 있으면 ALV 화면 0100 을 호출하는 END-OF-SELECTION 이벤트 블록이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0061CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DOMAIN | FORM | ZFIR0061F01 L9-22 | 1 | DD07T 에서 발생/취소 구분 도메인 ZDGUBUN 의 고정값 텍스트를 GT_DOMAIN 에 읽는 FORM 이다. | +| GET_DATA | FORM | ZFIR0061F01 L28-36 | 0 | GET_ZFIT0110 으로 카드채권 반제 I/F 이력을 추출하고 DISPLAY_DATA 로 표시 데이터를 만드는 디스패치 FORM 이다. | +| GET_ZFIT0110 | FORM | ZFIR0061F01 L42-128 | 2 | 카드채권 반제 인터페이스 이력을 처리상태·일자 조건으로 읽고 조직단위·고객 텍스트를 붙인다. | +| DISPLAY_DATA | FORM | ZFIR0061F01 L134-196 | 1 | ZFIT0110 이력 각 건에 상태 아이콘과 발생취소·코스트센터·손익센터·오더·사업장·고객 텍스트를 붙여 ALV 표시용 GT_DATA 를 만들고 거래일자·순번으로 정렬하는 FORM 이다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0061F01 L202-234 | 0 | 컨테이너 C_0100 과 ALV 그리드를 생성하고 핫스팟 이벤트 핸들러를 등록한 뒤 레이아웃·툴바제외·표시 FORM 을 호출하는 플러밍 FORM 이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0061F01 L240-250 | 0 | ALV 레이아웃(열너비 최적화·선택모드·줄무늬)을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0061F01 L256-271 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0061F01 L277-423 | 0 | GT_DATA 구조의 필드카탈로그를 FIELDCATALOG_CALL 로 생성한 뒤 컬럼 텍스트·정렬·핫스팟(고객·전표번호)·통화참조·컬럼 위치를 지정하는 ALV 필드카탈로그 설정 FORM 이다. | +| HOTSPOT_CLICK | FORM | ZFIR0061F01 L432-460 | 1 | ALV 핫스팟 클릭 시 고객/지점고객 코드는 FD03 고객 조회로, 전표번호는 FB03 전표 조회로 이동하는 FORM이다. | +| POSTING_DOCUMET | FORM | ZFIR0061F01 L466-537 | 3 | ALV 에서 선택한 미전기 카드채권 반제 건을 검증·확인 팝업 후 전표 헤더·아이템을 만들어 FB01 BDC 로 재전기하고 결과를 송신한 뒤 재조회하는 FORM 이다. | +| MAKE_BKPF | FORM | ZFIR0061F01 L543-556 | 1 | 카드채권 반제 전표 헤더(FB01, 증빙일·전기일=입금일, 전표유형 C_BLART, 회사코드, 통화, 헤더텍스트)를 GT_BBKPF 에 생성하는 FORM 이다. | +| MAKE_BSEG | FORM | ZFIR0061F01 L564-665 | 2 | 카드채권 반제 전표의 라인아이템(예수금 입금액, 카드사 채권 반제, 카드수수료, 무이자수수료, 잡손실, 잡이익)을 마이너스 전기 지시자에 따라 전기키를 바꿔 GT_BBSEG 에 생성하는 FORM 이다. | +| BDC_TRANSACTION_FB01 | FORM | ZFIR0061F01 L671-738 | 3 | Z_FI_DOCUMENT_POSTING 으로 FB01 BDC 전기를 수행하고 성공 시 전표번호·연도, 실패 시 오류 메시지를 GT_Z0110_S 와 재전송용 GT_RESULT 에 기록하는 FORM 이다. | +| SEND_CLEARING_INFO | FORM | ZFIR0061F01 L744-798 | 3 | 재전기 결과를 인터페이스 로그 키와 함께 ZFIT0110 에 저장하고 RFC Z_FI_SAVE_CLEARING_RETURN 으로 카드채권 반제 처리결과를 원천 시스템에 송신하는 FORM 이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0061I01 L9-17 | 0 | 화면 0100 에서 EXEC(전표 재생성) 명령 시 POSTING_DOCUMET 을 호출하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0061O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0061O01 L21-35 | 0 | | diff --git a/wiki/programs/ZFIR0070.md b/wiki/programs/ZFIR0070.md new file mode 100644 index 0000000..244405a --- /dev/null +++ b/wiki/programs/ZFIR0070.md @@ -0,0 +1,3909 @@ +--- +type: abap-program +title: "ZFIR0070 — 수불부-상품 I/F 이력 조회" +description: "상품 수불부(재고 입출고 내역) 인터페이스 이력을 조회하는 리포트다. 상품(ZFIT0120)·자가소비(ZFIT0122)·지점(ZFIT0123) 세 종류의 수불 인터페이스 테이블을 함께 읽어 헤더/상세 2단 ALV(스플리터)로 보여준다. 마커 ID 와 회사코드로 걸러 수불 연계 누락·오류를 확인하는 운영 화면이다." +resource: "abap://ZFIR0070" +tags: ["인터페이스", "수불부", "재고", "리포트", "FI", "지점", "사업장", "매장유형", "기준년월", "매핑", "조직단위", "중복제거", "집계", "지점별", "상품별", "합산", "번호범위", "채번", "일련번호", "키생성"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:20+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LTDX", "SKAT", "T001", "T007S", "USR01", "V_USERNAME", "ZCOT0130", "ZFIT0040", "ZFIT0120", "ZFIT0122", "ZFIT0123", "ZFIT0160"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "1a56e3245c1ff984ca637bff12b229d2701cebbf398171d9a678bbaea47c6e9e" +x-unit-count: 100 +x-chunk-count: 44 +x-declaration-count: 305 +--- + +## 업무 목적 + +상품 수불부(재고 입출고 내역) 인터페이스 이력을 조회하는 리포트다. 상품(ZFIT0120)·자가소비(ZFIT0122)·지점(ZFIT0123) 세 종류의 수불 인터페이스 테이블을 함께 읽어 헤더/상세 2단 ALV(스플리터)로 보여준다. 마커 ID 와 회사코드로 걸러 수불 연계 누락·오류를 확인하는 운영 화면이다. + +## 주 흐름 + +1. ALV 설정을 준비한다 (ALV_SETTING) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 상품 수불 인터페이스 이력을 추출한다 (GET_ZFIT0120) +4. 자가소비내역과 지점 수불 이력을 함께 추출한다 (GET_ZFIT0122 → GET_ZFIT0123) +5. 표시용 데이터를 취합한다 (DISPLAY_DATA) +6. 스플리터 컨테이너에 2단 ALV 로 화면 0100 에 출력한다 (SPLITTER_CONTAINER → ALV_GRID_DISPLAY1/2) + +## 핵심 내부테이블 + +- `GT_DATA` — 수불부 인터페이스 이력 통합 (채움: GET_ZFIT0120, GET_ZFIT0122, GET_ZFIT0123 / 소비: DISPLAY_DATA) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LTDX, SKAT, T001, T007S, USR01, V_USERNAME, ZCOT0130, ZFIT0040, ZFIT0120, ZFIT0122, ZFIT0123, ZFIT0160 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (44건 / unit 38개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIR0070` L43-L51 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 45| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 46| + 47| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs) +- 위치: `abap://ZFIR0070/ZFIR0070#L45-L47` · confidence 0.8 · `ZFIR0070#ZFIR0070#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0070/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0070#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_DATA — `ZFIR0070F01` L9-L25 (17줄) + +*상품(ZFIT0120)→자가소비(ZFIT0122)→지점(ZFIT0123) I/F 이력을 순서대로 추출하고 DISPLAY_DATA 로 취합하는 데이터 조회 디스패치 FORM이다.* + +> 이 unit 의 조각 1개가 12/17줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_ZFIT0120 으로 상품 I/F 이력을 읽고 결과가 있을 때만 GET_ZFIT0122(자가소비)·GET_ZFIT0123(지점) 이력을 추가 추출한 뒤 DISPLAY_DATA 로 표시 데이터를 만든다. + +```abap + 12| PERFORM GET_ZFIT0120. + 13| + 14| CHECK GT_Z0120[] IS NOT INITIAL. + 15| + 16| * 수불부 - 자가소비내역 I/F 이력 추출 + 17| PERFORM GET_ZFIT0122. + 18| + 19| * 수불부-지점 interface 이력 추출 + 20| PERFORM GET_ZFIT0123. + 21| + 22| * Display Data + 23| PERFORM DISPLAY_DATA. +``` + +- **EN**: Extract product interface history first, and only if found extract own-consumption and branch history, then build display data. +- 호출(파서): GET_ZFIT0120, GET_ZFIT0122, GET_ZFIT0123, DISPLAY_DATA +- SAP 객체: ZFIT0120, ZFIT0122, ZFIT0123 +- 업무 키워드: 데이터 조회 순서, 수불 이력, 자가소비, 지점 이력 +- English: data extraction, interface history +- 정의부(복사 시 함께 필요): [`ZFIT0120`](#decl-zfir0070top-8-zfit0120), [`GT_Z0120`](#decl-zfir0070top-174-gt_z0120) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L12-L23` · confidence 0.8 · `ZFIR0070#ZFIR0070F01#FORM#GET_DATA#C1` + +### FORM GET_ZFIT0120 — `ZFIR0070F01` L31-L49 (19줄) + +*회사코드·발생년월·마커·품목·상품·조직·담당자 조건으로 수불부-상품 I/F 이력 ZFIT0120 을 조회해 GT_Z0120 에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 14/19줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드 T001 을 읽은 뒤 ZFIT0120(수불부-상품 인터페이스 이력)을 회사코드·발생년월(P_OCCYM)·마커 ID·품목코드·상품 ID·조직·담당자 선택조건으로 조회해 GT_Z0120 에 적재한다. + +```abap + 34| SELECT SINGLE * + 35| FROM T001 + 36| WHERE BUKRS EQ P_BUKRS. + 37| + 38| SELECT * + 39| INTO TABLE GT_Z0120 + 40| FROM ZFIT0120 + 41| WHERE BUKRS EQ P_BUKRS + 42| AND OCCR_YM EQ P_OCCYM + 43| AND MKR_ID IN S_MKRID + 44| AND ITEM_CD IN S_ITEMCD + 45| AND PRD_ID IN S_PRDID + 46| AND ORG_ID IN S_ORGID + 47| AND CHRGR_ID IN S_CHRGR. +``` + +- **EN**: Read T001 for the company code and select product interface history from ZFIT0120 by company code, occurrence month, maker ID, item code, product ID, org ID and person in charge. +- 테이블(파서): read [T001](/tables/T001.md), [ZFIT0120](/tables/ZFIT0120.md) / write - +- SAP 객체: ZFIT0120, T001 +- 업무 키워드: 수불부 인터페이스, 상품 이력, 마커 ID, 발생년월, 조회 조건 +- English: interface history, goods movement ledger, selection +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs), [`ZFIT0120`](#decl-zfir0070top-8-zfit0120), [`GT_Z0120`](#decl-zfir0070top-174-gt_z0120), [`P_OCCYM`](#decl-zfir0070top-214-p_occym), [`S_MKRID`](#decl-zfir0070top-215-s_mkrid), [`S_ITEMCD`](#decl-zfir0070top-216-s_itemcd), [`S_PRDID`](#decl-zfir0070top-217-s_prdid), [`S_ORGID`](#decl-zfir0070top-218-s_orgid), [`S_CHRGR`](#decl-zfir0070top-219-s_chrgr) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L34-L47` · confidence 0.95 · `ZFIR0070#ZFIR0070F01#FORM#GET_ZFIT0120#C1` + +### FORM GET_ZFIT0122 — `ZFIR0070F01` L55-L81 (27줄) + +*상품 I/F 이력(GT_Z0120)의 상품 ID 기준으로 자가소비 I/F 이력 ZFIT0122 와 지점-사업장 매핑 ZFIT0040 을 조회하는 FORM이다.* + +> 이 unit 의 조각 2개가 20/27줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드 T001 을 확인한 뒤 ZFIT0122(수불부 자가소비내역 I/F)를 회사코드·발생년월(P_OCCYM)·상품 ID(GT_Z0120 FOR ALL ENTRIES)로 읽어 GT_Z0122 에 적재한다. + +```abap + 59| SELECT SINGLE * + 60| FROM T001 + 61| WHERE BUKRS EQ P_BUKRS. + 62| + 63| SELECT * + 64| INTO TABLE GT_Z0122 + 65| FROM ZFIT0122 + 66| FOR ALL ENTRIES IN GT_Z0120 + 67| WHERE BUKRS EQ P_BUKRS + 68| AND OCCR_YM EQ P_OCCYM + 69| AND PRD_ID EQ GT_Z0120-PRD_ID. +``` + +- **EN**: Read company code T001 and select own-consumption interface history from ZFIT0122 by company code, occurrence month and product IDs of GT_Z0120 (FOR ALL ENTRIES). +- 테이블(파서): read [T001](/tables/T001.md), [ZFIT0122](/tables/ZFIT0122.md) / write - +- SAP 객체: ZFIT0122, T001 +- 업무 키워드: 자가소비 내역, 수불부 인터페이스, 발생년월, 상품 ID +- English: own consumption, interface history, FOR ALL ENTRIES +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs), [`ZFIT0122`](#decl-zfir0070top-8-zfit0122), [`GT_Z0122`](#decl-zfir0070top-175-gt_z0122), [`ZFIT0120`](#decl-zfir0070top-8-zfit0120), [`GT_Z0120`](#decl-zfir0070top-174-gt_z0120), [`P_OCCYM`](#decl-zfir0070top-214-p_occym) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L59-L69` · confidence 0.9 · `ZFIR0070#ZFIR0070F01#FORM#GET_ZFIT0122#C1` + +#### [sql_select] 자가소비 내역이 있으면 지점코드(BRCH_ID)를 사업영역 GSBER2 로 매핑한 ZFIT0040 을 회사코드·지점 조건으로 읽어 지점→사업장(BUPLA) 변환에 사용한다. + +```abap + 71| CHECK GT_Z0122[] IS NOT INITIAL. + 72| + 73| * 지점으로 매핑된 사업장 추출 + 74| SELECT * + 75| INTO TABLE GT_Z0040 + 76| FROM ZFIT0040 + 77| FOR ALL ENTRIES IN GT_Z0122 + 78| WHERE BUKRS EQ P_BUKRS + 79| AND GSBER2 EQ GT_Z0122-BRCH_ID. +``` + +- **EN**: If own-consumption data exists, select branch-to-business-place mapping from ZFIT0040 by company code and branch ID (GSBER2). +- 테이블(파서): read [ZFIT0040](/tables/ZFIT0040.md) / write - +- SAP 객체: ZFIT0040 +- 업무 키워드: 지점 매핑, 사업장, 사업영역, 매핑 테이블 +- English: branch mapping, business place, business area +- 정의부(복사 시 함께 필요): [`ZFIT0122`](#decl-zfir0070top-8-zfit0122), [`GT_Z0122`](#decl-zfir0070top-175-gt_z0122), [`ZFIT0040`](#decl-zfir0070top-8-zfit0040), [`GT_Z0040`](#decl-zfir0070top-178-gt_z0040), [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L71-L79` · confidence 0.85 · `ZFIR0070#ZFIR0070F01#FORM#GET_ZFIT0122#C2` + +### FORM GET_ZFIT0123 — `ZFIR0070F01` L88-L148 (61줄) + +*지점 수불 이력을 읽어 사업장·매장유형을 매핑하고 지점/상품별 집계를 만든다.* + +> 이 unit 의 조각 2개가 54/61줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 기준년월로 지점 수불 테이블 ZFIT0123 을 읽고, 지점ID를 ZFIT0040 으로 사업장에 매핑해 사업장명(J_1BBRANCH)을 가져오고, 관리회계 영역의 매장유형 마스터 ZCOT0130 을 함께 읽는다. + +```abap + 92| SELECT * + 93| INTO TABLE GT_Z0123 + 94| FROM ZFIT0123 + 95| * FOR ALL ENTRIES IN GT_Z0120 + 96| WHERE BUKRS EQ P_BUKRS + 97| AND STD_YM EQ P_OCCYM. + 98| * AND PRD_ID EQ GT_Z0120-PRD_ID. + 99| + 100| CHECK GT_Z0123[] IS NOT INITIAL. + 101| * 지점으로 매핑된 사업장 추출 + 102| SELECT * + 103| APPENDING TABLE GT_Z0040 + 104| FROM ZFIT0040 + 105| FOR ALL ENTRIES IN GT_Z0123 + 106| WHERE BUKRS EQ P_BUKRS + 107| AND GSBER2 EQ GT_Z0123-BRCH_ID. + 108| + 109| * 사업장명 추출 + 110| IF GT_Z0040[] IS NOT INITIAL. + 111| SELECT BRANCH NAME + 112| INTO TABLE GT_BRANCH + 113| FROM J_1BBRANCH + 114| FOR ALL ENTRIES IN GT_Z0040 + 115| WHERE BUKRS EQ P_BUKRS + 116| AND BRANCH EQ GT_Z0040-BUPLA. + 117| ENDIF. + 118| + 119| * 지점의 매장유형 추출 + 120| SELECT * + 121| INTO TABLE GT_Z0130 + 122| FROM ZCOT0130 + 123| WHERE KOKRS EQ P_BUKRS. +``` + +- **EN**: Reads branch inventory-movement records for the period, maps branch to business place via ZFIT0040, fetches business-place names and the store-type master ZCOT0130. +- 테이블(파서): read [ZFIT0123](/tables/ZFIT0123.md), [ZFIT0040](/tables/ZFIT0040.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [ZCOT0130](/tables/ZCOT0130.md) / write - +- SAP 객체: ZFIT0123, ZFIT0040, J_1BBRANCH, ZCOT0130, GSBER2, BUPLA +- 업무 키워드: 수불부, 지점, 사업장, 매장유형, 기준년월, 매핑, 조직단위 +- English: inventory movement, branch, business place, store type, period, mapping +- 정의부(복사 시 함께 필요): [`ZFIT0123`](#decl-zfir0070top-8-zfit0123), [`GT_Z0123`](#decl-zfir0070top-176-gt_z0123), [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs), [`P_OCCYM`](#decl-zfir0070top-214-p_occym), [`ZFIT0040`](#decl-zfir0070top-8-zfit0040), [`GT_Z0040`](#decl-zfir0070top-178-gt_z0040), [`GT_BRANCH`](#decl-zfir0070top-181-gt_branch), [`ZCOT0130`](#decl-zfir0070top-8-zcot0130), [`GT_Z0130`](#decl-zfir0070top-177-gt_z0130) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L92-L123` · confidence 0.86 · `ZFIR0070#ZFIR0070F01#FORM#GET_ZFIT0123#C1` + +#### [aggregation] 지점-사업장 매핑의 중복을 제거한 뒤, 수불 건마다 사업장을 채워 상세 목록을 만들고, 지점에 매핑된 대표 매장유형(SHOP_TYPE_FI)을 붙여 COLLECT 로 지점/상품별 집계 테이블을 누적한다. + +```abap + 125| SORT GT_Z0040 BY BUKRS GSBER2. + 126| DELETE ADJACENT DUPLICATES FROM GT_Z0040 COMPARING BUKRS GSBER2. + 127| + 128| * 지점/상품별 + 129| LOOP AT GT_Z0123. + 130| MOVE-CORRESPONDING GT_Z0123 TO GT_DATA. + 131| READ TABLE GT_Z0040 WITH KEY GSBER2 = GT_Z0123-BRCH_ID. + 132| IF SY-SUBRC EQ 0. + 133| GT_DATA-BUPLA = GT_Z0040-BUPLA. + 134| ENDIF. + 135| APPEND GT_DATA. + 136| MOVE-CORRESPONDING GT_DATA TO GT_DATA_SUM. + 137| * 지점에 매핑된 대표구분자로.. + 138| READ TABLE GT_Z0130 WITH KEY WW120 = GT_Z0123-BRCH_ID. + 139| IF SY-SUBRC EQ 0. + 140| GT_DATA_SUM-SHOP_TYPE = GT_Z0130-SHOP_TYPE_FI. + 141| ENDIF. + 142| + 143| COLLECT GT_DATA_SUM. + 144| + 145| CLEAR: GT_DATA, GT_DATA_SUM. + 146| ENDLOOP. +``` + +- **EN**: Removes duplicate branch mappings, stamps the business place onto each record for the detail list, and COLLECTs a branch/product summary keyed by the mapped store type. +- SAP 객체: ZFIT0040, ZCOT0130, SHOP_TYPE_FI, BUPLA +- 업무 키워드: 중복제거, 사업장, 매장유형, 집계, 지점별, 상품별, 합산 +- English: deduplicate, business place, store type, aggregation, COLLECT, per branch, per product +- 정의부(복사 시 함께 필요): [`ZFIT0040`](#decl-zfir0070top-8-zfit0040), [`GT_Z0040`](#decl-zfir0070top-178-gt_z0040), [`ZFIT0123`](#decl-zfir0070top-8-zfit0123), [`GT_Z0123`](#decl-zfir0070top-176-gt_z0123), [`GT_DATA`](#decl-zfir0070top-148-gt_data), [`GT_DATA_SUM`](#decl-zfir0070top-162-gt_data_sum), [`ZCOT0130`](#decl-zfir0070top-8-zcot0130), [`GT_Z0130`](#decl-zfir0070top-177-gt_z0130) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L125-L146` · confidence 0.84 · `ZFIR0070#ZFIR0070F01#FORM#GET_ZFIT0123#C2` + +### FORM DISPLAY_DATA — `ZFIR0070F01` L154-L236 (83줄) + +*상품 I/F 이력을 헤더(GT_HEAD)에 매장유형(B1~B6)별 기초/매출/재고 수량·금액으로 펼치고, 자가소비 상세(GT_ITEM)에 지점→사업장 매핑과 누락 오류를 채우는 FORM이다.* + +> 이 unit 의 조각 2개가 76/83줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] GT_Z0120 의 각 상품·등급에 대해 GT_DATA_SUM 의 매장유형(SHOP_TYPE B1~B5, 기타 B6)별 수량·금액을 GT_HEAD 의 기초(E)·매출(O)·재고(J) 컬럼으로 피벗해 헤더 행을 만들고 건수를 GV_DBCNT 에 둔다. + +```abap + 157| SORT GT_Z0120 BY PRD_ID PRD_GRD_CD. + 158| SORT GT_DATA_SUM BY PRD_ID PRD_GRD_CD. + 159| + 160| LOOP AT GT_Z0120. + 161| MOVE-CORRESPONDING GT_Z0120 TO GT_HEAD. + 162| + 163| * 지점별 기초/매출/재고금액.. + 164| LOOP AT GT_DATA_SUM WHERE PRD_ID EQ GT_Z0120-PRD_ID + 165| AND PRD_GRD_CD EQ GT_Z0120-PRD_GRD_CD. + 166| * 대분류에 따라 + 167| CASE GT_DATA_SUM-SHOP_TYPE. + 168| WHEN 'B1'. + 169| GT_HEAD-EQTY_B1 = GT_DATA_SUM-EQTY. + 170| GT_HEAD-EAMT_B1 = GT_DATA_SUM-EAMT. + 171| GT_HEAD-OQTY_B1 = GT_DATA_SUM-EQTY. + 172| GT_HEAD-OAMT_B1 = GT_DATA_SUM-EAMT. + 173| GT_HEAD-JQTY_B1 = GT_DATA_SUM-EQTY. + 174| GT_HEAD-JAMT_B1 = GT_DATA_SUM-EAMT. + 175| WHEN 'B2'. + 176| GT_HEAD-EQTY_B2 = GT_DATA_SUM-EQTY. + 177| GT_HEAD-EAMT_B2 = GT_DATA_SUM-EAMT. + 178| GT_HEAD-OQTY_B2 = GT_DATA_SUM-EQTY. + 179| GT_HEAD-OAMT_B2 = GT_DATA_SUM-EAMT. + 180| GT_HEAD-JQTY_B2 = GT_DATA_SUM-EQTY. + 181| GT_HEAD-JAMT_B2 = GT_DATA_SUM-EAMT. + 182| WHEN 'B3'. + 183| GT_HEAD-EQTY_B3 = GT_DATA_SUM-EQTY. + 184| GT_HEAD-EAMT_B3 = GT_DATA_SUM-EAMT. + 185| GT_HEAD-OQTY_B3 = GT_DATA_SUM-EQTY. + 186| GT_HEAD-OAMT_B3 = GT_DATA_SUM-EAMT. + 187| GT_HEAD-JQTY_B3 = GT_DATA_SUM-EQTY. + 188| GT_HEAD-JAMT_B3 = GT_DATA_SUM-EAMT. + 189| WHEN 'B4'. + 190| GT_HEAD-EQTY_B4 = GT_DATA_SUM-EQTY. + 191| GT_HEAD-EAMT_B4 = GT_DATA_SUM-EAMT. + 192| GT_HEAD-OQTY_B4 = GT_DATA_SUM-EQTY. + 193| GT_HEAD-OAMT_B4 = GT_DATA_SUM-EAMT. + 194| GT_HEAD-JQTY_B4 = GT_DATA_SUM-EQTY. + 195| GT_HEAD-JAMT_B4 = GT_DATA_SUM-EAMT. + 196| WHEN 'B5'. + 197| GT_HEAD-EQTY_B5 = GT_DATA_SUM-EQTY. + 198| GT_HEAD-EAMT_B5 = GT_DATA_SUM-EAMT. + 199| GT_HEAD-OQTY_B5 = GT_DATA_SUM-EQTY. + 200| GT_HEAD-OAMT_B5 = GT_DATA_SUM-EAMT. + 201| GT_HEAD-JQTY_B5 = GT_DATA_SUM-EQTY. + 202| GT_HEAD-JAMT_B5 = GT_DATA_SUM-EAMT. + 203| WHEN OTHERS. + 204| GT_HEAD-EQTY_B6 = GT_DATA_SUM-EQTY. + 205| GT_HEAD-EAMT_B6 = GT_DATA_SUM-EAMT. + 206| GT_HEAD-OQTY_B6 = GT_DATA_SUM-EQTY. + 207| GT_HEAD-OAMT_B6 = GT_DATA_SUM-EAMT. + 208| GT_HEAD-JQTY_B6 = GT_DATA_SUM-EQTY. + 209| GT_HEAD-JAMT_B6 = GT_DATA_SUM-EAMT. + 210| ENDCASE. + 211| ENDLOOP. + 212| APPEND GT_HEAD. CLEAR GT_HEAD. + 213| ENDLOOP. + 214| + 215| DESCRIBE TABLE GT_HEAD LINES GV_DBCNT. +``` + +- **EN**: For each product/grade in GT_Z0120 pivot GT_DATA_SUM quantities and amounts by shop type (B1-B6) into the opening/sales/stock columns of GT_HEAD and count the rows. +- SAP 객체: ZFIT0120 +- 업무 키워드: 매장유형별 집계, 기초 재고, 매출, 재고 금액, 상품 등급, 피벗 +- English: shop type, opening stock, sales, stock amount, pivot +- 정의부(복사 시 함께 필요): [`ZFIT0120`](#decl-zfir0070top-8-zfit0120), [`GT_Z0120`](#decl-zfir0070top-174-gt_z0120), [`GT_DATA_SUM`](#decl-zfir0070top-162-gt_data_sum), [`GT_HEAD`](#decl-zfir0070top-14-gt_head), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L157-L215` · confidence 0.85 · `ZFIR0070#ZFIR0070F01#FORM#DISPLAY_DATA#C1` + +#### [calculation] 자가소비 내역 GT_Z0122 마다 ZFIT0040 매핑(GT_Z0040)으로 지점코드를 사업장(BUPLA)과 사업장명(GT_BRANCH)으로 변환하고, 매핑이 없으면 '지점코드에 매핑된 사업장 누락' 오류 메시지를 GT_ITEM 에 남긴다. + +```abap + 218| LOOP AT GT_Z0122. + 219| MOVE-CORRESPONDING GT_Z0122 TO GT_ITEM. + 220| * 사업장 체크 + 221| READ TABLE GT_Z0040 WITH KEY GSBER2 = GT_Z0122-BRCH_ID. + 222| IF SY-SUBRC EQ 0. + 223| GT_ITEM-BUPLA = GT_Z0040-BUPLA. + 224| * 사업장명 + 225| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_ITEM-BUPLA. + 226| IF SY-SUBRC EQ 0. + 227| GT_ITEM-BUPLA_T = GT_BRANCH-NAME. + 228| ENDIF. + 229| ELSE. + 230| GT_ITEM-ERMSG = '지점코드에 매핑된 사업장 누락'. + 231| ENDIF. + 232| + 233| APPEND GT_ITEM. CLEAR GT_ITEM. + 234| ENDLOOP. +``` + +- **EN**: For each own-consumption record derive business place and its name from the branch mapping (GT_Z0040/GT_BRANCH) and flag an error message when the branch has no mapped business place. +- SAP 객체: ZFIT0122, ZFIT0040 +- 업무 키워드: 자가소비 상세, 지점 매핑, 사업장명, 매핑 누락 오류 +- English: own consumption, business place, branch mapping, error message +- 정의부(복사 시 함께 필요): [`ZFIT0122`](#decl-zfir0070top-8-zfit0122), [`GT_Z0122`](#decl-zfir0070top-175-gt_z0122), [`GT_ITEM`](#decl-zfir0070top-129-gt_item), [`ZFIT0040`](#decl-zfir0070top-8-zfit0040), [`GT_Z0040`](#decl-zfir0070top-178-gt_z0040), [`GT_BRANCH`](#decl-zfir0070top-181-gt_branch) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L218-L234` · confidence 0.9 · `ZFIR0070#ZFIR0070F01#FORM#DISPLAY_DATA#C2` + +### EVENT END-OF-SELECTION — `ZFIR0070` L52-L58 (7줄) + +*END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.* + +> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 수불 헤더 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 2단 ALV 화면 0100 을 호출한다. + +```abap + 53| IF GT_HEAD[] IS INITIAL. + 54| MESSAGE S003. + 55| LEAVE LIST-PROCESSING. + 56| ELSE. + 57| CALL SCREEN 0100. + 58| ENDIF. +``` + +- **EN**: If no header data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV. +- 호출(파서): 0100 +- 업무 키워드: 결과 없음, 화면 호출, 조회 결과 확인 +- English: no data, call screen +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0070top-14-gt_head) +- 위치: `abap://ZFIR0070/ZFIR0070#L53-L58` · confidence 0.8 · `ZFIR0070#ZFIR0070#EVENT#END-OF-SELECTION#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0070/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0070/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0070/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0070/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0070/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0070/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0070/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0070/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0070/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0070/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0070/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0070/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0070/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0070/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0070/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0070/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0070/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0070/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0070/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0070/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0070/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0070/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0070/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0070/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0070#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0070/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0070/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0070/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0070/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0070top-213-p_bukrs) +- 위치: `abap://ZFIR0070/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0070#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0070/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0070#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0070F01` L911-L933 (23줄) + +*헤더 그리드의 자가소비수량(OW_CSP_QTY) 핫스팟 클릭 시 해당 상품의 상세 GT_ITEM 을 GT_ITEM2 로 추려 PAI(ZUSER)로 하단 그리드를 갱신시키는 핸들러 FORM이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 헤더 행을 읽고 컬럼이 OW_CSP_QTY 이면 같은 상품 ID 의 GT_ITEM 을 GT_ITEM2 에 복사·정렬한 뒤 CL_GUI_CFW=>SET_NEW_OK_CODE 로 ZUSER 기능코드를 발생시켜 상세 그리드를 갱신한다. + +```abap + 914| READ TABLE GT_HEAD INDEX P_ROW_ID-INDEX. + 915| CHECK SY-SUBRC EQ 0. + 916| + 917| CASE P_COLUMN_ID. + 918| * 자가소비수량 + 919| WHEN 'OW_CSP_QTY'. + 920| CLEAR : GT_ITEM2[], GT_ITEM2. + 921| + 922| LOOP AT GT_ITEM WHERE PRD_ID EQ GT_HEAD-PRD_ID. + 923| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 924| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 925| ENDLOOP. + 926| SORT GT_ITEM2 BY PRD_ID. + 927| * PAI로 호출 + 928| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 929| EXPORTING + 930| NEW_CODE = 'ZUSER'. + 931| ENDCASE. +``` + +- **EN**: On hotspot click of the own-consumption quantity column, filter GT_ITEM by the selected product ID into GT_ITEM2 and trigger PAI with OK code ZUSER to refresh the detail grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 핫스팟, 자가소비수량, 상세 조회, 상품 ID, 그리드 갱신 +- English: hotspot click, detail grid, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0070top-14-gt_head), [`GT_ITEM`](#decl-zfir0070top-129-gt_item), [`GT_ITEM2`](#decl-zfir0070top-145-gt_item2) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L914-L931` · confidence 0.9 · `ZFIR0070#ZFIR0070F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY1 — `ZFIR0070F01` L354-L369 (16줄) + +*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 임시전표 헤더 내부테이블 GT_HEAD를 상단 ALV 그리드에 출력한다. + +```abap + 357| GV_VARI1-REPORT = SY-REPID. + 358| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY + 359| EXPORTING + 360| I_STRUCTURE_NAME = 'GT_HEAD' + 361| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 362| IS_LAYOUT = GV_LAYO1 + 363| IS_VARIANT = GV_VARI1 + 364| I_BUFFER_ACTIVE = C_X + 365| I_SAVE = C_A + 366| CHANGING + 367| IT_OUTTAB = GT_HEAD[] + 368| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the parked document header list (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 헤더 ALV 출력, 임시전표 목록, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Parked Document +- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0070top-200-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0070top-194-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0070top-197-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0070top-14-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L357-L368` · confidence 0.8 · `ZFIR0070#ZFIR0070F01#FORM#ALV_GRID_DISPLAY1#C1` + +### FORM ALV_GRID_DISPLAY2 — `ZFIR0070F01` L812-L827 (16줄) + +*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다. + +```abap + 815| GV_VARI2-REPORT = SY-REPID. + 816| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY + 817| EXPORTING + 818| I_STRUCTURE_NAME = 'GT_ITEM' + 819| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 820| IS_LAYOUT = GV_LAYO2 + 821| IS_VARIANT = GV_VARI2 + 822| I_BUFFER_ACTIVE = C_X + 823| I_SAVE = C_A + 824| CHANGING + 825| IT_OUTTAB = GT_ITEM2[] + 826| IT_FIELDCATALOG = GT_FCAT_ITEM[]. +``` + +- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 아이템 ALV 출력, 전표 아이템, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item +- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0070top-201-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0070top-195-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0070top-198-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0070top-129-gt_item), [`GT_ITEM2`](#decl-zfir0070top-145-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item) +- 위치: `abap://ZFIR0070/ZFIR0070F01#L815-L826` · confidence 0.8 · `ZFIR0070#ZFIR0070F01#FORM#ALV_GRID_DISPLAY2#C1` + +## 정의부 (317건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0070CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0070cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT1 — data · L29-L29 {#decl-zfir0070cls-29-gv_event1} + +```abap +DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0070TOP` (38건) + +#### TKA02 — tables · L8-L8 {#decl-zfir0070top-8-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### ZCOT0130 — tables · L8-L8 {#decl-zfir0070top-8-zcot0130} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0070top-8-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### ZFIT0120 — tables · L8-L8 {#decl-zfir0070top-8-zfit0120} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### ZFIT0122 — tables · L8-L8 {#decl-zfir0070top-8-zfit0122} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### ZFIT0123 — tables · L8-L8 {#decl-zfir0070top-8-zfit0123} + +```abap +TABLES: ZFIT0040, ZFIT0120, ZFIT0123, ZFIT0122, TKA02, ZCOT0130. +``` + +#### GT_HEAD — data · L14-L126 {#decl-zfir0070top-14-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0, + BUKRS LIKE ZFIT0120-BUKRS, "회사 코드 + OCCR_YM LIKE ZFIT0120-OCCR_YM, "발생년월 + PRD_ID LIKE ZFIT0120-PRD_ID, "상품ID + PRD_GRD_CD LIKE ZFIT0120-PRD_GRD_CD, "등급 + MKR_ID LIKE ZFIT0120-MKR_ID, "메이커 + VNDR_NM LIKE ZFIT0120-VNDR_NM, "메이커명 + ITEM_CD LIKE ZFIT0120-ITEM_CD, "품목 + ITEM_NM LIKE ZFIT0120-ITEM_NM, "품목명 + PRD_CD LIKE ZFIT0120-PRD_CD, "상품코드 + PRD_NM LIKE ZFIT0120-PRD_NM, "품목명 + ITEM_CD_L1 LIKE ZFIT0120-ITEM_CD_L1, "품목(군) + ITEM_NM_L1 LIKE ZFIT0120-ITEM_NM_L1, "품목명(군) + ITEM_CD_L2 LIKE ZFIT0120-ITEM_CD_L2, "품목(대) + ITEM_NM_L2 LIKE ZFIT0120-ITEM_NM_L2, "품목명(대) + ITEM_CD_L3 LIKE ZFIT0120-ITEM_CD_L3, "품목(중) + ITEM_NM_L3 LIKE ZFIT0120-ITEM_NM_L3, "품목명(중) + ITEM_CD_L4 LIKE ZFIT0120-ITEM_CD_L4, "품목(소) + ITEM_NM_L4 LIKE ZFIT0120-ITEM_NM_L4, "품목명(소) + CHRGR_ID LIKE ZFIT0120-CHRGR_ID, "담당자 + HUSR_NM LIKE ZFIT0120-HUSR_NM, "담당자명 + ORG_ID LIKE ZFIT0120-ORG_ID, "부서 + ORG_NM LIKE ZFIT0120-ORG_NM, "부서명 + ALL_ELMT_QTY(12) TYPE P, "전체기초수량 + ALL_ELMT_AMT(12) TYPE P, "전체기초금액 + LGST_ELMT_QTY(12) TYPE P, "물류기초수량 + LGST_ELMT_AMT(12) TYPE P, "물류기초금액 +*** 지점별 + EQTY_B1(12) TYPE P, "HM + EQTY_B2(12) TYPE P, "DP + EQTY_B3(12) TYPE P, "마트 + EQTY_B4(12) TYPE P, "하나로 + EQTY_B5(12) TYPE P, "인터넷 + EQTY_B6(12) TYPE P, "OTHERS +*** + BRCH_ELMT_QTY(12) TYPE P, "지점기초수량 +*** 지점별 + EAMT_B1(12) TYPE P, "HM + EAMT_B2(12) TYPE P, "DP + EAMT_B3(12) TYPE P, "마트 + EAMT_B4(12) TYPE P, "하나로 + EAMT_B5(12) TYPE P, "인터넷 + EAMT_B6(12) TYPE P, "OTHERS +*** + BRCH_ELMT_AMT(12) TYPE P, "지점기초금액 + ALL_WHI_QTY(12) TYPE P, "입고수량 + ALL_WHI_AMT(12) TYPE P, "입고금액 + ALL_WHO_QTY(12) TYPE P, "전체출고수량 + ALL_WHO_AMT(12) TYPE P, "전체출고금액 + ALL_DNT_QTY(12) TYPE P, "전체기증수량 + ALL_DNT_AMT(12) TYPE P, "전체기증금액 + DTR_WHO_SUM_QTY(12) TYPE P, "원가수량 + DTR_WHO_DNT_SUM_AMT(12) TYPE P, "원가금액 +*** 지점별 + OQTY_B1(12) TYPE P, "HM + OQTY_B2(12) TYPE P, "DP + OQTY_B3(12) TYPE P, "마트 + OQTY_B4(12) TYPE P, "하나로 + OQTY_B5(12) TYPE P, "인터넷 + OQTY_B6(12) TYPE P, "OTHERS +* … (53줄 생략) +``` + +#### GT_ITEM — data · L129-L143 {#decl-zfir0070top-129-gt_item} + +```abap +DATA: BEGIN OF GT_ITEM OCCURS 0, + PRD_ID LIKE ZFIT0122-PRD_ID, "상품코드 + PRD_NM LIKE ZFIT0122-PRD_NM, "상품명 + BRCH_ID LIKE ZFIT0122-BRCH_ID, "지점코드 + BUPLA LIKE J_1BBRANCH-BRANCH, "사업장 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + BRCH_WHIO_DT LIKE ZFIT0122-BRCH_WHIO_DT, "일자 + BRCH_WHIO_NO LIKE ZFIT0122-BRCH_WHIO_NO, "번호 + BRCH_WHIO_SEQ LIKE ZFIT0122-BRCH_WHIO_BKDN_SEQ, "순번 + OW_CSP_TYPE_CD LIKE ZFIT0122-OW_CSP_TYPE_CD, "타입 + CM_CD_NM LIKE ZFIT0122-CM_CD_NM, "명칭 + OQTY(12) TYPE P, "출고수량 + OAMT(12) TYPE P, "출고금액 + ERMSG(100) TYPE C, "에러메시지 + END OF GT_ITEM. +``` + +#### GT_ITEM2 — data · L145-L145 {#decl-zfir0070top-145-gt_item2} + +```abap +DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_DATA — data · L148-L159 {#decl-zfir0070top-148-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0, + PRD_ID LIKE ZFIT0123-PRD_ID, + PRD_GRD_CD LIKE ZFIT0123-PRD_GRD_CD, + BRCH_ID LIKE ZFIT0123-BRCH_ID, + BUPLA LIKE ZFIT0040-BUPLA, + EQTY(12) TYPE P, "기초 + EAMT(12) TYPE P, + OQTY(12) TYPE P, "매출 + OAMT(12) TYPE P, + JQTY(12) TYPE P, "재고 + JAMT(12) TYPE P, + END OF GT_DATA. +``` + +#### GT_DATA_SUM — data · L162-L172 {#decl-zfir0070top-162-gt_data_sum} + +```abap +DATA: BEGIN OF GT_DATA_SUM OCCURS 0, + PRD_ID LIKE ZFIT0123-PRD_ID, + PRD_GRD_CD LIKE ZFIT0123-PRD_GRD_CD, + SHOP_TYPE LIKE ZCOT0130-SHOP_TYPE_FI, + EQTY(12) TYPE P, "기초 + EAMT(12) TYPE P, + OQTY(12) TYPE P, "매출 + OAMT(12) TYPE P, + JQTY(12) TYPE P, "재고 + JAMT(12) TYPE P, + END OF GT_DATA_SUM. +``` + +#### GT_Z0120 — data · L174-L174 {#decl-zfir0070top-174-gt_z0120} + +```abap +DATA: GT_Z0120 LIKE ZFIT0120 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0122 — data · L175-L175 {#decl-zfir0070top-175-gt_z0122} + +```abap +DATA: + GT_Z0122 LIKE ZFIT0122 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0123 — data · L176-L176 {#decl-zfir0070top-176-gt_z0123} + +```abap +DATA: + GT_Z0123 LIKE ZFIT0123 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0130 — data · L177-L177 {#decl-zfir0070top-177-gt_z0130} + +```abap +DATA: + GT_Z0130 LIKE ZCOT0130 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0040 — data · L178-L178 {#decl-zfir0070top-178-gt_z0040} + +```abap +DATA: + GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BRANCH — data · L181-L184 {#decl-zfir0070top-181-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_FCAT_ITEM2 — data · L187-L187 {#decl-zfir0070top-187-gt_fcat_item2} + +```abap +DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT. +``` + +#### GS_STABLE — data · L189-L189 {#decl-zfir0070top-189-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GC_SPLITTER — data · L190-L190 {#decl-zfir0070top-190-gc_splitter} + +```abap +DATA: + GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GC_CONTAINER1 — data · L191-L191 {#decl-zfir0070top-191-gc_container1} + +```abap +DATA: + GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GC_CONTAINER2 — data · L192-L192 {#decl-zfir0070top-192-gc_container2} + +```abap +DATA: + GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GV_ALV_GRID — data · L193-L193 {#decl-zfir0070top-193-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID1 — data · L194-L194 {#decl-zfir0070top-194-gv_alv_grid1} + +```abap +DATA: + GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID2 — data · L195-L195 {#decl-zfir0070top-195-gv_alv_grid2} + +```abap +DATA: + GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L196-L196 {#decl-zfir0070top-196-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_LAYO1 — data · L197-L197 {#decl-zfir0070top-197-gv_layo1} + +```abap +DATA: + GV_LAYO1 TYPE LVC_S_LAYO. +``` + +#### GV_LAYO2 — data · L198-L198 {#decl-zfir0070top-198-gv_layo2} + +```abap +DATA: + GV_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L199-L199 {#decl-zfir0070top-199-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### GV_VARI1 — data · L200-L200 {#decl-zfir0070top-200-gv_vari1} + +```abap +DATA: + GV_VARI1 TYPE DISVARIANT. +``` + +#### GV_VARI2 — data · L201-L201 {#decl-zfir0070top-201-gv_vari2} + +```abap +DATA: + GV_VARI2 TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L213-L213 {#decl-zfir0070top-213-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE ZFIT0120-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_OCCYM — parameter · L214-L214 {#decl-zfir0070top-214-p_occym} + +```abap +PARAMETERS: + P_OCCYM LIKE S001-SPMON OBLIGATORY. +``` + +#### S_MKRID — select-option · L215-L215 {#decl-zfir0070top-215-s_mkrid} + +```abap +SELECT-OPTIONS: S_MKRID FOR ZFIT0120-MKR_ID. +``` + +#### S_ITEMCD — select-option · L216-L216 {#decl-zfir0070top-216-s_itemcd} + +```abap +SELECT-OPTIONS: + S_ITEMCD FOR ZFIT0120-ITEM_CD. +``` + +#### S_PRDID — select-option · L217-L217 {#decl-zfir0070top-217-s_prdid} + +```abap +SELECT-OPTIONS: + S_PRDID FOR ZFIT0120-PRD_ID. +``` + +#### S_ORGID — select-option · L218-L218 {#decl-zfir0070top-218-s_orgid} + +```abap +SELECT-OPTIONS: + S_ORGID FOR ZFIT0120-ORG_ID. +``` + +#### S_CHRGR — select-option · L219-L219 {#decl-zfir0070top-219-s_chrgr} + +```abap +SELECT-OPTIONS: + S_CHRGR FOR ZFIT0120-CHRGR_ID. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0070 L31-42 | 0 | INITIALIZATION 에서 ALV_SETTING 을 호출하는 플러밍 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0070 L43-51 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0070 L52-58 | 1 | END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0070CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DATA | FORM | ZFIR0070F01 L9-25 | 1 | 상품(ZFIT0120)→자가소비(ZFIT0122)→지점(ZFIT0123) I/F 이력을 순서대로 추출하고 DISPLAY_DATA 로 취합하는 데이터 조회 디스패치 FORM이다. | +| GET_ZFIT0120 | FORM | ZFIR0070F01 L31-49 | 1 | 회사코드·발생년월·마커·품목·상품·조직·담당자 조건으로 수불부-상품 I/F 이력 ZFIT0120 을 조회해 GT_Z0120 에 적재하는 FORM이다. | +| GET_ZFIT0122 | FORM | ZFIR0070F01 L55-81 | 2 | 상품 I/F 이력(GT_Z0120)의 상품 ID 기준으로 자가소비 I/F 이력 ZFIT0122 와 지점-사업장 매핑 ZFIT0040 을 조회하는 FORM이다. | +| GET_ZFIT0123 | FORM | ZFIR0070F01 L88-148 | 2 | 지점 수불 이력을 읽어 사업장·매장유형을 매핑하고 지점/상품별 집계를 만든다. | +| DISPLAY_DATA | FORM | ZFIR0070F01 L154-236 | 2 | 상품 I/F 이력을 헤더(GT_HEAD)에 매장유형(B1~B6)별 기초/매출/재고 수량·금액으로 펼치고, 자가소비 상세(GT_ITEM)에 지점→사업장 매핑과 누락 오류를 채우는 FORM이다. | +| SPLITTER_CONTAINER | FORM | ZFIR0070F01 L242-294 | 0 | 커스텀 컨테이너 C_0100 위에 2행 스플리터를 만들고 각 셀에 헤더/상세 ALV 그리드 객체를 생성하는 화면 구성 플러밍 FORM이다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0070F01 L303-321 | 0 | 이벤트 핸들러(핫스팟) 등록, 레이아웃·툴바 제외 설정 후 두 ALV 그리드를 표시하는 초기화 디스패치 FORM이다. | +| SET_GRID_LAYOUT1 | FORM | ZFIR0070F01 L330-345 | 0 | 헤더/자가소비 두 그리드의 LVC 레이아웃(제목·열최적화·선택모드·줄무늬)을 설정하는 ALV 설정 FORM이다. | +| ALV_GRID_DISPLAY1 | FORM | ZFIR0070F01 L354-369 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS1 | FORM | ZFIR0070F01 L378-803 | 0 | 헤더 그리드 GT_HEAD 의 LVC 필드카탈로그를 생성하고 컬럼 속성을 설정하는 ALV 설정 FORM이다(1/3 창: FIELDCATALOG_CALL 호출부). | +| ALV_GRID_DISPLAY2 | FORM | ZFIR0070F01 L812-827 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS2 | FORM | ZFIR0070F01 L836-901 | 0 | 상세(자가소비) 그리드 GT_ITEM 의 LVC 필드카탈로그를 생성하고 컬럼 텍스트·위치·정렬·숨김을 설정하는 ALV 설정 FORM이다. | +| HOTSPOT_CLICK | FORM | ZFIR0070F01 L911-933 | 1 | 헤더 그리드의 자가소비수량(OW_CSP_QTY) 핫스팟 클릭 시 해당 상품의 상세 GT_ITEM 을 GT_ITEM2 로 추려 PAI(ZUSER)로 하단 그리드를 갱신시키는 핸들러 FORM이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0070O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0070O01 L21-43 | 0 | | diff --git a/wiki/programs/ZFIR0071.md b/wiki/programs/ZFIR0071.md new file mode 100644 index 0000000..c52fa89 --- /dev/null +++ b/wiki/programs/ZFIR0071.md @@ -0,0 +1,3375 @@ +--- +type: abap-program +title: "ZFIR0071 — 수불부-물류/서비스 I/F 이력 조회" +description: "물류·서비스 항목 수불 인터페이스 이력(CBO 테이블 ZFIT0121)을 회사코드와 항목코드로 조회하는 리포트다. 공급업체 정보(LFA1/LFB1)를 붙여 ALV 로 보여준다. ZFIR0070(상품)·ZFIR0072(자가소비)와 같은 계열의 조회 화면이다." +resource: "abap://ZFIR0071" +tags: ["인터페이스", "수불부", "리포트", "FI", "물류", "서비스", "발생년월", "항목코드", "구매처", "대체계정", "거래처명", "번호범위", "채번", "일련번호", "키생성", "번호오브젝트", "권한체크", "회사코드권한", "권한오브젝트", "접근제어"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LFA1", "LFB1", "LTDX", "SKAT", "T001", "T007S", "USR01", "V_USERNAME", "ZFIT0121", "ZFIT0160"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "8c76b66ab68a015699bce39c5f9f962d7d29718dbd6e42c25c80969a3611c962" +x-unit-count: 95 +x-chunk-count: 36 +x-declaration-count: 281 +--- + +## 업무 목적 + +물류·서비스 항목 수불 인터페이스 이력(CBO 테이블 ZFIT0121)을 회사코드와 항목코드로 조회하는 리포트다. 공급업체 정보(LFA1/LFB1)를 붙여 ALV 로 보여준다. ZFIR0070(상품)·ZFIR0072(자가소비)와 같은 계열의 조회 화면이다. + +## 주 흐름 + +1. ALV 설정을 준비한다 (ALV_SETTING) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 회사코드·항목코드 조건으로 물류/서비스 수불 이력을 추출한다 (GET_ZFIT0121) +4. 공급업체 텍스트를 붙여 표시 데이터를 만든다 (DISPLAY_DATA) +5. 화면 0100 에 ALV 로 출력한다 + +## 핵심 내부테이블 + +- `GT_DATA` — 물류/서비스 수불 I/F 이력 (채움: GET_ZFIT0121 / 소비: DISPLAY_DATA) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LFA1, LFB1, LTDX, SKAT, T001, T007S, USR01, V_USERNAME, ZFIT0121, ZFIT0160 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (36건 / unit 33개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIR0071` L43-L51 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 45| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 46| + 47| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs) +- 위치: `abap://ZFIR0071/ZFIR0071#L45-L47` · confidence 0.8 · `ZFIR0071#ZFIR0071#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0071/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0071#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0121 — `ZFIR0071F01` L23-L49 (27줄) + +*물류/서비스 수불 인터페이스 이력을 발생월·품목 조건으로 읽고 구매처 정보를 붙인다.* + +> 이 unit 의 조각 1개가 22/27줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드 마스터(T001)를 먼저 읽고, 발생년월·상품코드·항목코드 조건으로 물류/서비스 수불 테이블 ZFIT0121 을 조회한 뒤, 거래처 대체계정(LFB1-ALTKN)으로 LFA1 을 조인해 구매처명을 확보한다. + +```abap + 26| SELECT SINGLE * + 27| FROM T001 + 28| WHERE BUKRS EQ P_BUKRS. + 29| + 30| SELECT * + 31| INTO TABLE GT_Z0121 + 32| FROM ZFIT0121 + 33| WHERE BUKRS EQ P_BUKRS + 34| AND OCCR_YM EQ P_OCCYM + 35| AND PRD_CD IN S_PRDCD + 36| AND ITEM_CD IN S_ITEMCD. + 37| + 38| CHECK GT_Z0121[] IS NOT INITIAL. + 39| + 40| * 구매처 + 41| SELECT A~LIFNR A~ALTKN B~NAME1 + 42| INTO TABLE GT_LFA1 + 43| FROM LFB1 AS A INNER JOIN LFA1 AS B + 44| ON B~LIFNR EQ A~LIFNR + 45| FOR ALL ENTRIES IN GT_Z0121 + 46| WHERE A~BUKRS EQ P_BUKRS + 47| AND A~ALTKN EQ GT_Z0121-BUY_VNDR_ID. +``` + +- **EN**: Reads the company code master, then logistics/service inventory-movement records from ZFIT0121 by period and item, joining LFB1/LFA1 on the alternative payee to obtain vendor names. +- 테이블(파서): read [T001](/tables/T001.md), [ZFIT0121](/tables/ZFIT0121.md), [LFB1](/tables/LFB1.md), [LFA1](/tables/LFA1.md) / write - +- SAP 객체: ZFIT0121, T001, LFB1, LFA1, ALTKN +- 업무 키워드: 수불부, 물류, 서비스, 발생년월, 항목코드, 구매처, 대체계정, 거래처명 +- English: inventory movement, logistics, service, period, item code, vendor, alternative payee +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs), [`ZFIT0121`](#decl-zfir0071top-8-zfit0121), [`GT_Z0121`](#decl-zfir0071top-36-gt_z0121), [`P_OCCYM`](#decl-zfir0071top-62-p_occym), [`S_PRDCD`](#decl-zfir0071top-64-s_prdcd), [`S_ITEMCD`](#decl-zfir0071top-63-s_itemcd), [`GT_LFA1`](#decl-zfir0071top-39-gt_lfa1), [`LFB1`](#decl-zficom-37-lfb1), [`LFA1`](#decl-zficom-36-lfa1) +- 위치: `abap://ZFIR0071/ZFIR0071F01#L26-L47` · confidence 0.86 · `ZFIR0071#ZFIR0071F01#FORM#GET_ZFIT0121#C1` + +### FORM DISPLAY_DATA — `ZFIR0071F01` L55-L74 (20줄) + +*물류/서비스 수불 I/F 이력(ZFIT0121)의 구매처 ID 를 공급업체 마스터(LFA1 ALTKN)와 대조해 SAP 공급업체 코드·이름을 붙이고 미생성 건에 오류 메시지를 표시하는 GT_DATA 를 만든다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 수불 I/F 이력마다 구매처 ID(BUY_VNDR_ID)를 LFA1 의 이전 계정번호(ALTKN)로 찾아 SAP 공급업체 코드와 이름을 채우고, 없으면 '구매처 마스터 미생성' 오류 메시지를 넣어 GT_DATA 에 적재한다. + +```abap + 58| LOOP AT GT_Z0121. + 59| MOVE-CORRESPONDING GT_Z0121 TO GT_DATA. + 60| * 구매처코드 체크 + 61| READ TABLE GT_LFA1 WITH KEY ALTKN = GT_Z0121-BUY_VNDR_ID. + 62| IF SY-SUBRC EQ 0. + 63| GT_DATA-LIFNR = GT_LFA1-LIFNR. + 64| GT_DATA-LIFNR_T = GT_LFA1-NAME1. + 65| ELSE. + 66| GT_DATA-ERMSG = '구매처 마스터 미생성'. + 67| ENDIF. + 68| + 69| APPEND GT_DATA. CLEAR GT_DATA. + 70| ENDLOOP. + 71| + 72| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: For each interface record look up the buyer vendor ID against LFA1 previous account number (ALTKN); fill SAP vendor number and name, or set an error message that the vendor master is not created, then append to GT_DATA. +- SAP 객체: ZFIT0121, LFA1 +- 업무 키워드: 구매처 마스터 대조, 이전 계정번호, 공급업체 코드, 마스터 미생성 오류, 수불 I/F +- English: Vendor Master, LFA1, ALTKN, Interface History, Validation +- 정의부(복사 시 함께 필요): [`ZFIT0121`](#decl-zfir0071top-8-zfit0121), [`GT_Z0121`](#decl-zfir0071top-36-gt_z0121), [`GT_DATA`](#decl-zfir0071top-14-gt_data), [`GT_LFA1`](#decl-zfir0071top-39-gt_lfa1), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0071/ZFIR0071F01#L58-L72` · confidence 0.9 · `ZFIR0071#ZFIR0071F01#FORM#DISPLAY_DATA#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0071/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0071/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0071/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0071/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0071/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0071/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0071/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0071/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0071/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0071/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0071/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0071/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0071/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0071/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0071/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0071/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0071/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0071/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0071/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0071/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0071/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0071/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0071/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0071/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0071#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0071/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0071/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0071/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0071/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs) +- 위치: `abap://ZFIR0071/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0071#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0071/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0071#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0071F01` L250-L265 (16줄) + +*ALV 핫스팟 클릭 시 구매처코드(LIFNR)이면 파라미터 ID 를 설정하고 FK03 으로 공급업체 마스터를 조회한다.* + +> 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 클릭한 행의 구매처코드가 있으면 LIF/BUK 파라미터 ID 를 설정하고 FK03 트랜잭션으로 공급업체 마스터를 조회한다. + +```abap + 253| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 254| CHECK SY-SUBRC EQ 0. + 255| + 256| CASE P_COLUMN_ID. + 257| * 구매처코드 + 258| WHEN 'LIFNR'. + 259| CHECK GT_DATA-LIFNR IS NOT INITIAL. + 260| SET PARAMETER ID 'LIF' FIELD GT_DATA-LIFNR. + 261| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 262| CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN. + 263| ENDCASE. +``` + +- **EN**: On LIFNR hotspot set parameter IDs LIF/BUK and call transaction FK03 to display the vendor master. +- 호출(파서): FK03 +- SAP 객체: FK03 +- 업무 키워드: 핫스팟, 구매처 조회, 공급업체 마스터, 파라미터 ID +- English: Hotspot, FK03, Vendor Master, SET PARAMETER +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0071top-14-gt_data), [`P_BUKRS`](#decl-zfir0071top-61-p_bukrs) +- 위치: `abap://ZFIR0071/ZFIR0071F01#L253-L263` · confidence 0.9 · `ZFIR0071#ZFIR0071F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0071F01` L134-L149 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 135| PERFORM SET_FIELD_CATALOGS. + 136| * Report Display. + 137| GV_VARI-REPORT = SY-REPID. + 138| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 139| EXPORTING + 140| I_STRUCTURE_NAME = 'GT_DATA' + 141| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 142| IS_LAYOUT = GV_LAYO + 143| IS_VARIANT = GV_VARI + 144| I_BUFFER_ACTIVE = C_X + 145| I_SAVE = C_A + 146| CHANGING + 147| IT_OUTTAB = GT_DATA[] + 148| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0071top-49-gv_vari), [`GV_ALV_GRID`](#decl-zfir0071top-47-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0071top-48-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_DATA`](#decl-zfir0071top-14-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0071/ZFIR0071F01#L135-L148` · confidence 0.85 · `ZFIR0071#ZFIR0071F01#FORM#ALV_GRID_DISPLAY#C1` + +## 정의부 (293건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0071CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0071cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfir0071cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0071TOP` (14건) + +#### TKA02 — tables · L8-L8 {#decl-zfir0071top-8-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0121, TKA02. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0071top-8-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0121, TKA02. +``` + +#### ZFIT0121 — tables · L8-L8 {#decl-zfir0071top-8-zfit0121} + +```abap +TABLES: ZFIT0040, ZFIT0121, TKA02. +``` + +#### GT_DATA — data · L14-L34 {#decl-zfir0071top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0, + BUKRS LIKE ZFIT0121-BUKRS, "회사 코드 + OCCR_YM LIKE ZFIT0121-OCCR_YM, "발생년월 + BUY_VNDR_ID LIKE ZFIT0121-BUY_VNDR_ID, "구매업체(하이시스) + LIFNR LIKE LFA1-LIFNR, "구매처코드 + LIFNR_T LIKE LFA1-NAME1, "구매처명 + PRD_ID LIKE ZFIT0121-PRD_ID, "상품ID + PRD_CD LIKE ZFIT0121-PRD_CD, "상품코드 + ITEM_ID LIKE ZFIT0121-ITEM_ID, "품목ID + ITEM_CD LIKE ZFIT0121-ITEM_CD, "품목코드 + ITEM_NM LIKE ZFIT0121-ITEM_NM, "품목명 + PQTY(12) TYPE P, "전월수량 + PAMT(12) TYPE P, "전월금액 + IQTY(12) TYPE P, "입고수량 + IAMT(12) TYPE P, "입고금액 + OQTY(12) TYPE P, "출고수량 + OAMT(12) TYPE P, "출고금액 + JQTY(12) TYPE P, "재고수량 + JAMT(12) TYPE P, "재고금액 + ERMSG(100) TYPE C, "에러메시지 + END OF GT_DATA. +``` + +#### GT_Z0121 — data · L36-L36 {#decl-zfir0071top-36-gt_z0121} + +```abap +DATA: GT_Z0121 LIKE ZFIT0121 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_LFA1 — data · L39-L43 {#decl-zfir0071top-39-gt_lfa1} + +```abap +DATA: BEGIN OF GT_LFA1 OCCURS 0, + LIFNR LIKE LFB1-LIFNR, + ALTKN LIKE LFB1-ALTKN, + NAME1 LIKE LFA1-NAME1, + END OF GT_LFA1. +``` + +#### GS_STABLE — data · L46-L46 {#decl-zfir0071top-46-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L47-L47 {#decl-zfir0071top-47-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L48-L48 {#decl-zfir0071top-48-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L49-L49 {#decl-zfir0071top-49-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L61-L61 {#decl-zfir0071top-61-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE ZFIT0121-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_OCCYM — parameter · L62-L62 {#decl-zfir0071top-62-p_occym} + +```abap +PARAMETERS: + P_OCCYM LIKE S001-SPMON OBLIGATORY. +``` + +#### S_ITEMCD — select-option · L63-L63 {#decl-zfir0071top-63-s_itemcd} + +```abap +SELECT-OPTIONS: S_ITEMCD FOR ZFIT0121-ITEM_CD. +``` + +#### S_PRDCD — select-option · L64-L64 {#decl-zfir0071top-64-s_prdcd} + +```abap +SELECT-OPTIONS: + S_PRDCD FOR ZFIT0121-PRD_CD. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0071 L31-42 | 0 | INITIALIZATION 에서 ALV 초기 설정(ALV_SETTING)만 수행하는 플러밍 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0071 L43-51 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0071 L52-58 | 0 | END-OF-SELECTION 에서 조회 데이터가 없으면 메시지 S003 후 종료하고, 있으면 화면 0100 을 호출해 ALV 를 표시한다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0071CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DATA | FORM | ZFIR0071F01 L9-17 | 0 | GET_ZFIT0121 로 물류/서비스 수불 I/F 이력을 추출하고 DISPLAY_DATA 로 표시 데이터를 만드는 단순 디스패치 FORM 이다. | +| GET_ZFIT0121 | FORM | ZFIR0071F01 L23-49 | 1 | 물류/서비스 수불 인터페이스 이력을 발생월·품목 조건으로 읽고 구매처 정보를 붙인다. | +| DISPLAY_DATA | FORM | ZFIR0071F01 L55-74 | 1 | 물류/서비스 수불 I/F 이력(ZFIT0121)의 구매처 ID 를 공급업체 마스터(LFA1 ALTKN)와 대조해 SAP 공급업체 코드·이름을 붙이고 미생성 건에 오류 메시지를 표시하는 GT_DATA 를 만든다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0071F01 L80-112 | 0 | 커스텀 컨테이너와 ALV 그리드를 생성하고 핫스팟 이벤트 핸들러·레이아웃·툴바 제외·필드카탈로그를 설정해 그리드를 표시하는 컨트롤 초기화 플러밍 FORM 이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0071F01 L118-128 | 0 | ALV 그리드 레이아웃(열 최적화, 선택모드, 줄무늬)을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0071F01 L134-149 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0071F01 L155-241 | 0 | GT_DATA ALV 필드카탈로그를 생성하고 구매처·상품/항목 코드·수불 수량/금액(입고·출고·재고 등)·오류메시지 컬럼 속성을 설정하는 ALV 플러밍 FORM 이다. | +| HOTSPOT_CLICK | FORM | ZFIR0071F01 L250-265 | 1 | ALV 핫스팟 클릭 시 구매처코드(LIFNR)이면 파라미터 ID 를 설정하고 FK03 으로 공급업체 마스터를 조회한다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0071O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0071O01 L21-35 | 0 | | diff --git a/wiki/programs/ZFIR0072.md b/wiki/programs/ZFIR0072.md new file mode 100644 index 0000000..618ac03 --- /dev/null +++ b/wiki/programs/ZFIR0072.md @@ -0,0 +1,3376 @@ +--- +type: abap-program +title: "ZFIR0072 — 수불부-자가소비내역 I/F 이력 조회" +description: "자가소비(사내 사용) 수불 인터페이스 이력(CBO 테이블 ZFIT0122)을 회사코드와 지점 ID 로 조회하는 리포트다. ZFIT0040 매핑 정보를 함께 읽어 ALV 로 보여준다. ZFIR0070(상품)·ZFIR0071(물류/서비스)과 같은 계열이다." +resource: "abap://ZFIR0072" +tags: ["인터페이스", "수불부", "리포트", "FI", "자가소비", "발생년월", "지점", "출고일", "상품", "사업장", "사업영역", "매핑", "사업장명", "조직단위", "번호범위", "채번", "일련번호", "키생성", "번호오브젝트", "권한체크"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CSKT", "J_1BBRANCH", "LTDX", "SKAT", "T001", "T007S", "USR01", "V_USERNAME", "ZFIT0040", "ZFIT0122", "ZFIT0160"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "aeb603754f2aad95dbd1fe7fa1a8eb0b31385eccc7c48772a687fbadc017023a" +x-unit-count: 91 +x-chunk-count: 37 +x-declaration-count: 281 +--- + +## 업무 목적 + +자가소비(사내 사용) 수불 인터페이스 이력(CBO 테이블 ZFIT0122)을 회사코드와 지점 ID 로 조회하는 리포트다. ZFIT0040 매핑 정보를 함께 읽어 ALV 로 보여준다. ZFIR0070(상품)·ZFIR0071(물류/서비스)과 같은 계열이다. + +## 주 흐름 + +1. ALV 설정을 준비한다 (ALV_SETTING) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 회사코드·지점 ID 조건으로 자가소비 수불 이력을 추출한다 (GET_ZFIT0122) +4. ZFIT0040 매핑과 텍스트를 붙여 표시 데이터를 만든다 (DISPLAY_DATA) +5. 화면 0100 에 ALV 로 출력한다 + +## 핵심 내부테이블 + +- `GT_DATA` — 자가소비 수불 I/F 이력 (채움: GET_ZFIT0122 / 소비: DISPLAY_DATA) + +## 테이블 / 외부 호출 + +- read: CSKT, J_1BBRANCH, LTDX, SKAT, T001, T007S, USR01, V_USERNAME, ZFIT0040, ZFIT0122, ZFIT0160 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (37건 / unit 33개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIR0072` L42-L50 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 44| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 45| + 46| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs) +- 위치: `abap://ZFIR0072/ZFIR0072#L44-L46` · confidence 0.8 · `ZFIR0072#ZFIR0072#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0072/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0072#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0122 — `ZFIR0072F01` L23-L58 (36줄) + +*자가소비 수불 이력을 읽고 지점 → 사업장 매핑을 통해 사업장명을 붙인다.* + +> 이 unit 의 조각 2개가 28/36줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드 마스터를 읽고, 발생년월·지점ID·지점출고일·상품ID 조건으로 자가소비 수불 테이블 ZFIT0122 를 조회한다. + +```abap + 27| SELECT SINGLE * + 28| FROM T001 + 29| WHERE BUKRS EQ P_BUKRS. + 30| + 31| SELECT * + 32| INTO TABLE GT_Z0122 + 33| FROM ZFIT0122 + 34| WHERE BUKRS EQ P_BUKRS + 35| AND OCCR_YM EQ P_OCCYM + 36| AND BRCH_ID IN S_BRCHID + 37| AND BRCH_WHIO_DT IN S_BRCHDT + 38| AND PRD_ID IN S_PRDID. + 39| + 40| CHECK GT_Z0122[] IS NOT INITIAL. +``` + +- **EN**: Reads the company code master and self-consumption inventory records from ZFIT0122 by period, branch, issue date and product. +- 테이블(파서): read [T001](/tables/T001.md), [ZFIT0122](/tables/ZFIT0122.md) / write - +- SAP 객체: ZFIT0122, T001, BRCH_ID, OCCR_YM +- 업무 키워드: 수불부, 자가소비, 발생년월, 지점, 출고일, 상품 +- English: inventory movement, self-consumption, period, branch, issue date, product +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs), [`ZFIT0122`](#decl-zfir0072top-8-zfit0122), [`GT_Z0122`](#decl-zfir0072top-32-gt_z0122), [`P_OCCYM`](#decl-zfir0072top-58-p_occym), [`S_BRCHID`](#decl-zfir0072top-59-s_brchid), [`S_BRCHDT`](#decl-zfir0072top-60-s_brchdt), [`S_PRDID`](#decl-zfir0072top-62-s_prdid) +- 위치: `abap://ZFIR0072/ZFIR0072F01#L27-L40` · confidence 0.88 · `ZFIR0072#ZFIR0072F01#FORM#GET_ZFIT0122#C1` + +#### [sql_select] 수불 건의 지점 ID 를 사업영역 매핑 테이블 ZFIT0040(GSBER2)으로 조회해 대응하는 SAP 사업장(BUPLA)을 찾고, J_1BBRANCH 에서 사업장명을 읽어 표시용 이름을 확보한다. + +```abap + 43| SELECT * + 44| INTO TABLE GT_Z0040 + 45| FROM ZFIT0040 + 46| FOR ALL ENTRIES IN GT_Z0122 + 47| WHERE GSBER2 EQ GT_Z0122-BRCH_ID. + 48| + 49| * 사업장명 추출 + 50| CHECK GT_Z0040[] IS NOT INITIAL. + 51| SELECT BRANCH NAME + 52| INTO TABLE GT_BRANCH + 53| FROM J_1BBRANCH + 54| FOR ALL ENTRIES IN GT_Z0040 + 55| WHERE BUKRS EQ P_BUKRS + 56| AND BRANCH EQ GT_Z0040-BUPLA. +``` + +- **EN**: Maps each record's branch ID to the SAP business place via ZFIT0040 (GSBER2) and reads the business-place name from J_1BBRANCH. +- 테이블(파서): read [ZFIT0040](/tables/ZFIT0040.md), [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: ZFIT0040, J_1BBRANCH, GSBER2, BUPLA +- 업무 키워드: 지점, 사업장, 사업영역, 매핑, 사업장명, 조직단위 +- English: branch, business place, business area, mapping, BUPLA, organizational unit +- 정의부(복사 시 함께 필요): [`ZFIT0040`](#decl-zfir0072top-8-zfit0040), [`GT_Z0040`](#decl-zfir0072top-33-gt_z0040), [`ZFIT0122`](#decl-zfir0072top-8-zfit0122), [`GT_Z0122`](#decl-zfir0072top-32-gt_z0122), [`GT_BRANCH`](#decl-zfir0072top-36-gt_branch), [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0072/ZFIR0072F01#L43-L56` · confidence 0.85 · `ZFIR0072#ZFIR0072F01#FORM#GET_ZFIT0122#C2` + +### FORM DISPLAY_DATA — `ZFIR0072F01` L64-L87 (24줄) + +*자가소비 I/F 이력 GT_Z0122 에 ZFIT0040 지점→사업장 매핑과 사업장명을 붙여 표시용 GT_DATA 를 만들고 매핑 누락은 오류 메시지로 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 19/24줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 각 자가소비 이력의 지점코드(BRCH_ID)를 GT_Z0040(ZFIT0040 GSBER2 매핑)으로 사업장(BUPLA)과 사업장명(GT_BRANCH)으로 변환해 GT_DATA 에 넣고, 매핑이 없으면 '지점코드에 매핑된 사업장 누락' 오류를 남기며 건수를 GV_DBCNT 에 둔다. + +```abap + 67| LOOP AT GT_Z0122. + 68| MOVE-CORRESPONDING GT_Z0122 TO GT_DATA. + 69| * 사업장 체크 + 70| READ TABLE GT_Z0040 WITH KEY GSBER2 = GT_Z0122-BRCH_ID. + 71| IF SY-SUBRC EQ 0. + 72| GT_DATA-BUPLA = GT_Z0040-BUPLA. + 73| * 사업장명 + 74| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_DATA-BUPLA. + 75| IF SY-SUBRC EQ 0. + 76| GT_DATA-BUPLA_T = GT_BRANCH-NAME. + 77| ENDIF. + 78| ELSE. + 79| GT_DATA-ERMSG = '지점코드에 매핑된 사업장 누락'. + 80| ENDIF. + 81| + 82| APPEND GT_DATA. CLEAR GT_DATA. + 83| ENDLOOP. + 84| + 85| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: For each own-consumption record map branch ID to business place and its name via ZFIT0040/GT_BRANCH, set an error message when no mapping exists, and count the result rows. +- SAP 객체: ZFIT0122, ZFIT0040 +- 업무 키워드: 자가소비 이력, 지점 매핑, 사업장명, 매핑 누락 오류 +- English: own consumption, business place, branch mapping, error message +- 정의부(복사 시 함께 필요): [`ZFIT0122`](#decl-zfir0072top-8-zfit0122), [`GT_Z0122`](#decl-zfir0072top-32-gt_z0122), [`GT_DATA`](#decl-zfir0072top-14-gt_data), [`ZFIT0040`](#decl-zfir0072top-8-zfit0040), [`GT_Z0040`](#decl-zfir0072top-33-gt_z0040), [`GT_BRANCH`](#decl-zfir0072top-36-gt_branch), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0072/ZFIR0072F01#L67-L85` · confidence 0.9 · `ZFIR0072#ZFIR0072F01#FORM#DISPLAY_DATA#C1` + +### EVENT END-OF-SELECTION — `ZFIR0072` L51-L57 (7줄) + +*END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.* + +> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 자가소비 이력 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 ALV 화면 0100 을 호출한다. + +```abap + 52| IF GT_DATA[] IS INITIAL. + 53| MESSAGE S003. + 54| LEAVE LIST-PROCESSING. + 55| ELSE. + 56| CALL SCREEN 0100. + 57| ENDIF. +``` + +- **EN**: If no data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV. +- 호출(파서): 0100 +- 업무 키워드: 결과 없음, 화면 호출 +- English: no data, call screen +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0072top-14-gt_data) +- 위치: `abap://ZFIR0072/ZFIR0072#L52-L57` · confidence 0.8 · `ZFIR0072#ZFIR0072#EVENT#END-OF-SELECTION#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0072/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0072/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0072/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0072/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0072/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0072/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0072/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0072/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0072/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0072/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0072/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0072/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0072/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0072/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0072/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0072/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0072/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0072/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0072/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0072/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0072/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0072/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0072/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0072/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0072#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0072/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0072/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0072/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0072/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0072top-57-p_bukrs) +- 위치: `abap://ZFIR0072/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0072#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0072/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0072#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0072F01` L139-L154 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 140| PERFORM SET_FIELD_CATALOGS. + 141| * Report Display. + 142| GV_VARI-REPORT = SY-REPID. + 143| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 144| EXPORTING + 145| I_STRUCTURE_NAME = 'GT_DATA' + 146| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 147| IS_LAYOUT = GV_LAYO + 148| IS_VARIANT = GV_VARI + 149| I_BUFFER_ACTIVE = C_X + 150| I_SAVE = C_A + 151| CHANGING + 152| IT_OUTTAB = GT_DATA[] + 153| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0072top-45-gv_vari), [`GV_ALV_GRID`](#decl-zfir0072top-43-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0072top-44-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_DATA`](#decl-zfir0072top-14-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0072/ZFIR0072F01#L140-L153` · confidence 0.85 · `ZFIR0072#ZFIR0072F01#FORM#ALV_GRID_DISPLAY#C1` + +## 정의부 (293건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0072TOP` (16건) + +#### TKA02 — tables · L8-L8 {#decl-zfir0072top-8-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0122, TKA02. +``` + +#### ZFIT0040 — tables · L8-L8 {#decl-zfir0072top-8-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0122, TKA02. +``` + +#### ZFIT0122 — tables · L8-L8 {#decl-zfir0072top-8-zfit0122} + +```abap +TABLES: ZFIT0040, ZFIT0122, TKA02. +``` + +#### GT_DATA — data · L14-L30 {#decl-zfir0072top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0, + BUKRS LIKE ZFIT0122-BUKRS, "회사 코드 + OCCR_YM LIKE ZFIT0122-OCCR_YM, "발생년월 + BRCH_ID LIKE ZFIT0122-BRCH_ID, "지점코드 + BUPLA LIKE J_1BBRANCH-BRANCH, "사업장 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + BRCH_WHIO_DT LIKE ZFIT0122-BRCH_WHIO_DT, "일자 + BRCH_WHIO_NO LIKE ZFIT0122-BRCH_WHIO_NO, "번호 + BRCH_WHIO_SEQ LIKE ZFIT0122-BRCH_WHIO_BKDN_SEQ, "순번 + OW_CSP_TYPE_CD LIKE ZFIT0122-OW_CSP_TYPE_CD, "타입 + CM_CD_NM LIKE ZFIT0122-CM_CD_NM, "명칭 + PRD_ID LIKE ZFIT0122-PRD_ID, "상품코드 + PRD_NM LIKE ZFIT0122-PRD_NM, "상품명 + OQTY(12) TYPE P, "출고수량 + OAMT(12) TYPE P, "출고금액 + ERMSG(100) TYPE C, "에러메시지 + END OF GT_DATA. +``` + +#### GT_Z0122 — data · L32-L32 {#decl-zfir0072top-32-gt_z0122} + +```abap +DATA: GT_Z0122 LIKE ZFIT0122 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0040 — data · L33-L33 {#decl-zfir0072top-33-gt_z0040} + +```abap +DATA: + GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BRANCH — data · L36-L39 {#decl-zfir0072top-36-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GS_STABLE — data · L42-L42 {#decl-zfir0072top-42-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L43-L43 {#decl-zfir0072top-43-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L44-L44 {#decl-zfir0072top-44-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L45-L45 {#decl-zfir0072top-45-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L57-L57 {#decl-zfir0072top-57-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE ZFIT0122-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_OCCYM — parameter · L58-L58 {#decl-zfir0072top-58-p_occym} + +```abap +PARAMETERS: + P_OCCYM LIKE S001-SPMON OBLIGATORY. +``` + +#### S_BRCHID — select-option · L59-L59 {#decl-zfir0072top-59-s_brchid} + +```abap +SELECT-OPTIONS: S_BRCHID FOR ZFIT0122-BRCH_ID. +``` + +#### S_BRCHDT — select-option · L60-L60 {#decl-zfir0072top-60-s_brchdt} + +```abap +SELECT-OPTIONS: + S_BRCHDT FOR ZFIT0122-BRCH_WHIO_DT. +``` + +#### S_PRDID — select-option · L62-L62 {#decl-zfir0072top-62-s_prdid} + +```abap +SELECT-OPTIONS: + S_PRDID FOR ZFIT0122-PRD_ID. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0072 L30-41 | 0 | INITIALIZATION 에서 ALV_SETTING 을 호출하는 플러밍 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0072 L42-50 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0072 L51-57 | 1 | END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. | +| GET_DATA | FORM | ZFIR0072F01 L9-17 | 0 | GET_ZFIT0122 로 자가소비 I/F 이력을 추출하고 DISPLAY_DATA 로 표시 데이터를 만드는 디스패치 FORM이다. | +| GET_ZFIT0122 | FORM | ZFIR0072F01 L23-58 | 2 | 자가소비 수불 이력을 읽고 지점 → 사업장 매핑을 통해 사업장명을 붙인다. | +| DISPLAY_DATA | FORM | ZFIR0072F01 L64-87 | 1 | 자가소비 I/F 이력 GT_Z0122 에 ZFIT0040 지점→사업장 매핑과 사업장명을 붙여 표시용 GT_DATA 를 만들고 매핑 누락은 오류 메시지로 표시하는 FORM이다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0072F01 L93-117 | 0 | 커스텀 컨테이너와 ALV 그리드 객체를 생성하고 레이아웃·툴바 제외·그리드 표시를 순서대로 호출하는 화면 구성 플러밍 FORM이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0072F01 L123-133 | 0 | ALV 레이아웃(열 최적화·선택모드 D·줄무늬)을 설정하는 ALV 설정 FORM이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0072F01 L139-154 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0072F01 L160-226 | 0 | GT_DATA 의 LVC 필드카탈로그를 생성하고 컬럼 텍스트·위치·정렬·숨김을 설정하는 ALV 설정 FORM이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0072O01 L10-15 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0072O01 L21-35 | 0 | | diff --git a/wiki/programs/ZFIR0080.md b/wiki/programs/ZFIR0080.md new file mode 100644 index 0000000..72943a1 --- /dev/null +++ b/wiki/programs/ZFIR0080.md @@ -0,0 +1,3947 @@ +--- +type: abap-program +title: "ZFIR0080 — 인사 정보 전표 생성" +description: "인사(HR) 시스템에서 넘어온 급여·인사 관련 정보(CBO 테이블 ZFIT0130/0131)를 읽어 회계전표를 생성하는 프로그램이다. 인사정보 연계 내역을 ALV 로 보여주고 사용자가 확인한 건에 대해 전표를 전기하며, 처리 결과를 ZFIT0130 에 기록한다. 급여 전기(인사연동)를 담당한다." +resource: "abap://ZFIR0080" +tags: ["인터페이스", "인사연동", "급여전기", "전표", "자동기표", "FI", "인사정보", "급여구분", "주민세", "소득세", "세목", "함께처리", "인터페이스내역", "코스트센터", "손익센터", "사업장", "지점고객", "관리회계영역", "텍스트보강", "조직단위"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["CEPCT", "CSKT", "DD07T", "J_1BBRANCH", "KNA1", "LTDX", "SKAT", "T001", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0130", "ZFIT0131", "ZFIT0160"] +x-tables-write: ["GT_DATA", "ZFIT0130"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN"] +x-code-hash: "1f164126a0442d8b36bb06244d7262a525609c0f3ce0f381ffda89e774e98946" +x-unit-count: 98 +x-chunk-count: 46 +x-declaration-count: 293 +--- + +## 업무 목적 + +인사(HR) 시스템에서 넘어온 급여·인사 관련 정보(CBO 테이블 ZFIT0130/0131)를 읽어 회계전표를 생성하는 프로그램이다. 인사정보 연계 내역을 ALV 로 보여주고 사용자가 확인한 건에 대해 전표를 전기하며, 처리 결과를 ZFIT0130 에 기록한다. 급여 전기(인사연동)를 담당한다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 인사정보 인터페이스 내역을 추출한다 (GET_ZFIT0130) +4. 고객·손익센터·코스트센터 텍스트를 붙여 표시 데이터를 만든다 (DISPLAY_DATA) +5. ALV 화면에 출력해 사용자가 전기 대상을 선택하게 한다 +6. 선택 건에 대해 전표를 생성하고 결과를 ZFIT0130 에 갱신한다 (POSTING_DOCUMET) + +## 핵심 내부테이블 + +- `GT_DATA` — 인사정보 I/F 내역 및 전기 대상 (채움: GET_ZFIT0130 / 소비: DISPLAY_DATA, POSTING_DOCUMET) + +## 테이블 / 외부 호출 + +- read: CEPCT, CSKT, DD07T, J_1BBRANCH, KNA1, LTDX, SKAT, T001, T007S, TKA02, USR01, V_USERNAME, ZFIT0130, ZFIT0131, ZFIT0160 +- write: GT_DATA, ZFIT0130 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET + +## 로직 조각 (46건 / unit 37개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_DOMAIN — `ZFIR0080F01` L9-L43 (35줄) + +*내역구분(ZDPGUBN)·조직구분(ZDOGUBN)·직책구분(ZDPOSIT) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다.* + +> 이 unit 의 조각 1개가 28/35줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 로그인 언어의 활성(AS4LOCAL='A') 도메인 고정값 텍스트를 DD07T 에서 ZDPGUBN·ZDOGUBN·ZDPOSIT 세 도메인에 대해 읽어 ALV 표시용 내역구분·조직구분·직책구분명으로 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZDPGUBN' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ 'A'. + 21| + 22| * 조직구분(ZDOGUBN) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDOGUBN' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ 'A'. + 31| + 32| * 직책구분(ZDPOSIT) + 33| SELECT DOMNAME + 34| DOMVALUE_L + 35| DDTEXT + 36| APPENDING TABLE GT_DOMAIN + 37| FROM DD07T + 38| WHERE DD07T~DOMNAME EQ 'ZDPOSIT' + 39| AND DD07T~DDLANGUAGE EQ SY-LANGU + 40| AND DD07T~AS4LOCAL EQ 'A'. +``` + +- **EN**: Read active fixed-value texts from DD07T for domains ZDPGUBN, ZDOGUBN and ZDPOSIT in the logon language to show category, organisation and position descriptions in the ALV. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 고정값 텍스트, 내역구분, 조직구분, 직책구분 +- English: Domain Fixed Values, DD07T, Text Lookup +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0080top-70-gt_domain) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L13-L40` · confidence 0.9 · `ZFIR0080#ZFIR0080F01#FORM#GET_DOMAIN#C1` + +### EVENT START-OF-SELECTION — `ZFIR0080` L51-L59 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 53| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 54| + 55| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs) +- 위치: `abap://ZFIR0080/ZFIR0080#L53-L55` · confidence 0.8 · `ZFIR0080#ZFIR0080#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0080/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0080#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_ZFIT0130 — `ZFIR0080F01` L63-L163 (101줄) + +*인사정보 연계 내역을 급여항목 구분별로 읽고, 조직단위 텍스트와 항목별 차·대변 계정 매핑을 붙인다.* + +> 이 unit 의 조각 3개가 90/101줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 급여구분이 주민세(P7) 또는 소득세(P8)면 두 구분을 함께 읽고, 그 외에는 선택한 구분만 읽는다 — 세목이 한 전표로 묶여야 하므로 조회 단계에서 합친다. + +```abap + 69| IF P_PGUBN EQ 'P7' OR P_PGUBN EQ 'P8'. + 70| SELECT * + 71| INTO TABLE GT_Z0130 + 72| FROM ZFIT0130 + 73| WHERE BUKRS EQ P_BUKRS + 74| AND SPMON EQ P_SPMON + 75| AND PGUBN IN ('P7', 'P8'). + 76| ELSE. + 77| SELECT * + 78| INTO TABLE GT_Z0130 + 79| FROM ZFIT0130 + 80| WHERE BUKRS EQ P_BUKRS + 81| AND SPMON EQ P_SPMON + 82| AND PGUBN EQ P_PGUBN. + 83| ENDIF. + 84| + 85| CHECK GT_Z0130[] IS NOT INITIAL. +``` + +- **EN**: Reads HR interface records for the selected payroll category, combining P7/P8 (resident tax and income tax) because they must post together. +- 테이블(파서): read [ZFIT0130](/tables/ZFIT0130.md) / write - +- SAP 객체: ZFIT0130, PGUBN, SPMON, BUKRS +- 업무 키워드: 인사정보, 급여구분, 주민세, 소득세, 세목, 함께처리, 인터페이스내역 +- English: HR interface, payroll category, resident tax, income tax, combined selection +- 정의부(복사 시 함께 필요): [`P_PGUBN`](#decl-zfir0080top-97-p_pgubn), [`GT_Z0130`](#decl-zfir0080top-39-gt_z0130), [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs), [`P_SPMON`](#decl-zfir0080top-96-p_spmon) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L69-L85` · confidence 0.87 · `ZFIR0080#ZFIR0080F01#FORM#GET_ZFIT0130#C1` + +#### [sql_select] 회사코드(T001)·관리회계영역(TKA02)을 읽고, 코스트센터명(CSKT)·손익센터명(CEPCT)·사업장명(J_1BBRANCH)·지점고객명(KNA1)을 FOR ALL ENTRIES 로 붙여 표시용 조직단위 텍스트를 확보한다. + +```abap + 87| SELECT SINGLE * + 88| FROM T001 + 89| WHERE BUKRS EQ P_BUKRS. + 90| + 91| SELECT SINGLE * + 92| FROM TKA02 + 93| WHERE BUKRS EQ P_BUKRS. + 94| * 코스트센터명 + 95| SELECT KOSTL LTEXT + 96| INTO TABLE GT_CSKT + 97| FROM CSKT + 98| FOR ALL ENTRIES IN GT_Z0130 + 99| WHERE SPRAS EQ SY-LANGU + 100| AND KOKRS EQ TKA02-KOKRS + 101| AND KOSTL EQ GT_Z0130-KOSTL. + 102| + 103| * 손익센터명 + 104| SELECT PRCTR KTEXT + 105| INTO TABLE GT_CEPCT + 106| FROM CEPCT + 107| FOR ALL ENTRIES IN GT_Z0130 + 108| WHERE SPRAS EQ SY-LANGU + 109| AND KOKRS EQ TKA02-KOKRS + 110| AND PRCTR EQ GT_Z0130-PRCTR. + 111| + 112| * 사업장명 + 113| SELECT BRANCH NAME + 114| INTO TABLE GT_BRANCH + 115| FROM J_1BBRANCH + 116| FOR ALL ENTRIES IN GT_Z0130 + 117| WHERE BUKRS EQ P_BUKRS + 118| AND BRANCH EQ GT_Z0130-BUPLA. + 119| + 120| * 지점고객명 + 121| SELECT KUNNR NAME1 + 122| INTO TABLE GT_KNA1 + 123| FROM KNA1 + 124| FOR ALL ENTRIES IN GT_Z0130 + 125| WHERE KUNNR EQ GT_Z0130-KUNNR. +``` + +- **EN**: Enriches records with controlling area, cost center, profit center, business place and customer names for display. +- 테이블(파서): read [T001](/tables/T001.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [CEPCT](/tables/CEPCT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [KNA1](/tables/KNA1.md) / write - +- SAP 객체: T001, TKA02, CSKT, CEPCT, J_1BBRANCH, KNA1 +- 업무 키워드: 코스트센터, 손익센터, 사업장, 지점고객, 관리회계영역, 텍스트보강, 조직단위 +- English: cost center, profit center, business place, customer, controlling area, text enrichment +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs), [`TKA02`](#decl-zfir0080top-7-tka02), [`GT_CSKT`](#decl-zfir0080top-50-gt_cskt), [`GT_Z0130`](#decl-zfir0080top-39-gt_z0130), [`GT_CEPCT`](#decl-zfir0080top-45-gt_cepct), [`GT_BRANCH`](#decl-zfir0080top-55-gt_branch), [`GT_KNA1`](#decl-zfir0080top-60-gt_kna1), [`KNA1`](#decl-zficom-38-kna1) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L87-L125` · confidence 0.88 · `ZFIR0080#ZFIR0080F01#FORM#GET_ZFIT0130#C2` + +#### [aggregation] 급여구분·항목(POSIT)별 계정 매핑 테이블 ZFIT0131 을 읽어 차변계정(HKONT_S)·대변계정(HKONT_H)을 가져오고, 두 계정의 이름을 SKAT 에서 각각 읽어 매핑 행에 채운다 — 전표 생성 시 쓰이는 계정결정 기준이다. + +```abap + 128| SELECT * + 129| INTO CORRESPONDING FIELDS OF TABLE GT_Z0131 + 130| FROM ZFIT0131 + 131| FOR ALL ENTRIES IN GT_Z0130 + 132| WHERE PGUBN EQ GT_Z0130-PGUBN + 133| AND POSIT EQ GT_Z0130-POSIT. + 134| + 135| CHECK GT_Z0131[] IS NOT INITIAL. + 136| + 137| * 계정명 추출 + 138| SELECT SAKNR TXT50 + 139| INTO TABLE GT_SKAT + 140| FROM SKAT + 141| FOR ALL ENTRIES IN GT_Z0131 + 142| WHERE SAKNR EQ GT_Z0131-HKONT_S. + 143| + 144| SELECT SAKNR TXT50 + 145| APPENDING TABLE GT_SKAT + 146| FROM SKAT + 147| FOR ALL ENTRIES IN GT_Z0131 + 148| WHERE SAKNR EQ GT_Z0131-HKONT_H. + 149| + 150| LOOP AT GT_Z0131. + 151| * 차변계정 + 152| READ TABLE GT_SKAT WITH KEY SAKNR = GT_Z0131-HKONT_S. + 153| IF SY-SUBRC EQ 0. + 154| GT_Z0131-HKONT_ST = GT_SKAT-TXT50. + 155| ENDIF. + 156| * 대변계정 + 157| READ TABLE GT_SKAT WITH KEY SAKNR = GT_Z0131-HKONT_H. + 158| IF SY-SUBRC EQ 0. + 159| GT_Z0131-HKONT_HT = GT_SKAT-TXT50. + 160| ENDIF. + 161| ENDLOOP. +``` + +- **EN**: Loads the per-item debit/credit account mapping from ZFIT0131 and fills both account texts from SKAT — the account determination basis for posting. +- 테이블(파서): read [ZFIT0131](/tables/ZFIT0131.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: ZFIT0131, SKAT, HKONT_S, HKONT_H, POSIT +- 업무 키워드: 계정매핑, 계정결정, 차변계정, 대변계정, 급여항목, 계정명, 전표생성기준 +- English: account mapping, account determination, debit account, credit account, payroll item, G/L account text +- 정의부(복사 시 함께 필요): [`GT_Z0131`](#decl-zfir0080top-34-gt_z0131), [`GT_Z0130`](#decl-zfir0080top-39-gt_z0130), [`GT_SKAT`](#decl-zfir0080top-65-gt_skat) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L128-L161` · confidence 0.86 · `ZFIR0080#ZFIR0080F01#FORM#GET_ZFIT0130#C3` + +### FORM DISPLAY_DATA — `ZFIR0080F01` L169-L279 (111줄) + +*인사정보 I/F 내역(ZFIT0130)에 내역구분별 계정 매핑(ZFIT0131)과 도메인·손익센터·코스트센터·사업장·고객 텍스트를 붙여 차변/대변 금액을 나누고 상태 아이콘을 설정하며 차대 합계 일치를 검증해 GT_DATA 를 만든다.* + +> 이 unit 의 조각 3개가 96/111줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 내역구분·순번으로 정렬한 I/F 내역마다 첫 행을 헤더(HCHK)로 표시하고 ZFIT0131 에서 내역구분·직책별 차변/대변 계정을 매핑(없으면 오류 상태)하며 도메인 텍스트(ZDPGUBN/ZDOGUBN/ZDPOSIT)·손익센터명(CEPCT)·코스트센터명(CSKT)·사업장명(J_1BBRANCH)·고객명(KNA1)을 붙인다. + +```abap + 174| SORT GT_Z0130 BY PGUBN SEQ. + 175| LOOP AT GT_Z0130. + 176| MOVE-CORRESPONDING GT_Z0130 TO GT_DATA. + 177| + 178| AT FIRST. + 179| GT_DATA-HCHK = C_X. + 180| ENDAT. + 181| + 182| * 내역 구분별 계정 매핑 + 183| READ TABLE GT_Z0131 WITH KEY PGUBN = GT_Z0130-PGUBN + 184| POSIT = GT_Z0130-POSIT. + 185| IF SY-SUBRC EQ 0. + 186| GT_DATA-HKONT_S = GT_Z0131-HKONT_S. + 187| GT_DATA-HKONT_H = GT_Z0131-HKONT_H. + 188| GT_DATA-HKONT_ST = GT_Z0131-HKONT_ST. + 189| GT_DATA-HKONT_HT = GT_Z0131-HKONT_HT. + 190| ELSE. + 191| GT_DATA-STATS = C_E. + 192| GT_DATA-MESSG = '내역구분에 따른 계정 매핑 누락'. + 193| ENDIF. + 194| + 195| * 내역구분명 + 196| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPGUBN' + 197| DOMVALUE_L = GT_Z0130-PGUBN. + 198| IF SY-SUBRC EQ 0. + 199| GT_DATA-PGUBN_T = GT_DOMAIN-DDTEXT. + 200| ENDIF. + 201| + 202| * 조직구분명 + 203| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDOGUBN' + 204| DOMVALUE_L = GT_Z0130-OGUBN. + 205| IF SY-SUBRC EQ 0. + 206| GT_DATA-OGUBN_T = GT_DOMAIN-DDTEXT. + 207| ENDIF. + 208| + 209| * 직책구분명 + 210| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDPOSIT' + 211| DOMVALUE_L = GT_Z0130-POSIT. + 212| IF SY-SUBRC EQ 0. + 213| GT_DATA-POSIT_T = GT_DOMAIN-DDTEXT. + 214| ENDIF. + 215| + 216| * 손익센터명 + 217| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0130-PRCTR. + 218| IF SY-SUBRC EQ 0. + 219| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 220| ENDIF. + 221| + 222| * 코스트센터명 + 223| READ TABLE GT_CSKT WITH KEY KOSTL = GT_Z0130-KOSTL. + 224| IF SY-SUBRC EQ 0. + 225| GT_DATA-KOSTL_T = GT_CSKT-LTEXT. + 226| ENDIF. + 227| + 228| * 사업장명 + 229| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_Z0130-BUPLA. + 230| IF SY-SUBRC EQ 0. + 231| GT_DATA-BUPLA_T = GT_BRANCH-NAME. + 232| ENDIF. + 233| + 234| * 지점고객명 + 235| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0130-KUNNR. + 236| IF SY-SUBRC EQ 0. + 237| GT_DATA-KUNNR_T = GT_KNA1-NAME1. + 238| ENDIF. +``` + +- **EN**: For each interface record sorted by category and sequence mark the first row as header, map debit/credit G/L accounts from ZFIT0131 by category and position (error status if missing) and attach domain texts, profit center, cost center, business place and customer names. +- SAP 객체: ZFIT0130, ZFIT0131, CEPCT, CSKT, J_1BBRANCH, KNA1 +- 업무 키워드: 계정 매핑, 내역구분, 직책구분, 손익센터명, 코스트센터명, 사업장명, 고객명 +- English: Account Mapping, Domain Text, Profit Center, Cost Center, Business Place, ZFIT0131 +- 정의부(복사 시 함께 필요): [`GT_Z0130`](#decl-zfir0080top-39-gt_z0130), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`C_X`](#decl-zficom-231-c_x), [`GT_Z0131`](#decl-zfir0080top-34-gt_z0131), [`C_E`](#decl-zficom-212-c_e), [`GT_DOMAIN`](#decl-zfir0080top-70-gt_domain), [`GT_CEPCT`](#decl-zfir0080top-45-gt_cepct), [`GT_CSKT`](#decl-zfir0080top-50-gt_cskt), [`GT_BRANCH`](#decl-zfir0080top-55-gt_branch), [`GT_KNA1`](#decl-zfir0080top-60-gt_kna1) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L174-L238` · confidence 0.85 · `ZFIR0080#ZFIR0080F01#FORM#DISPLAY_DATA#C1` + +#### [calculation] 차대구분(SHKZG)에 따라 금액을 차변(WRBTR_S/DMBTR_S) 또는 대변(WRBTR_H/DMBTR_H) 컬럼에 넣어 합계를 누적하고, 상태(S 성공/F·E 오류/기타 대기)에 따라 신호등 아이콘을 설정하며 이미 처리된 건이면 전기 버튼 숨김 플래그(GV_HIDE)를 켠다. + +```abap + 240| IF GT_Z0130-SHKZG EQ C_S. + 241| GT_DATA-WRBTR_S = GT_Z0130-WRBTR_C. + 242| GT_DATA-DMBTR_S = GT_Z0130-DMBTR_C. + 243| LV_WRBTR_S = LV_WRBTR_S + GT_Z0130-WRBTR_C. + 244| ELSE. + 245| GT_DATA-WRBTR_H = GT_Z0130-WRBTR_C. + 246| GT_DATA-DMBTR_H = GT_Z0130-DMBTR_C. + 247| LV_WRBTR_H = LV_WRBTR_H + GT_Z0130-WRBTR_C. + 248| ENDIF. + 249| + 250| * 상태 아이콘 + 251| CASE GT_DATA-STATS. + 252| WHEN C_S. + 253| GT_DATA-CICON = ICON_GREEN_LIGHT. + 254| WHEN C_F OR C_E. + 255| GT_DATA-CICON = ICON_RED_LIGHT. + 256| WHEN OTHERS. + 257| GT_DATA-CICON = ICON_YELLOW_LIGHT. + 258| ENDCASE. + 259| + 260| IF GT_DATA-STATS EQ C_F OR GT_DATA-STATS EQ C_S. + 261| GV_HIDE = C_X. + 262| ENDIF. + 263| + 264| APPEND GT_DATA. CLEAR GT_DATA. +``` + +- **EN**: Split amounts into debit or credit columns by SHKZG while accumulating totals, set the traffic-light icon by status (S success, F/E error, else pending) and set GV_HIDE when the record is already processed. +- 업무 키워드: 차변/대변 금액, 차대구분, 상태 아이콘, 처리완료 건 숨김 +- English: Debit/Credit Indicator, Status Icon, Amount Split +- 정의부(복사 시 함께 필요): [`GT_Z0130`](#decl-zfir0080top-39-gt_z0130), [`C_S`](#decl-zficom-226-c_s), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`LV_WRBTR_S`](#decl-zfir0080f01-171-lv_wrbtr_s), [`LV_WRBTR_H`](#decl-zfir0080f01-170-lv_wrbtr_h), [`C_F`](#decl-zficom-213-c_f), [`C_E`](#decl-zficom-212-c_e), [`GV_HIDE`](#decl-zfir0080top-77-gv_hide), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L240-L264` · confidence 0.85 · `ZFIR0080#ZFIR0080F01#FORM#DISPLAY_DATA#C2` + +#### [validation] 차변 합계와 대변 합계가 다르면 헤더 행에 '차/대변 금액 합계 불일치' 메시지를 기록하고 전기를 막는다(GV_HIDE). + +```abap + 268| IF LV_WRBTR_S NE LV_WRBTR_H. + 269| GT_DATA-MESSG = '차/대변 금액 합계 불일치'. + 270| MODIFY GT_DATA TRANSPORTING MESSG + 271| WHERE HCHK EQ C_X. + 272| GV_HIDE = C_X. + 273| ENDIF. +``` + +- **EN**: If total debit and credit amounts differ, write the imbalance message on the header row and block posting via GV_HIDE. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 업무 키워드: 차대 균형 검증, 합계 불일치, 전기 차단 +- English: Debit/Credit Balance, Validation, Posting Block +- 정의부(복사 시 함께 필요): [`LV_WRBTR_S`](#decl-zfir0080f01-171-lv_wrbtr_s), [`LV_WRBTR_H`](#decl-zfir0080f01-170-lv_wrbtr_h), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`C_X`](#decl-zficom-231-c_x), [`GV_HIDE`](#decl-zfir0080top-77-gv_hide) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L268-L273` · confidence 0.9 · `ZFIR0080#ZFIR0080F01#FORM#DISPLAY_DATA#C3` + +### EVENT END-OF-SELECTION — `ZFIR0080` L60-L66 (7줄) + +*END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.* + +> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 자가소비 이력 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 ALV 화면 0100 을 호출한다. + +```abap + 61| IF GT_DATA[] IS INITIAL. + 62| MESSAGE S003. + 63| LEAVE LIST-PROCESSING. + 64| ELSE. + 65| CALL SCREEN 0100. + 66| ENDIF. +``` + +- **EN**: If no data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV. +- 호출(파서): 0100 +- 업무 키워드: 결과 없음, 화면 호출 +- English: no data, call screen +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0080top-13-gt_data) +- 위치: `abap://ZFIR0080/ZFIR0080#L61-L66` · confidence 0.8 · `ZFIR0080#ZFIR0080#EVENT#END-OF-SELECTION#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0080/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0080/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0080/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0080/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0080/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0080/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0080/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0080/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0080/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0080/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0080/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0080/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0080/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0080/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0080/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0080/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0080/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0080/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0080/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0080/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0080/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0080/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0080/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0080/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0080#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0080/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0080/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0080/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0080/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs) +- 위치: `abap://ZFIR0080/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0080#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0080/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0080#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0080F01` L507-L529 (23줄) + +*ALV 핫스팟 클릭 시 고객코드(KUNNR)는 FD03 고객마스터 조회로, 전표번호(BELNR)는 FB03 전표 조회로 이동한다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 클릭한 행의 컬럼이 KUNNR 이면 파라미터 KUN/BUK 를 설정해 FD03 으로 고객 마스터를, BELNR 이면 BLN/BUK/GJR 을 설정해 FB03 으로 회계전표를 조회한다. + +```abap + 510| READ TABLE GT_DATA INDEX P_ROW_ID-INDEX. + 511| CHECK SY-SUBRC EQ 0. + 512| + 513| CASE P_COLUMN_ID. + 514| * 고객코드 + 515| WHEN 'KUNNR'. + 516| CHECK GT_DATA-KUNNR IS NOT INITIAL. + 517| SET PARAMETER ID 'KUN' FIELD GT_DATA-KUNNR. + 518| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 519| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 520| * 전표번호 + 521| WHEN 'BELNR'. + 522| CHECK GT_DATA-BELNR IS NOT INITIAL. + 523| SET PARAMETER ID 'BLN' FIELD GT_DATA-BELNR. + 524| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 525| SET PARAMETER ID 'GJR' FIELD GT_DATA-GJAHR. + 526| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 527| ENDCASE. +``` + +- **EN**: On hotspot click set parameter IDs and call FD03 to display the customer master for KUNNR or FB03 to display the accounting document for BELNR. +- 호출(파서): FD03, FB03 +- SAP 객체: FD03, FB03 +- 업무 키워드: 핫스팟, 고객 마스터 조회, 전표 조회, 파라미터 ID +- English: Hotspot, FD03, FB03, SET PARAMETER +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L510-L527` · confidence 0.9 · `ZFIR0080#ZFIR0080F01#FORM#HOTSPOT_CLICK#C1` + +### FORM ALV_GRID_DISPLAY — `ZFIR0080F01` L339-L354 (16줄) + +*필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다.* + +> 이 unit 의 조각 1개가 14/16줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 필드카탈로그 생성 후 SET_TABLE_FOR_FIRST_DISPLAY 로 업로드된 계정과목 목록 GT_DATA 를 레이아웃·변형·툴바 제외 설정과 함께 ALV 그리드에 표시한다. + +```abap + 340| PERFORM SET_FIELD_CATALOGS. + 341| * Report Display. + 342| GV_VARI-REPORT = SY-REPID. + 343| CALL METHOD GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY + 344| EXPORTING + 345| I_STRUCTURE_NAME = 'GT_DATA' + 346| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 347| IS_LAYOUT = GV_LAYO + 348| IS_VARIANT = GV_VARI + 349| I_BUFFER_ACTIVE = C_X + 350| I_SAVE = C_A + 351| CHANGING + 352| IT_OUTTAB = GT_DATA[] + 353| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Builds the field catalog and displays the uploaded G/L account list GT_DATA in the ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): SET_FIELD_CATALOGS, GV_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: ALV 출력, 계정과목 목록, 업로드 내역 확인 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, G/L Account +- 정의부(복사 시 함께 필요): [`GV_VARI`](#decl-zfir0080top-83-gv_vari), [`GV_ALV_GRID`](#decl-zfir0080top-81-gv_alv_grid), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO`](#decl-zfir0080top-82-gv_layo), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L340-L353` · confidence 0.85 · `ZFIR0080#ZFIR0080F01#FORM#ALV_GRID_DISPLAY#C1` + +### FORM POSTING_DOCUMET — `ZFIR0080F01` L538-L675 (138줄) + +*사용자 확인 후 인사정보 I/F 내역(GT_DATA)으로 FBV1 전표 헤더·아이템(BBKPF/BBSEG)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전표를 생성하고 결과(전표번호·상태·오류메시지)를 GT_DATA 와 ZFIT0130 에 기록한다.* + +> 이 unit 의 조각 3개가 113/138줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전기 확인 팝업(CHECK_CONFIRM_STEP) 승인 후 헤더 행(HCHK)에서 FBV1 전표 헤더(전표일·전기일·전표유형·회사코드·통화·'YYYY년MM월/내역명' 헤더텍스트)를 만들고, 각 라인은 차변(SHKZG='S')이면 전기키 40+차변계정+코스트센터, 대변이면 전기키 50+대변계정으로 하며 외화면 전표통화금액·원화금액을 함께 설정하고 손익센터를 넣어 BBSEG 를 구성한다. + +```abap + 555| PERFORM CHECK_CONFIRM_STEP USING TEXT-001 TEXT-002 SPACE C_N. + 556| CHECK GF_ANSWER EQ C_J. + 557| CLEAR: GT_Z0130_S[], GT_Z0130_S, + 558| GT_BBKPF[], GT_BBKPF, GT_BBSEG[], GT_BBSEG. + 559| LOOP AT GT_DATA. + 560| IF GT_DATA-HCHK EQ C_X. + 561| * 전표 헤더정보 + 562| GT_BBKPF-TCODE = 'FBV1'. + 563| GT_BBKPF-BLDAT = GT_DATA-BUDAT. + 564| GT_BBKPF-BUDAT = GT_DATA-BUDAT. + 565| GT_BBKPF-BLART = C_BLART. + 566| GT_BBKPF-BUKRS = P_BUKRS. + 567| GT_BBKPF-WAERS = GT_DATA-WAERS. + 568| * YYYY년MM월 / 내역명 + 569| CONCATENATE GT_DATA-GJAHR '년' GT_DATA-SPMON+4(2) '월' + 570| INTO GT_BBKPF-BKTXT. + 571| CONCATENATE GT_BBKPF-BKTXT '/' GT_DATA-PGUBN_T + 572| INTO GT_BBKPF-BKTXT SEPARATED BY SPACE. + 573| + 574| APPEND GT_BBKPF. + 575| ENDIF. + 576| + 577| * 전표 아이템 + 578| CLEAR GT_BBSEG. + 579| IF GT_DATA-SHKZG EQ C_S. + 580| GT_BBSEG-NEWBS = '40'. "전기키 + 581| GT_BBSEG-NEWKO = GT_DATA-HKONT_S. "계정 + 582| GT_BBSEG-KOSTL = GT_DATA-KOSTL. "코스트센터 + 583| ELSE. + 584| GT_BBSEG-NEWBS = '50'. "전기키 + 585| GT_BBSEG-NEWKO = GT_DATA-HKONT_H. "계정 + 586| ENDIF. + 587| IF GT_DATA-WAERS EQ T001-WAERS. + 588| GT_BBSEG-WRBTR = GT_DATA-DMBTR. "금액 + 589| ELSE. + 590| GT_BBSEG-WRBTR = GT_DATA-WRBTR. "금액 + 591| GT_BBSEG-DMBTR = GT_DATA-DMBTR. "원화금액 + 592| ENDIF. + 593| + 594| GT_BBSEG-PRCTR = GT_DATA-PRCTR. + 595| + 596| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 597| + 598| ENDLOOP. +``` + +- **EN**: After user confirmation build the FBV1 batch-input header (dates, document type, company code, currency, header text 'YYYY MM / description') from the header row and, per line, the BBSEG item with posting key 40 and debit account plus cost center for debit lines or 50 and credit account for credit lines, foreign/local amounts and profit center. +- 호출(파서): CHECK_CONFIRM_STEP +- SAP 객체: FBV1, BBKPF, BBSEG, T001 +- 업무 키워드: 급여 전표 생성, 전표 헤더, 전기키, 차변/대변 계정, 코스트센터, 손익센터, 외화 금액 +- English: Batch Input, BBKPF, BBSEG, Posting Key, Profit Center, Cost Center, FBV1 +- 정의부(복사 시 함께 필요): [`C_N`](#decl-zficom-221-c_n), [`GF_ANSWER`](#decl-zficom-90-gf_answer), [`C_J`](#decl-zficom-217-c_j), [`GT_Z0130_S`](#decl-zfir0080top-40-gt_z0130_s), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`C_X`](#decl-zficom-231-c_x), [`C_BLART`](#decl-zfir0080top-88-c_blart), [`P_BUKRS`](#decl-zfir0080top-95-p_bukrs), [`C_S`](#decl-zficom-226-c_s), [`T001`](#decl-zficom-11-t001) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L555-L598` · confidence 0.85 · `ZFIR0080#ZFIR0080F01#FORM#POSTING_DOCUMET#C1` + +#### [fm_call] Z_FI_DOCUMENT_POSTING 으로 BDC 전표를 생성하고 전표번호가 돌아오면 성공 상태(S, 초록불)로, 실패면 오류(E, 빨간불)로 표시하며 메시지 테이블에서 E/A 타입 메시지를 찾아 MESSAGE_TEXT_BUILD 로 오류 텍스트를 만들고 처리 일시·사용자를 GT_DATA 에 기록한다. + +```abap + 604| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 605| EXPORTING + 606| I_BDC_MODE = GV_MODE + 607| I_MESSAGE = SPACE + 608| IMPORTING + 609| E_BELNR = GV_BELNR + 610| E_GJAHR = GV_GJAHR + 611| E_BUKRS = GV_BUKRS + 612| TABLES + 613| T_BBKPF = GT_BBKPF + 614| T_BBSEG = GT_BBSEG + 615| T_MESSTAB = GT_FIMSG. + 616| + 617| IF GV_BELNR NE SPACE. + 618| GT_DATA-BELNR = GV_BELNR. + 619| GT_DATA-STATS = C_S. + 620| GT_DATA-CICON = ICON_GREEN_LIGHT. + 621| CLEAR GT_DATA-MESSG. + 622| GV_HIDE = C_X. + 623| ELSE. + 624| GT_DATA-STATS = C_E. + 625| GT_DATA-CICON = ICON_RED_LIGHT. + 626| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 627| IF SY-SUBRC <> 0. + 628| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 629| ENDIF. + 630| IF GT_FIMSG IS INITIAL. + 631| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 632| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 633| READ TABLE GT_MESS INDEX GV_INDEX. + 634| IF SY-SUBRC EQ 0. + 635| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 636| EXPORTING + 637| MSGID = GT_FIMSG-MSGID + 638| MSGNR = GT_FIMSG-MSGNO + 639| MSGV1 = GT_FIMSG-MSGV1 + 640| MSGV2 = GT_FIMSG-MSGV2 + 641| MSGV3 = GT_FIMSG-MSGV3 + 642| MSGV4 = GT_FIMSG-MSGV4 + 643| IMPORTING + 644| MESSAGE_TEXT_OUTPUT = GT_DATA-MESSG. + 645| ENDIF. + 646| ELSE. + 647| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 648| EXPORTING + 649| MSGID = GT_FIMSG-MSGID + 650| MSGNR = GT_FIMSG-MSGNO + 651| MSGV1 = GT_FIMSG-MSGV1 + 652| MSGV2 = GT_FIMSG-MSGV2 + 653| MSGV3 = GT_FIMSG-MSGV3 + 654| MSGV4 = GT_FIMSG-MSGV4 + 655| IMPORTING + 656| MESSAGE_TEXT_OUTPUT = GT_DATA-MESSG. + 657| ENDIF. + 658| ENDIF. + 659| GT_DATA-UDATE = SY-DATUM. + 660| GT_DATA-UTIME = SY-UZEIT. + 661| GT_DATA-UNAME = SY-UNAME. + 662| + 663| MODIFY GT_DATA TRANSPORTING BELNR STATS MESSG CICON + 664| UDATE UTIME UNAME + 665| WHERE BELNR EQ SPACE. +``` + +- **EN**: Call Z_FI_DOCUMENT_POSTING to post the document via BDC; on success store the document number with status S and a green icon, otherwise status E with a red icon and an error text built by MESSAGE_TEXT_BUILD from the E/A message, then stamp date, time and user into GT_DATA. +- 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) +- 호출(파서): Z_FI_DOCUMENT_POSTING, MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: Z_FI_DOCUMENT_POSTING, MESSAGE_TEXT_BUILD +- 업무 키워드: 전표 전기, BDC 전표 생성, 전기 결과, 오류 메시지, 상태 아이콘 +- English: Document Posting, BDC, Message Text, Posting Result, Z_FI_DOCUMENT_POSTING +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`C_S`](#decl-zficom-226-c_s), [`GV_HIDE`](#decl-zfir0080top-77-gv_hide), [`C_X`](#decl-zficom-231-c_x), [`C_E`](#decl-zficom-212-c_e) 외 3건 +- 위치: `abap://ZFIR0080/ZFIR0080F01#L604-L665` · confidence 0.9 · `ZFIR0080#ZFIR0080F01#FORM#POSTING_DOCUMET#C2` + +#### [db_write] 전기 결과가 반영된 인사정보 I/F 내역을 CBO 테이블 ZFIT0130 에 MODIFY 로 저장해 전표번호·상태·메시지 이력을 남긴다. + +```abap + 667| LOOP AT GT_DATA. + 668| MOVE-CORRESPONDING GT_DATA TO GT_Z0130_S. + 669| APPEND GT_Z0130_S. CLEAR GT_Z0130_S. + 670| ENDLOOP. + 671| IF GT_Z0130_S[] IS NOT INITIAL. + 672| MODIFY ZFIT0130 FROM TABLE GT_Z0130_S. + 673| ENDIF. +``` + +- **EN**: Write the processed interface records with document number, status and message back to the CBO table ZFIT0130 via MODIFY. +- 테이블(파서): read - / write [ZFIT0130](/tables/ZFIT0130.md) +- SAP 객체: ZFIT0130 +- 업무 키워드: 처리 결과 저장, 인사정보 I/F 이력, CBO 테이블 +- English: ZFIT0130, MODIFY, Interface History +- 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zfir0080top-13-gt_data), [`GT_Z0130_S`](#decl-zfir0080top-40-gt_z0130_s) +- 위치: `abap://ZFIR0080/ZFIR0080F01#L667-L673` · confidence 0.9 · `ZFIR0080#ZFIR0080F01#FORM#POSTING_DOCUMET#C3` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0080I01` L9-L17 (9줄) + +*화면 0100 PAI 에서 POST 기능코드일 때 POSTING_DOCUMET 을 호출해 인사정보 전표를 생성하는 사용자 명령 MODULE 이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 사용자 명령이 POST(전표 생성)이면 POSTING_DOCUMET 을 수행해 인사정보 I/F 내역으로 회계전표를 전기한다. + +```abap + 11| GV_UCOMM = SY-UCOMM. + 12| CASE GV_UCOMM. + 13| * 전표 생성 + 14| WHEN 'POST'. + 15| PERFORM POSTING_DOCUMET. + 16| ENDCASE. +``` + +- **EN**: Dispatch the POST user command to POSTING_DOCUMET, which posts the FI document for the HR interface data. +- 호출(파서): POSTING_DOCUMET +- 업무 키워드: 전표 생성, 사용자 명령, 전기 +- English: User Command, Document Posting, PAI +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm) +- 위치: `abap://ZFIR0080/ZFIR0080I01#L11-L16` · confidence 0.8 · `ZFIR0080#ZFIR0080I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (307건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0080CLS` (2건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L17 {#decl-zfir0080cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT — data · L29-L29 {#decl-zfir0080cls-29-gv_event} + +```abap +DATA : GV_EVENT TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0080TOP` (26건) + +#### TKA02 — tables · L7-L7 {#decl-zfir0080top-7-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0040 — tables · L7-L7 {#decl-zfir0080top-7-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0060 — tables · L7-L7 {#decl-zfir0080top-7-zfit0060} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0070 — tables · L7-L7 {#decl-zfir0080top-7-zfit0070} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### ZFIT0080 — tables · L7-L7 {#decl-zfir0080top-7-zfit0080} + +```abap +TABLES: ZFIT0040, ZFIT0060, ZFIT0070, ZFIT0080, TKA02. +``` + +#### GT_DATA — data · L13-L32 {#decl-zfir0080top-13-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0130. +DATA: CICON LIKE ICON-ID, "상태아이콘 + PGUBN_T LIKE DD07T-DDTEXT, "발생/취소 + OGUBN_T LIKE DD07T-DDTEXT, "거래유형명 + POSIT_T LIKE DD07T-DDTEXT, "결제유형명 + PRCTR_T LIKE CEPCT-LTEXT, "손익센터명 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + KUNNR_T LIKE KNA1-NAME1, "고객명 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + HKONT_S LIKE ZFIT0131-HKONT_S, + HKONT_H LIKE ZFIT0131-HKONT_H, + HKONT_ST LIKE SKAT-TXT50, + HKONT_HT LIKE SKAT-TXT50, + WRBTR_S LIKE ZFIT0130-WRBTR_C, + DMBTR_S LIKE ZFIT0130-DMBTR_C, + WRBTR_H LIKE ZFIT0130-WRBTR_C, + DMBTR_H LIKE ZFIT0130-DMBTR_C, + HCHK(1) TYPE C, + END OF GT_DATA. +``` + +#### GT_Z0131 — data · L34-L37 {#decl-zfir0080top-34-gt_z0131} + +```abap +DATA: BEGIN OF GT_Z0131 OCCURS 0. + INCLUDE STRUCTURE ZFIT0131. +DATA: HKONT_ST LIKE SKAT-TXT50, + END OF GT_Z0131. +``` + +#### GT_Z0130 — data · L39-L39 {#decl-zfir0080top-39-gt_z0130} + +```abap +DATA: GT_Z0130 LIKE ZFIT0130 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0130_S — data · L40-L40 {#decl-zfir0080top-40-gt_z0130_s} + +```abap +DATA: + GT_Z0130_S LIKE ZFIT0130 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0040 — data · L42-L42 {#decl-zfir0080top-42-gt_z0040} + +```abap +DATA: + GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_CEPCT — data · L45-L48 {#decl-zfir0080top-45-gt_cepct} + +```abap +DATA: BEGIN OF GT_CEPCT OCCURS 0, + PRCTR LIKE CEPCT-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPCT. +``` + +#### GT_CSKT — data · L50-L53 {#decl-zfir0080top-50-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + LTEXT LIKE CSKT-LTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L55-L58 {#decl-zfir0080top-55-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_KNA1 — data · L60-L63 {#decl-zfir0080top-60-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_SKAT — data · L65-L68 {#decl-zfir0080top-65-gt_skat} + +```abap +DATA: BEGIN OF GT_SKAT OCCURS 0, + SAKNR LIKE SKAT-SAKNR, + TXT50 LIKE SKAT-TXT50, + END OF GT_SKAT. +``` + +#### GT_DOMAIN — data · L70-L74 {#decl-zfir0080top-70-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### GV_MONTH — data · L76-L76 {#decl-zfir0080top-76-gv_month} + +```abap +DATA: GV_MONTH(2) TYPE N. +``` + +#### GV_HIDE — data · L77-L77 {#decl-zfir0080top-77-gv_hide} + +```abap +DATA: + GV_HIDE(1) TYPE C. " 포스팅 가능 여부 +``` + +#### GS_STABLE — data · L80-L80 {#decl-zfir0080top-80-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L81-L81 {#decl-zfir0080top-81-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L82-L82 {#decl-zfir0080top-82-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L83-L83 {#decl-zfir0080top-83-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### C_BLART — constants · L88-L88 {#decl-zfir0080top-88-c_blart} + +```abap +CONSTANTS: C_BLART LIKE BKPF-BLART VALUE 'SA'. "GL전표 +``` + +#### P_BUKRS — parameter · L95-L95 {#decl-zfir0080top-95-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_SPMON — parameter · L96-L96 {#decl-zfir0080top-96-p_spmon} + +```abap +PARAMETERS: + P_SPMON LIKE S001-SPMON OBLIGATORY. +``` + +#### P_PGUBN — parameter · L97-L98 {#decl-zfir0080top-97-p_pgubn} + +```abap +PARAMETERS: + P_PGUBN LIKE ZFIT0130-PGUBN AS LISTBOX OBLIGATORY + VISIBLE LENGTH 20. +``` + +### `ZFIR0080F01` (2건) + +#### LV_WRBTR_H — data · unit 로컬 · L170-L170 {#decl-zfir0080f01-170-lv_wrbtr_h} + +```abap + DATA: LV_WRBTR_H LIKE BSEG-WRBTR. +``` + +#### LV_WRBTR_S — data · unit 로컬 · L171-L171 {#decl-zfir0080f01-171-lv_wrbtr_s} + +```abap +DATA: + LV_WRBTR_S LIKE BSEG-WRBTR. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0080 L32-50 | 0 | INITIALIZATION 에서 ALV 설정과 도메인 텍스트를 준비하고 정산월(P_SPMON) 기본값을 지난달로 설정한다. | +| START-OF-SELECTION | EVENT | ZFIR0080 L51-59 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0080 L60-66 | 1 | END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0080CLS L23-25 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DOMAIN | FORM | ZFIR0080F01 L9-43 | 1 | 내역구분(ZDPGUBN)·조직구분(ZDOGUBN)·직책구분(ZDPOSIT) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다. | +| GET_DATA | FORM | ZFIR0080F01 L49-57 | 0 | GET_ZFIT0130 으로 인사정보 I/F 내역을 추출하고 DISPLAY_DATA 로 표시 데이터를 만드는 단순 디스패치 FORM 이다. | +| GET_ZFIT0130 | FORM | ZFIR0080F01 L63-163 | 3 | 인사정보 연계 내역을 급여항목 구분별로 읽고, 조직단위 텍스트와 항목별 차·대변 계정 매핑을 붙인다. | +| DISPLAY_DATA | FORM | ZFIR0080F01 L169-279 | 3 | 인사정보 I/F 내역(ZFIT0130)에 내역구분별 계정 매핑(ZFIT0131)과 도메인·손익센터·코스트센터·사업장·고객 텍스트를 붙여 차변/대변 금액을 나누고 상태 아이콘을 설정하며 차대 합계 일치를 검증해 GT_DATA 를 만든다. | +| CREATE_AND_INIT_CONTROLS | FORM | ZFIR0080F01 L285-317 | 0 | 커스텀 컨테이너와 ALV 그리드를 생성하고 핫스팟 이벤트 핸들러·레이아웃·툴바 제외·필드카탈로그를 설정해 그리드를 표시하는 컨트롤 초기화 플러밍 FORM 이다. | +| SET_GRID_LAYOUT | FORM | ZFIR0080F01 L323-333 | 0 | ALV 그리드 레이아웃(열 최적화, 선택모드, 줄무늬)을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY | FORM | ZFIR0080F01 L339-354 | 1 | 필드카탈로그를 만들고 GT_DATA(업로드된 계정과목 목록)를 CL_GUI_ALV_GRID 로 화면 0100 에 출력한다. | +| SET_FIELD_CATALOGS | FORM | ZFIR0080F01 L360-498 | 0 | GT_DATA ALV 필드카탈로그를 생성하고 상태 아이콘·일자·내역/조직/직책 구분·고객(핫스팟)·차대 금액·코스트센터·손익센터·사업장·전표번호(핫스팟)·메시지 컬럼 속성을 설정하는 ALV 플러밍 FORM 이다. | +| HOTSPOT_CLICK | FORM | ZFIR0080F01 L507-529 | 1 | ALV 핫스팟 클릭 시 고객코드(KUNNR)는 FD03 고객마스터 조회로, 전표번호(BELNR)는 FB03 전표 조회로 이동한다. | +| POSTING_DOCUMET | FORM | ZFIR0080F01 L538-675 | 3 | 사용자 확인 후 인사정보 I/F 내역(GT_DATA)으로 FBV1 전표 헤더·아이템(BBKPF/BBSEG)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전표를 생성하고 결과(전표번호·상태·오류메시지)를 GT_DATA 와 ZFIT0130 에 기록한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0080I01 L9-17 | 1 | 화면 0100 PAI 에서 POST 기능코드일 때 POSTING_DOCUMET 을 호출해 인사정보 전표를 생성하는 사용자 명령 MODULE 이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0080O01 L10-19 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0080O01 L25-39 | 0 | | diff --git a/wiki/programs/ZFIR0090.md b/wiki/programs/ZFIR0090.md new file mode 100644 index 0000000..6206f22 --- /dev/null +++ b/wiki/programs/ZFIR0090.md @@ -0,0 +1,4129 @@ +--- +type: abap-program +title: "ZFIR0090 — 전자결재 승인 자동기표 (출장비/교통비)" +description: "전자결재 시스템에서 승인된 출장비·교통비 경비 건(CBO 테이블 ZFIT0140, ZIFT0010)을 읽어 회계전표를 자동 기표하는 프로그램이다. BKPF/BSEG 와 자산·고객·공급업체·자재 텍스트를 붙여 헤더/아이템 2단 ALV 로 보여주고, BSEG_PROCESS(298줄)에서 전표 아이템을 구성해 전기한다. 회사코드 권한 외에 프로그램 실행 권한(AUTHORITY_PG)도 별도로 검증한다." +resource: "abap://ZFIR0090" +tags: ["전자결재", "경비처리", "전표", "자동기표", "승인관리", "FI", "전표헤더", "전표아이템", "전표번호", "회계연도", "기준데이터", "입력자", "전표유형", "코스트센터", "사업장", "전기키", "고객명", "구매처명", "계정명", "텍스트보강"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["ANLA", "BKPF", "BSEG", "CSKT", "J_1BBRANCH", "KNA1", "LFA1", "LTDX", "MAKT", "SKAT", "T001", "T003T", "T007S", "T052U", "TBSLT", "TKA02", "USR01", "V_USERNAME", "ZFIT0040", "ZFIT0140", "ZFIT0160", "ZIFT0010"] +x-tables-write: ["ZIFT0010"] +x-calls: ["AS03", "BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CALL_BROWSER", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "MM03", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR"] +x-code-hash: "c444a65ca757dae15c6d5925d1ff5ba93bc48b268e24850982759ce45d7642c4" +x-unit-count: 106 +x-chunk-count: 43 +x-declaration-count: 316 +--- + +## 업무 목적 + +전자결재 시스템에서 승인된 출장비·교통비 경비 건(CBO 테이블 ZFIT0140, ZIFT0010)을 읽어 회계전표를 자동 기표하는 프로그램이다. BKPF/BSEG 와 자산·고객·공급업체·자재 텍스트를 붙여 헤더/아이템 2단 ALV 로 보여주고, BSEG_PROCESS(298줄)에서 전표 아이템을 구성해 전기한다. 회사코드 권한 외에 프로그램 실행 권한(AUTHORITY_PG)도 별도로 검증한다. + +## 주 흐름 + +1. ALV 설정을 준비한다 (ALV_SETTING) +2. 회사코드 권한과 프로그램 실행 권한을 각각 검증한다 (AUTHORITY_BUKRS → AUTHORITY_PG) +3. 전자결재 승인된 경비 내역을 추출한다 (GET_DATA) +4. 결재상신 중인 문서를 별도로 조회한다 (DISPLAY_PROCESSING_DATA) +5. 스플리터 컨테이너에 헤더/아이템 2단 ALV 를 띄운다 (SPLITTER_CONTAINER) +6. 전표 아이템을 구성해 전기하고 결과를 ZIFT0010 에 기록한다 (BSEG_PROCESS) + +## 핵심 내부테이블 + +- `GT_HEAD` — 승인 경비 문서 헤더 (채움: GET_DATA / 소비: SET_FIELD_CATALOGS1) +- `GT_ITEM` — 생성할 전표 아이템 (채움: BSEG_PROCESS / 소비: SET_FIELD_CATALOGS2) + +## 테이블 / 외부 호출 + +- read: ANLA, BKPF, BSEG, CSKT, J_1BBRANCH, KNA1, LFA1, LTDX, MAKT, SKAT, T001, T003T, T007S, T052U, TBSLT, TKA02, USR01, V_USERNAME, ZFIT0040, ZFIT0140, ZFIT0160, ZIFT0010 +- write: ZIFT0010 +- 외부 호출: AS03, BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CALL_BROWSER, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, MM03, NUMBER_GET_NEXT, NUMERIC_CHECK + +## 로직 조각 (43건 / unit 36개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0090/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0090#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0090/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DATA — `ZFIR0090F01` L9-L80 (72줄) + +*출장비/교통비 구분·회사코드·공급업체(사원)·기안일·전기일 조건으로 전자결재 승인 경비 내역 ZFIT0140을 읽고 공급업체명·사업영역별 코스트센터(ZFIT0040)·코스트센터명을 붙여 GT_HEAD에 COLLECT 집계하는 FORM이다.* + +> 이 unit 의 조각 2개가 60/72줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 라디오버튼으로 경비 구분(1 출장비/2 교통비)을 정하고 회사코드(T001)와 공급업체명(LFA1)을 읽은 뒤 회사코드·공급업체·기안일·전기일·구분 조건으로 승인 경비 내역 ZFIT0140을 조회한다. + +```abap + 16| IF P_RA = 'X'. + 17| L_GUBUN = '1'. + 18| ELSEIF P_RB = 'X'. + 19| L_GUBUN = '2'. + 20| ENDIF. + 21| + 22| + 23| SELECT SINGLE * FROM T001 + 24| WHERE BUKRS = P_BUKRS. + 25| + 26| + 27| SELECT SINGLE NAME1 INTO G_NAME1 + 28| FROM LFA1 + 29| WHERE LIFNR = P_LIFNR. + 30| + 31| + 32| SELECT * + 33| INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT0140 + 34| FROM ZFIT0140 + 35| WHERE BUKRS = P_BUKRS + 36| AND LIFNR = P_LIFNR + 37| AND DRAFT_DATE IN S_DRAFT + 38| AND BUDAT IN S_BUDAT + 39| AND GUBUN = L_GUBUN. +``` + +- **EN**: Derives the expense category (travel or transportation) from radio buttons, reads company code and vendor name, and selects approved expense records from ZFIT0140 by company code, vendor, draft date, posting date and category. +- 테이블(파서): read [T001](/tables/T001.md), [LFA1](/tables/LFA1.md), [ZFIT0140](/tables/ZFIT0140.md) / write - +- SAP 객체: ZFIT0140, T001, LFA1 +- 업무 키워드: 승인 경비 조회, 출장비, 교통비, 기안일, 공급업체명 +- English: Expense Document, Travel Expense, Vendor Master, CBO Table, Select-Options +- 정의부(복사 시 함께 필요): [`P_RA`](#decl-zfir0090top-209-p_ra), [`L_GUBUN`](#decl-zfir0090f01-12-l_gubun), [`P_RB`](#decl-zfir0090top-211-p_rb), [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`G_NAME1`](#decl-zfir0090top-168-g_name1), [`LFA1`](#decl-zficom-36-lfa1), [`P_LIFNR`](#decl-zfir0090top-199-p_lifnr), [`IT_ZFIT0140`](#decl-zfir0090top-19-it_zfit0140), [`S_DRAFT`](#decl-zfir0090top-202-s_draft), [`S_BUDAT`](#decl-zfir0090top-203-s_budat) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L16-L39` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#GET_DATA#C1` + +#### [aggregation] 경비 건마다 대변(SHKZG C) 금액은 0으로 두고 구분명(출장비/교통비)·공급업체명(LFA1)·사업영역별 코스트센터(ZFIT0040)·코스트센터명(CSKT, KR01)을 붙여 GT_HEAD에 COLLECT로 금액을 집계한다. + +```abap + 42| LOOP AT IT_ZFIT0140. + 43| + 44| IF IT_ZFIT0140-SHKZG = 'C'. + 45| CLEAR: IT_ZFIT0140-AMT. + 46| ENDIF. + 47| + 48| MOVE-CORRESPONDING IT_ZFIT0140 TO GT_HEAD. + 49| + 50| IF GT_HEAD-GUBUN = '1'. + 51| GT_HEAD-GUBUN_N = '출장비'. + 52| ELSEIF GT_HEAD-GUBUN = '2'. + 53| GT_HEAD-GUBUN_N = '교통비'. + 54| ENDIF. + 55| + 56| + 57| SELECT SINGLE NAME1 INTO GT_HEAD-NAME1 + 58| FROM LFA1 + 59| WHERE LIFNR = GT_HEAD-LIFNR. + 60| + 61| + 62| SELECT SINGLE KOSTL INTO GT_HEAD-KOSTL + 63| FROM ZFIT0040 + 64| WHERE BUKRS = GT_HEAD-BUKRS + 65| AND GSBER2 = GT_HEAD-GSBER2. + 66| + 67| SELECT SINGLE KTEXT INTO GT_HEAD-TEXT1 + 68| FROM CSKT + 69| WHERE SPRAS = SY-LANGU + 70| AND KOKRS = 'KR01' + 71| AND KOSTL = GT_HEAD-KOSTL + 72| AND DATBI >= SY-DATUM. + 73| + 74| COLLECT GT_HEAD. + 75| CLEAR GT_HEAD. + 76| + 77| ENDLOOP. +``` + +- **EN**: For each expense record, zeroes credit-side amounts, adds category text, vendor name, business-area cost center mapping (ZFIT0040) and cost center text (CSKT), then aggregates into GT_HEAD with COLLECT. +- 테이블(파서): read [LFA1](/tables/LFA1.md), [ZFIT0040](/tables/ZFIT0040.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: LFA1, ZFIT0040, CSKT +- 업무 키워드: 경비 집계, 코스트센터 매핑, 사업영역, 코스트센터명, COLLECT +- English: Aggregation, Cost Center Mapping, Business Area, Cost Center Text, COLLECT +- 정의부(복사 시 함께 필요): [`IT_ZFIT0140`](#decl-zfir0090top-19-it_zfit0140), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LFA1`](#decl-zficom-36-lfa1) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L42-L77` · confidence 0.85 · `ZFIR0090#ZFIR0090F01#FORM#GET_DATA#C2` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0090/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0090/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0090/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0090/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0090/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0090/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0090/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0090/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0090/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0090/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0090/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0090/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0090/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0090/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0090/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0090/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0090/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0090/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0090/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0090/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0090/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0090/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0090/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0090#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0090/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0090/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0090/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_LIFNR`](#decl-zfir0090top-199-p_lifnr), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0090/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs) +- 위치: `abap://ZFIR0090/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0090#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0090/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0090#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0090F01` L490-L511 (22줄) + +*헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 헤더 행을 읽어 전표번호 컬럼이면 BSEG_PROCESS로 해당 경비 문서의 전표 아이템(GT_ITEM2)을 만들어 전표번호·항목 순으로 정렬하고 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다. + +```abap + 493| READ TABLE GT_HEAD INDEX P_ROW_ID-INDEX. + 494| CHECK SY-SUBRC EQ 0. + 495| + 496| CASE P_COLUMN_ID. + 497| * 전표번호 + 498| WHEN 'BELNR'. + 499| + 500| PERFORM BSEG_PROCESS. + 501| + 502| SORT GT_ITEM2 BY BELNR BUZEI. + 503| * PAI로 호출 + 504| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 505| EXPORTING + 506| NEW_CODE = 'ZUSER'. + 507| + 508| + 509| ENDCASE. +``` + +- **EN**: On document-number hotspot, builds the line items for the selected expense document via BSEG_PROCESS, sorts them and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): BSEG_PROCESS, CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 핫스팟 클릭, 전표 아이템 구성, 화면 갱신 +- English: Hotspot Click, Line Item, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L493-L509` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#HOTSPOT_CLICK#C1` + +### FORM BSEG_PROCESS — `ZFIR0090F01` L701-L998 (298줄) + +*선택한 결재 건의 전표 헤더·아이템을 읽고 표시용 조직단위·거래처·계정 텍스트를 붙인다.* + +> 이 unit 의 조각 2개가 98/298줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 선택한 결재 건의 회사코드·회계연도·전표번호로 전표 헤더(BKPF)와 아이템(BSEG)을 읽어온다 — 이후 아이템 구성과 화면 표시의 기준 데이터다. + +```abap + 710| SELECT * INTO TABLE GT_BKPF + 711| FROM BKPF + 712| WHERE BUKRS EQ GT_HEAD-BUKRS + 713| AND GJAHR EQ GT_HEAD-GJAHR + 714| AND BELNR EQ GT_HEAD-BELNR. + 715| + 716| + 717| SELECT * INTO TABLE GT_BSEG + 718| FROM BSEG + 719| WHERE BUKRS EQ GT_HEAD-BUKRS + 720| AND GJAHR EQ GT_HEAD-GJAHR + 721| AND BELNR EQ GT_HEAD-BELNR. +``` + +- **EN**: Reads the document header (BKPF) and items (BSEG) for the selected approval record by company code, fiscal year and document number. +- 테이블(파서): read [BKPF](/tables/BKPF.md), [BSEG](/tables/BSEG.md) / write - +- SAP 객체: BKPF, BSEG, BELNR, GJAHR, BUKRS +- 업무 키워드: 전표헤더, 전표아이템, 전표번호, 회계연도, 기준데이터 +- English: document header, line items, document number, fiscal year, BKPF, BSEG +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0090top-15-gt_bkpf), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0090top-16-gt_bseg) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L710-L721` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#BSEG_PROCESS#C1` + +#### [sql_select] 표시용 텍스트를 일괄 조회한다 — 입력자명(V_USERNAME)·전표유형명(T003T)·코스트센터명(CSKT, 관리회계영역 TKA02 기준)·사업장명(J_1BBRANCH)·전기키명(TBSLT)·고객명(KNA1)·구매처명(LFA1)·G/L 계정명(SKAT, HKONT 와 SAKNR 두 필드로 두 번 읽고 중복 제거). + +```abap + 726| CLEAR : GT_UNAME[], GT_UNAME. + 727| SELECT BNAME + 728| NAME_TEXT AS NAMET + 729| INTO TABLE GT_UNAME + 730| FROM V_USERNAME + 731| FOR ALL ENTRIES IN GT_BKPF + 732| WHERE BNAME EQ GT_BKPF-USNAM. + 733| + 734| * 전표유형명 + 735| CLEAR : GT_T003T[], GT_T003T. + 736| SELECT BLART LTEXT + 737| INTO TABLE GT_T003T + 738| FROM T003T + 739| FOR ALL ENTRIES IN GT_BKPF + 740| WHERE SPRAS EQ SY-LANGU + 741| AND BLART EQ GT_BKPF-BLART. + 742| + 743| * 코스트센터명 + 744| CLEAR : GT_CSKT[], GT_CSKT, TKA02. + 745| SELECT SINGLE * + 746| FROM TKA02 + 747| WHERE BUKRS EQ P_BUKRS. + 748| + 749| SELECT KOSTL KTEXT + 750| INTO TABLE GT_CSKT + 751| FROM CSKT + 752| FOR ALL ENTRIES IN GT_BSEG + 753| WHERE SPRAS EQ SY-LANGU + 754| AND KOKRS EQ TKA02-KOKRS + 755| AND KOSTL EQ GT_BSEG-KOSTL. + 756| + 757| * 사업장명 + 758| CLEAR : GT_BRANCH[], GT_BRANCH. + 759| SELECT BRANCH NAME + 760| INTO TABLE GT_BRANCH + 761| FROM J_1BBRANCH + 762| FOR ALL ENTRIES IN GT_BSEG + 763| WHERE BUKRS EQ P_BUKRS + 764| AND BRANCH EQ GT_BSEG-BUPLA. + 765| + 766| * 전기키명 + 767| CLEAR : GT_TBSLT[], GT_TBSLT. + 768| SELECT BSCHL UMSKZ LTEXT + 769| INTO TABLE GT_TBSLT + 770| FROM TBSLT + 771| FOR ALL ENTRIES IN GT_BSEG + 772| WHERE SPRAS EQ SY-LANGU + 773| AND BSCHL EQ GT_BSEG-BSCHL + 774| AND UMSKZ EQ GT_BSEG-UMSKZ. + 775| + 776| * 고객명 + 777| CLEAR : GT_KNA1[], GT_KNA1. + 778| SELECT KUNNR NAME1 + 779| INTO TABLE GT_KNA1 + 780| FROM KNA1 + 781| FOR ALL ENTRIES IN GT_BSEG + 782| WHERE KUNNR EQ GT_BSEG-KUNNR. + 783| + 784| * 구매처명 + 785| CLEAR : GT_LFA1[], GT_LFA1. + 786| SELECT LIFNR NAME1 + 787| INTO TABLE GT_LFA1 + 788| FROM LFA1 + 789| FOR ALL ENTRIES IN GT_BSEG + 790| WHERE LIFNR EQ GT_BSEG-LIFNR. + 791| + 792| * G/L 계정명 + 793| CLEAR : GT_SKAT[], GT_SKAT. + 794| SELECT SAKNR TXT50 + 795| INTO TABLE GT_SKAT + 796| FROM SKAT + 797| FOR ALL ENTRIES IN GT_BSEG + 798| WHERE KTOPL EQ T001-KTOPL + 799| AND SPRAS EQ SY-LANGU + 800| AND SAKNR EQ GT_BSEG-HKONT. + 801| + 802| SELECT SAKNR TXT50 + 803| APPENDING TABLE GT_SKAT + 804| FROM SKAT + 805| FOR ALL ENTRIES IN GT_BSEG + 806| WHERE KTOPL EQ T001-KTOPL + 807| AND SPRAS EQ SY-LANGU + 808| AND SAKNR EQ GT_BSEG-SAKNR. + 809| SORT GT_SKAT BY SAKNR. + 810| DELETE ADJACENT DUPLICATES FROM GT_SKAT COMPARING SAKNR. + 811| +``` + +- **EN**: Bulk-loads display texts: user, document type, cost center, business place, posting key, customer, vendor and G/L account (both HKONT and SAKNR, deduplicated). +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md), [T003T](/tables/T003T.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [TBSLT](/tables/TBSLT.md), [KNA1](/tables/KNA1.md), [LFA1](/tables/LFA1.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: V_USERNAME, T003T, TKA02, CSKT, J_1BBRANCH, TBSLT, KNA1, LFA1, SKAT +- 업무 키워드: 입력자, 전표유형, 코스트센터, 사업장, 전기키, 고객명, 구매처명, 계정명, 텍스트보강 +- English: user name, document type, cost center, business place, posting key, customer, vendor, G/L account text +- 정의부(복사 시 함께 필요): [`GT_UNAME`](#decl-zfir0090top-104-gt_uname), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0090top-15-gt_bkpf), [`GT_T003T`](#decl-zfir0090top-109-gt_t003t), [`GT_CSKT`](#decl-zfir0090top-114-gt_cskt), [`TKA02`](#decl-zfir0090top-9-tka02), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0090top-16-gt_bseg), [`GT_BRANCH`](#decl-zfir0090top-119-gt_branch), [`GT_TBSLT`](#decl-zfir0090top-124-gt_tbslt), [`GT_KNA1`](#decl-zfir0090top-130-gt_kna1) 외 5건 +- 선언을 못 찾은 이름: V_USERNAME, J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L726-L811` · confidence 0.87 · `ZFIR0090#ZFIR0090F01#FORM#BSEG_PROCESS#C2` + +### FORM HOTSPOT_CLICK2 — `ZFIR0090F01` L520-L558 (39줄) + +*아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다.* + +> 이 unit 의 조각 1개가 34/39줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 컬럼이 BELNR이면 SET PARAMETER(BLN/BUK/GJR) 후 FB03 전표조회를, SUBAC이면 계정유형(KOART D/K/A/M)에 따라 FD03 고객·FK03 공급업체·AS03 자산·MM03 자재 조회 트랜잭션을 SKIP FIRST SCREEN으로 호출한다. + +```abap + 523| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX. + 524| CHECK SY-SUBRC EQ 0. + 525| + 526| CASE P_COLUMN_ID. + 527| * 전표번호 + 528| WHEN 'BELNR'. + 529| CHECK GT_ITEM2-BELNR IS NOT INITIAL. + 530| SET PARAMETER ID 'BLN' FIELD GT_ITEM2-BELNR. + 531| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 532| SET PARAMETER ID 'GJR' FIELD GT_ITEM2-GJAHR. + 533| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 534| WHEN 'SUBAC'. + 535| CHECK GT_ITEM2-SUBAC IS NOT INITIAL. + 536| * 고객 + 537| IF GT_ITEM2-KOART EQ C_D. + 538| SET PARAMETER ID 'KUN' FIELD GT_ITEM2-SUBAC. + 539| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 540| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 541| * 구매처 + 542| ELSEIF GT_ITEM2-KOART EQ C_K. + 543| SET PARAMETER ID 'LIF' FIELD GT_ITEM2-SUBAC. + 544| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 545| CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN. + 546| * 자산 + 547| ELSEIF GT_ITEM2-KOART EQ C_A. + 548| SET PARAMETER ID 'AN1' FIELD GT_ITEM2-ANLN1. + 549| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 550| CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN. + 551| * 자재 + 552| ELSEIF GT_ITEM2-KOART EQ C_M. + 553| SET PARAMETER ID 'MAT' FIELD GT_ITEM2-MATNR. + 554| CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. + 555| ENDIF. + 556| ENDCASE. +``` + +- **EN**: Navigates from the item hotspot to FB03 (document display) or, by account type, to FD03 customer / FK03 vendor / AS03 asset / MM03 material display via SET PARAMETER and CALL TRANSACTION. +- 호출(파서): FB03, FD03, FK03, AS03, MM03 +- SAP 객체: FB03, FD03, FK03, AS03, MM03 +- 업무 키워드: 핫스팟 이동, 전표조회, 고객 조회, 공급업체 조회, 자산 조회, 자재 조회 +- English: Hotspot Navigation, Document Display, Account Type KOART, CALL TRANSACTION +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2), [`P_BUKRS`](#decl-zfir0090top-198-p_bukrs), [`C_D`](#decl-zficom-211-c_d), [`C_K`](#decl-zficom-218-c_k), [`C_A`](#decl-zficom-208-c_a), [`C_M`](#decl-zficom-220-c_m) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L523-L556` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#HOTSPOT_CLICK2#C1` + +### FORM DOUBLE_CLICK — `ZFIR0090F01` L567-L588 (22줄) + +*헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 더블클릭한 헤더 행의 회사코드·연도·전표번호와 일치하는 아이템을 GT_ITEM에서 추려 GT_ITEM2에 담고 전표번호·항목 순으로 정렬한 뒤 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다. + +```abap + 572| READ TABLE GT_HEAD INDEX P_ROW-INDEX. + 573| CHECK SY-SUBRC EQ 0. + 574| + 575| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 576| AND GJAHR EQ GT_HEAD-GJAHR + 577| AND BELNR EQ GT_HEAD-BELNR. + 578| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 579| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 580| ENDLOOP. + 581| + 582| SORT GT_ITEM2 BY BELNR BUZEI. + 583| * PAI로 호출 + 584| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 585| EXPORTING + 586| NEW_CODE = 'ZUSER'. +``` + +- **EN**: Filters the line items of the double-clicked document header into GT_ITEM2, sorts by document and line number, and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 더블클릭, 전표 아이템 필터, 헤더 아이템 연동, 화면 갱신 +- English: Double Click, Line Item, Header-Item Link, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L572-L586` · confidence 0.85 · `ZFIR0090#ZFIR0090F01#FORM#DOUBLE_CLICK#C1` + +### FORM ALV_GRID_DISPLAY1 — `ZFIR0090F01` L211-L228 (18줄) + +*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/18줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전자결재 승인 경비 헤더 GT_HEAD를 상단 ALV 그리드에 출력한다. + +```abap + 216| GV_VARI1-REPORT = SY-REPID. + 217| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY + 218| EXPORTING + 219| I_STRUCTURE_NAME = 'GT_HEAD' + 220| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 221| IS_LAYOUT = GV_LAYO1 + 222| IS_VARIANT = GV_VARI1 + 223| I_BUFFER_ACTIVE = C_X + 224| I_SAVE = C_A + 225| CHANGING + 226| IT_OUTTAB = GT_HEAD[] + 227| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the approved expense document headers (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY. +- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 헤더 ALV 출력, 승인 경비 문서 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Expense Document +- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0090top-184-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0090top-178-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0090top-181-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L216-L227` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#ALV_GRID_DISPLAY1#C1` + +### FORM ALV_GRID_DISPLAY2 — `ZFIR0090F01` L335-L354 (20줄) + +*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다. + +```abap + 340| GV_VARI2-REPORT = SY-REPID. + 341| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY + 342| EXPORTING + 343| I_STRUCTURE_NAME = 'GT_ITEM' + 344| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 345| IS_LAYOUT = GV_LAYO2 + 346| IS_VARIANT = GV_VARI2 + 347| I_BUFFER_ACTIVE = C_X + 348| I_SAVE = C_A + 349| CHANGING + 350| IT_OUTTAB = GT_ITEM2[] + 351| IT_FIELDCATALOG = GT_FCAT_ITEM[]. +``` + +- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY. +- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 아이템 ALV 출력, 전표 아이템 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item +- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0090top-185-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0090top-179-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0090top-182-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0090top-47-gt_item), [`GT_ITEM2`](#decl-zfir0090top-100-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L340-L351` · confidence 0.8 · `ZFIR0090#ZFIR0090F01#FORM#ALV_GRID_DISPLAY2#C1` + +### FORM DISPLAY_PROCESSING_DATA — `ZFIR0090F01` L594-L697 (104줄) + +*ALV에서 선택한 경비 결재문서 1건의 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다.* + +> 이 unit 의 조각 3개가 80/104줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 선택행을 읽어 미선택·복수선택을 막고 선택 문서에 전자결재 문서ID(APPID)가 있는지 검증한다. + +```abap + 605| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 606| IMPORTING + 607| ET_INDEX_ROWS = GT_ROWS[]. + 608| + 609| IF GT_ROWS[] IS INITIAL. + 610| MESSAGE S004. "선택된 데이터가 없습니다. + 611| EXIT. + 612| ELSE. + 613| CLEAR: LV_CNT. + 614| * 문서조회는 한건씩 + 615| DESCRIBE TABLE GT_ROWS LINES LV_CNT. + 616| + 617| IF LV_CNT GT 1. + 618| MESSAGE S000 WITH '문서조회는 한건씩 조회 가능합니다' + 619| DISPLAY LIKE C_E. + 620| EXIT. + 621| ENDIF. + 622| + 623| LOOP AT GT_ROWS INTO GS_ROWS. + 624| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 625| CHECK SY-SUBRC EQ 0. + 626| + 627| IF GT_HEAD-APPID IS INITIAL. + 628| MESSAGE S000 WITH '해당 데이터의 문서조회를 할 수 없습니다.' + 629| DISPLAY LIKE C_E. + 630| EXIT. + 631| ENDIF. +``` + +- **EN**: Reads selected ALV rows and validates that exactly one document with an e-approval ID (APPID) is selected. +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 선택행 검증, 단건 조회, 결재문서 ID +- English: ALV Selected Rows, Validation, Approval Document ID +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0090top-178-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0090f01-595-lv_cnt), [`C_E`](#decl-zficom-212-c_e), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`GT_HEAD`](#decl-zfir0090top-26-gt_head) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L605-L631` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C1` + +#### [db_write] ZIFT0010에서 해당 APPID의 최대 SEQ를 구해 +1한 순번으로 호스트·프로그램·요청자·시간을 담은 FI 인터페이스 공통로그를 MODIFY하고 LT_CMLOG에 적재한다. + +```abap + 636| SELECT MAX( SEQ ) + 637| INTO LV_MAX + 638| FROM ZIFT0010 + 639| WHERE UNQID EQ GT_HEAD-APPID. + 640| + 641| CLEAR ZIFT0010. + 642| ZIFT0010-UNQID = GT_HEAD-APPID. + 643| ZIFT0010-SEQ = LV_MAX + 1. + 644| ZIFT0010-HOST = SY-HOST. + 645| ZIFT0010-PGMID = SY-REPID. + 646| ZIFT0010-REQID = SY-UNAME. + 647| ZIFT0010-REQTM = SY-UZEIT. + 648| * CBO TABLE 저장 + 649| ZIFT0010-MODUL = 'FI'. + 650| MODIFY ZIFT0010. + 651| + 652| CLEAR: LT_CMLOG. + 653| MOVE-CORRESPONDING ZIFT0010 TO LT_CMLOG. + 654| APPEND LT_CMLOG. +``` + +- **EN**: Determines the next sequence for the approval ID in ZIFT0010 and writes an interface common log record (host, program, requester, time, module FI). +- 테이블(파서): read [ZIFT0010](/tables/ZIFT0010.md) / write [ZIFT0010](/tables/ZIFT0010.md) +- SAP 객체: ZIFT0010, ZIFS0010 +- 업무 키워드: 인터페이스 로그, 공통로그, 순번 채번 +- English: Interface Log, Sequence Number, CBO Table +- 정의부(복사 시 함께 필요): [`LV_MAX`](#decl-zfir0090f01-599-lv_max), [`ZIFT0010`](#decl-zfir0090top-8-zift0010), [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LT_CMLOG`](#decl-zfir0090f01-600-lt_cmlog) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L636-L654` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C2` + +#### [fm_call] RFC 목적지 ZFI01의 Z_FI_CONFIRM_DISPLAY에 APPID를 넘겨 전자결재 문서 URL을 받고, URL이 있으면 CALL_BROWSER로 웹 브라우저를 띄우며 실패 시 오류 메시지를 표시한다. + +```abap + 660| CALL FUNCTION 'Z_FI_CONFIRM_DISPLAY' + 661| DESTINATION 'ZFI01' + 662| EXPORTING + 663| * I_UNQID = GT_HEAD-APPID + 664| I_APPID = GT_HEAD-APPID + 665| IMPORTING + 666| E_STATS = LV_STATS + 667| E_MESSG = LV_MESSG + 668| E_URL = LV_URL + 669| TABLES + 670| IT_CMLOG = LT_CMLOG. + 671| + 672| IF LV_URL EQ SPACE. + 673| MESSAGE S000 WITH '문서조회할 URL 주소가 없습니다.' + 674| DISPLAY LIKE C_E. + 675| EXIT. + 676| ELSE. + 677| * 브라우져 호출 + 678| CALL FUNCTION 'CALL_BROWSER' + 679| EXPORTING + 680| URL = LV_URL + 681| EXCEPTIONS + 682| FRONTEND_NOT_SUPPORTED = 1 + 683| FRONTEND_ERROR = 2 + 684| PROG_NOT_FOUND = 3 + 685| NO_BATCH = 4 + 686| UNSPECIFIED_ERROR = 5 + 687| OTHERS = 6. + 688| IF SY-SUBRC NE 0. + 689| MESSAGE S000 WITH '웹 브라우저 호출 시 에러가 발생하였습니다.' + 690| DISPLAY LIKE C_E. + 691| EXIT. + 692| ENDIF. + 693| ENDIF. +``` + +- **EN**: Calls RFC Z_FI_CONFIRM_DISPLAY (destination ZFI01) with the approval ID to obtain the e-approval document URL and opens it with CALL_BROWSER, reporting errors. +- 호출(파서): Z_FI_CONFIRM_DISPLAY, CALL_BROWSER +- SAP 객체: Z_FI_CONFIRM_DISPLAY, CALL_BROWSER, ZFI01 +- 업무 키워드: 전자결재 문서조회, RFC 호출, 브라우저 호출, URL +- English: RFC Destination, E-Approval, CALL_BROWSER, Interface +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0090top-26-gt_head), [`LV_STATS`](#decl-zfir0090f01-596-lv_stats), [`LV_MESSG`](#decl-zfir0090f01-597-lv_messg), [`LV_URL`](#decl-zfir0090f01-598-lv_url), [`LT_CMLOG`](#decl-zfir0090f01-600-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0090/ZFIR0090F01#L660-L693` · confidence 0.9 · `ZFIR0090#ZFIR0090F01#FORM#DISPLAY_PROCESSING_DATA#C3` + +## 정의부 (335건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0090CLS` (3건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0090cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK2 + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW E_COLUMN ES_ROW_NO . + + + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT1 — data · L48-L48 {#decl-zfir0090cls-48-gv_event1} + +```abap +DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +#### GV_EVENT2 — data · L49-L49 {#decl-zfir0090cls-49-gv_event2} + +```abap +DATA: + GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0090TOP` (48건) + +#### ZFIT0100 — tables · L7-L7 {#decl-zfir0090top-7-zfit0100} + +```abap +TABLES: ZFIT0100. " 임시전표 상신 관리 +``` + +#### ZIFT0010 — tables · L8-L8 {#decl-zfir0090top-8-zift0010} + +```abap +TABLES: + ZIFT0010. " IF 공통 Log +``` + +#### TKA02 — tables · L9-L9 {#decl-zfir0090top-9-tka02} + +```abap +TABLES: + TKA02. " 관리회계 영역 지정 +``` + +#### GT_BKPF — data · L15-L15 {#decl-zfir0090top-15-gt_bkpf} + +```abap +DATA: GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSEG — data · L16-L16 {#decl-zfir0090top-16-gt_bseg} + +```abap +DATA: + GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### IT_ZFIT0140 — data · L19-L21 {#decl-zfir0090top-19-it_zfit0140} + +```abap +DATA: BEGIN OF IT_ZFIT0140 OCCURS 0. + INCLUDE STRUCTURE ZFIT0140. +DATA END OF IT_ZFIT0140. +``` + +#### GT_HEAD — data · L26-L44 {#decl-zfir0090top-26-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0, + BUKRS LIKE ZFIT0140-BUKRS, + LIFNR LIKE ZFIT0140-LIFNR, + GUBUN LIKE ZFIT0140-GUBUN, + BELNR LIKE ZFIT0140-BELNR, + GJAHR LIKE ZFIT0140-GJAHR, + AMT LIKE ZFIT0140-AMT, + DRAFT_DATE LIKE ZFIT0140-DRAFT_DATE, + APPROVAL_DATE LIKE ZFIT0140-APPROVAL_DATE, + BUDAT LIKE ZFIT0140-BUDAT, + GSBER2 LIKE ZFIT0140-GSBER2, + APPID LIKE ZFIT0140-APPID, + KOSTL LIKE BSEG-KOSTL, + GUBUN_N(10), + NAME1(20), + TEXT1(20), + +* CELLTAB TYPE LVC_T_STYL, + END OF GT_HEAD. +``` + +#### GT_ITEM — data · L47-L98 {#decl-zfir0090top-47-gt_item} + +```abap +DATA: BEGIN OF GT_ITEM OCCURS 0, + BUKRS LIKE BSEG-BUKRS, + GJAHR LIKE BSEG-GJAHR, "회계년도 + BELNR LIKE BSEG-BELNR, "전표번호 + BUZEI LIKE BSEG-BUZEI, "개별항목id + SHKZG LIKE BSEG-SHKZG, "차대(S,H) + BSCHL LIKE BSEG-BSCHL, "전기키 + UMSKZ LIKE BSEG-UMSKZ, "SpGl + BSCHL_T LIKE TBSLT-LTEXT, "전기키이름 + HKONT LIKE BSEG-HKONT, "G/L 계정 + TXT50 LIKE SKAT-TXT50, "G/L 계정명 + MWSKZ LIKE BSEG-MWSKZ, "세금코드(Tx) + MWSKZ_T LIKE T007S-TEXT1, "세금코드명 + DMBTR LIKE BSEG-DMBTR, "원화금액 + WRBTR LIKE BSEG-WRBTR, "전표통화금액 + MWSTS LIKE BSEG-MWSTS, "세액(현지 통화) + WMWST LIKE BSEG-WMWST, "세액(전표 통화) + GSBER LIKE BSEG-GSBER, "BA(사업영역) + SGTXT LIKE BSEG-SGTXT, "적요 + KOART LIKE BSEG-KOART, "계정유형 + KOART_T(8) TYPE C, "계정유형명 + SUBAC LIKE BSEG-LIFNR, "보조부계정(구매처,고객) + SUBNM LIKE LFA1-NAME1, "보조부계정명 + ZLSPR LIKE BSEG-ZLSPR, "지급보류 + ZLSPR_T LIKE T008T-TEXTL, "지급보류명 + ZTERM LIKE /DSD/HH_RACOLPAY-ZTERM, "지급조건 + ZTERM_T LIKE T052U-TEXT1, "지급조건명 + FDTAG LIKE BSEG-FDTAG, "계획일(지급만기일) + ZLSCH LIKE BSEG-ZLSCH, "지급방법 + ZLSCH_T LIKE T042Z-TEXT1, "지급방법명 + KOSTL LIKE BSEG-KOSTL, "코스트센터 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + AUFNR LIKE BSEG-AUFNR, "오더 + FISTL LIKE BSEG-FISTL, "FUND CENTER + FISTL_T LIKE FMFCTRT-BESCHR, "FUND CENTER Description + PICON LIKE ICON-ID, "PA 아이콘 + PRCTR LIKE BSEG-PRCTR, "손익센터 + ANBWA LIKE BSEG-ANBWA, "자산거래유형 + WAERS LIKE BKPF-WAERS, "통화 + FKBER LIKE BSEG-FKBER, "기능영역 + XREF1 LIKE BSEG-XREF1, "신고사업자 + XNEGP LIKE BSEG-XNEGP, "마이너스 + EBELN LIKE BSEG-EBELN, "구매문서 + ZUONR LIKE BSEG-ZUONR, "지정 + BUPLA LIKE BSEG-BUPLA, "사업장 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + MATNR LIKE BSEG-MATNR, "자재번호 + ANLN1 LIKE BSEG-ANLN1, "자산번호 + AUGBL LIKE BSEG-AUGBL, + AUGDT LIKE BSEG-AUGDT, + KIDNO LIKE BSEG-KIDNO, + END OF GT_ITEM. +``` + +#### GT_ITEM2 — data · L100-L100 {#decl-zfir0090top-100-gt_item2} + +```abap +DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_UNAME — data · L104-L107 {#decl-zfir0090top-104-gt_uname} + +```abap +DATA: BEGIN OF GT_UNAME OCCURS 0, + BNAME LIKE V_USERNAME-BNAME, + NAMET LIKE V_USERNAME-NAME_TEXT, + END OF GT_UNAME. +``` + +#### GT_T003T — data · L109-L112 {#decl-zfir0090top-109-gt_t003t} + +```abap +DATA: BEGIN OF GT_T003T OCCURS 0, + BLART LIKE T003T-BLART, + LTEXT LIKE T003T-LTEXT, + END OF GT_T003T. +``` + +#### GT_CSKT — data · L114-L117 {#decl-zfir0090top-114-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + KTEXT LIKE CSKT-KTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L119-L122 {#decl-zfir0090top-119-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_TBSLT — data · L124-L128 {#decl-zfir0090top-124-gt_tbslt} + +```abap +DATA: BEGIN OF GT_TBSLT OCCURS 0, + BSCHL LIKE TBSLT-BSCHL, + UMSKZ LIKE TBSLT-UMSKZ, + LTEXT LIKE TBSLT-LTEXT, + END OF GT_TBSLT. +``` + +#### GT_KNA1 — data · L130-L133 {#decl-zfir0090top-130-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_LFA1 — data · L135-L138 {#decl-zfir0090top-135-gt_lfa1} + +```abap +DATA: BEGIN OF GT_LFA1 OCCURS 0, + LIFNR LIKE LFA1-LIFNR, + NAME1 LIKE LFA1-NAME1, + END OF GT_LFA1. +``` + +#### GT_SKAT — data · L140-L143 {#decl-zfir0090top-140-gt_skat} + +```abap +DATA: BEGIN OF GT_SKAT OCCURS 0, + SAKNR LIKE SKAT-SAKNR, + TXT50 LIKE SKAT-TXT50 , + END OF GT_SKAT. +``` + +#### GT_T052U — data · L145-L148 {#decl-zfir0090top-145-gt_t052u} + +```abap +DATA: BEGIN OF GT_T052U OCCURS 0, + ZTERM LIKE T052U-ZTERM, + TEXT1 LIKE T052U-TEXT1, + END OF GT_T052U. +``` + +#### GT_T007S — data · L150-L153 {#decl-zfir0090top-150-gt_t007s} + +```abap +DATA: BEGIN OF GT_T007S OCCURS 0, + MWSKZ LIKE T007S-MWSKZ, + TEXT1 LIKE T007S-TEXT1, + END OF GT_T007S. +``` + +#### GT_DOMAIN — data · L155-L159 {#decl-zfir0090top-155-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L161-L161 {#decl-zfir0090top-161-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0100-STATS. +``` + +#### R_BLART — ranges · L162-L162 {#decl-zfir0090top-162-r_blart} + +```abap +RANGES: + R_BLART FOR BKPF-BLART. +``` + +#### GV_SUPER — data · L164-L164 {#decl-zfir0090top-164-gv_super} + +```abap +DATA: GV_SUPER TYPE C. " 회계팀장권한 +``` + +#### GV_CON — data · L165-L165 {#decl-zfir0090top-165-gv_con} + +```abap +DATA: + GV_CON TYPE C. " 임원권한 +``` + +#### GV_SABUN — data · L166-L166 {#decl-zfir0090top-166-gv_sabun} + +```abap +DATA: + GV_SABUN LIKE ZFIT0100-SABUN VALUE 'xclick'. " 사번(입력) +``` + +#### G_NAME1 — data · L168-L168 {#decl-zfir0090top-168-g_name1} + +```abap +DATA: G_NAME1(20). +``` + +#### GT_FCAT_ITEM2 — data · L171-L171 {#decl-zfir0090top-171-gt_fcat_item2} + +```abap +DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT. +``` + +#### GS_STABLE — data · L173-L173 {#decl-zfir0090top-173-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GC_SPLITTER — data · L174-L174 {#decl-zfir0090top-174-gc_splitter} + +```abap +DATA: + GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GC_CONTAINER1 — data · L175-L175 {#decl-zfir0090top-175-gc_container1} + +```abap +DATA: + GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GC_CONTAINER2 — data · L176-L176 {#decl-zfir0090top-176-gc_container2} + +```abap +DATA: + GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GV_ALV_GRID — data · L177-L177 {#decl-zfir0090top-177-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID1 — data · L178-L178 {#decl-zfir0090top-178-gv_alv_grid1} + +```abap +DATA: + GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID2 — data · L179-L179 {#decl-zfir0090top-179-gv_alv_grid2} + +```abap +DATA: + GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L180-L180 {#decl-zfir0090top-180-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_LAYO1 — data · L181-L181 {#decl-zfir0090top-181-gv_layo1} + +```abap +DATA: + GV_LAYO1 TYPE LVC_S_LAYO. +``` + +#### GV_LAYO2 — data · L182-L182 {#decl-zfir0090top-182-gv_layo2} + +```abap +DATA: + GV_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L183-L183 {#decl-zfir0090top-183-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### GV_VARI1 — data · L184-L184 {#decl-zfir0090top-184-gv_vari1} + +```abap +DATA: + GV_VARI1 TYPE DISVARIANT. +``` + +#### GV_VARI2 — data · L185-L185 {#decl-zfir0090top-185-gv_vari2} + +```abap +DATA: + GV_VARI2 TYPE DISVARIANT. +``` + +#### C_USNAM — constants · L190-L190 {#decl-zfir0090top-190-c_usnam} + +```abap +CONSTANTS: C_USNAM TYPE SY-UNAME VALUE 'FI07'. " 회계팀장ID +``` + +#### C_USNAM_2 — constants · L191-L191 {#decl-zfir0090top-191-c_usnam_2} + +```abap +CONSTANTS: + C_USNAM_2 TYPE SY-UNAME VALUE 'FI03'. " 임원ID +``` + +#### P_BUKRS — parameter · L198-L198 {#decl-zfir0090top-198-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_LIFNR — parameter · L199-L199 {#decl-zfir0090top-199-p_lifnr} + +```abap +PARAMETERS: + P_LIFNR LIKE ZFIT0140-LIFNR OBLIGATORY. +``` + +#### S_DRAFT — select-option · L202-L202 {#decl-zfir0090top-202-s_draft} + +```abap +SELECT-OPTIONS: S_DRAFT FOR BKPF-BUDAT. +``` + +#### S_BUDAT — select-option · L203-L203 {#decl-zfir0090top-203-s_budat} + +```abap +SELECT-OPTIONS: + S_BUDAT FOR BKPF-BUDAT. +``` + +#### P_RA — parameter · L209-L209 {#decl-zfir0090top-209-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G1 . +``` + +#### P_RB — parameter · L211-L211 {#decl-zfir0090top-211-p_rb} + +```abap +PARAMETERS: P_RB RADIOBUTTON GROUP G1. +``` + +### `ZFIR0090F01` (7건) + +#### L_GUBUN — data · unit 로컬 · L12-L12 {#decl-zfir0090f01-12-l_gubun} + +```abap + DATA: L_GUBUN. +``` + +#### LV_CNT — data · unit 로컬 · L595-L595 {#decl-zfir0090f01-595-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_STATS — data · unit 로컬 · L596-L596 {#decl-zfir0090f01-596-lv_stats} + +```abap +DATA: + LV_STATS TYPE CHAR1. +``` + +#### LV_MESSG — data · unit 로컬 · L597-L597 {#decl-zfir0090f01-597-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LV_URL — data · unit 로컬 · L598-L598 {#decl-zfir0090f01-598-lv_url} + +```abap +DATA: + LV_URL TYPE CHAR1024. +``` + +#### LV_MAX — data · unit 로컬 · L599-L599 {#decl-zfir0090f01-599-lv_max} + +```abap +DATA: + LV_MAX LIKE ZIFT0010-SEQ. +``` + +#### LT_CMLOG — data · unit 로컬 · L600-L600 {#decl-zfir0090f01-600-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0090 L32-39 | 0 | ALV 초기 설정(ALV_SETTING)만 수행하는 INITIALIZATION 이벤트이다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0090 L40-45 | 0 | 내용이 없는 빈 AT SELECTION-SCREEN OUTPUT 이벤트이다. | +| START-OF-SELECTION | EVENT | ZFIR0090 L46-60 | 0 | 회사코드 권한(AUTHORITY_BUKRS)과 사용자·T-Code 기반 프로그램 실행 권한(AUTHORITY_PG)을 검증한 뒤 GET_DATA로 승인 경비 내역을 조회하는 START-OF-SELECTION 이벤트이다. | +| END-OF-SELECTION | EVENT | ZFIR0090 L61-69 | 0 | 데이터 유무 검사가 주석 처리된 채 무조건 화면 0100을 호출하는 END-OF-SELECTION 이벤트이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0090CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0090CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0090CLS L41-43 | 0 | ALV 그리드 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DATA | FORM | ZFIR0090F01 L9-80 | 2 | 출장비/교통비 구분·회사코드·공급업체(사원)·기안일·전기일 조건으로 전자결재 승인 경비 내역 ZFIT0140을 읽고 공급업체명·사업영역별 코스트센터(ZFIT0040)·코스트센터명을 붙여 GT_HEAD에 COLLECT 집계하는 FORM이다. | +| SPLITTER_CONTAINER | FORM | ZFIR0090F01 L88-140 | 0 | 화면 0100의 커스텀 컨테이너에 2행 1열 스플리터를 만들고 상단(헤더)·하단(아이템) 컨테이너에 ALV 그리드 객체 두 개를 생성하는 FORM이다. | +| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0090F01 L149-176 | 0 | 헤더/아이템 ALV 그리드에 핫스팟·더블클릭 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·필드카탈로그 설정 후 두 ALV를 표시하도록 초기화하는 FORM이다. | +| SET_GRID_LAYOUT1 | FORM | ZFIR0090F01 L185-202 | 0 | 헤더/아이템 ALV의 레이아웃(제목, 열 최적화, 행 선택모드, 줄무늬, 셀 스타일 필드명)을 설정하는 FORM이다. | +| ALV_GRID_DISPLAY1 | FORM | ZFIR0090F01 L211-228 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS1 | FORM | ZFIR0090F01 L237-326 | 0 | 헤더 ALV(GT_HEAD)의 필드카탈로그를 생성해 승인 경비 문서 헤더 컬럼의 제목·위치·정렬 속성을 설정하는 FORM이다. | +| ALV_GRID_DISPLAY2 | FORM | ZFIR0090F01 L335-354 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS2 | FORM | ZFIR0090F01 L363-480 | 0 | 아이템 ALV(GT_ITEM)의 필드카탈로그를 생성해 전표번호·항목·전기키·계정·거래처·금액·세금코드·코스트센터 등 컬럼 속성을 설정하는 FORM이다. | +| HOTSPOT_CLICK | FORM | ZFIR0090F01 L490-511 | 1 | 헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. | +| HOTSPOT_CLICK2 | FORM | ZFIR0090F01 L520-558 | 1 | 아이템 ALV 핫스팟 클릭 시 전표번호는 FB03, 거래처는 계정유형(고객/공급업체/자산/자재)에 따라 FD03/FK03/AS03/MM03 조회 화면으로 이동하는 FORM이다. | +| DOUBLE_CLICK | FORM | ZFIR0090F01 L567-588 | 1 | 헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. | +| DISPLAY_PROCESSING_DATA | FORM | ZFIR0090F01 L594-697 | 3 | ALV에서 선택한 경비 결재문서 1건의 인터페이스 로그(ZIFT0010)를 남기고 RFC Z_FI_CONFIRM_DISPLAY로 전자결재 문서 URL을 받아 브라우저로 여는 FORM이다. | +| BSEG_PROCESS | FORM | ZFIR0090F01 L701-998 | 2 | 선택한 결재 건의 전표 헤더·아이템을 읽고 표시용 조직단위·거래처·계정 텍스트를 붙인다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0090I01 L9-18 | 0 | 화면 0100 PAI에서 문서조회 명령 시 DISPLAY_PROCESSING_DATA로 전자결재 문서를 조회하는 사용자 명령 모듈이다. | +| USER_COMMAND_0200 INPUT | MODULE | ZFIR0090I01 L24-32 | 0 | 화면 0200 PAI에서 ENTR 입력 시 화면을 닫는 단순 사용자 명령 처리 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0090O01 L9-14 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0090O01 L20-43 | 0 | | +| STATUS_0200 OUTPUT | MODULE | ZFIR0090O01 L49-54 | 0 | | diff --git a/wiki/programs/ZFIR0100.md b/wiki/programs/ZFIR0100.md new file mode 100644 index 0000000..d1ffbc4 --- /dev/null +++ b/wiki/programs/ZFIR0100.md @@ -0,0 +1,1782 @@ +--- +type: abap-program +title: "ZFIR0100 — [FI] 전자세금계산서 매입전표 생성" +description: "전자세금계산서 수신 데이터(ZDTV3T_AP_EXT 헤더/ZDTV3T_AP_EXT_D 상세)를 읽어 매입 전표를 생성하는 화면이다. 편집 가능한 ALV 그리드에서 수신 세금계산서를 검토·수정하고, 전기 대상을 확정해 저장·전기한다. 실제 전표 입력 화면은 ZFIR0110_DOC 을 호출해 처리하며, 셀 단위 입력 제어(CELLTAB)와 변형(Variant) 관리를 갖춘다." +resource: "abap://ZFIR0100" +tags: ["전자세금계산서", "세금계산서", "매입", "부가세", "전표", "채무관리", "FI", "행선택", "선택검증", "저장전검증", "ALV선택", "전표번호", "저장", "사용여부", "발행일", "사업장", "계산서순번", "상태아이콘", "사용자 명령", "전기"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:21+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["ZDTV3T_AP_EXT", "ZDTV3T_AP_EXT_D"] +x-tables-write: ["GT_MAIN", "ZDTV3T_AP_EXT", "ZDTV3T_AP_EXT_D"] +x-calls: ["FB03", "LAST_DAY_OF_MONTHS", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "REUSE_ALV_VARIANT_DEFAULT_GET", "SAPGUI_PROGRESS_INDICATOR", "ZFIR0110_DOC"] +x-code-hash: "009c573d7068cede209822b699c51af6a3cf09665a4077f9c8cdf6ee202d53e5" +x-unit-count: 64 +x-chunk-count: 25 +x-declaration-count: 84 +--- + +## 업무 목적 + +전자세금계산서 수신 데이터(ZDTV3T_AP_EXT 헤더/ZDTV3T_AP_EXT_D 상세)를 읽어 매입 전표를 생성하는 화면이다. 편집 가능한 ALV 그리드에서 수신 세금계산서를 검토·수정하고, 전기 대상을 확정해 저장·전기한다. 실제 전표 입력 화면은 ZFIR0110_DOC 을 호출해 처리하며, 셀 단위 입력 제어(CELLTAB)와 변형(Variant) 관리를 갖춘다. + +## 주 흐름 + +1. 초기 변형(Variant)을 불러오고 선택화면을 준비한다 (SET_INIT → GET_INIT_VARIANT → GET_VARIANT) +2. 대상 기간의 전자세금계산서 수신 내역을 읽어 그리드 데이터를 만든다 (SET_DATA) +3. 셀 입력 가능 여부와 행 스타일을 설정한다 (SET_ITAB_STYLE → SET_CELLTAB) +4. 필드카탈로그·레이아웃·툴바를 구성해 편집 가능한 ALV 를 화면 0100 에 띄운다 (SET_FIELD01 → RUN_DISPLAY_ALV) +5. 사용자 변경을 반영하고 날짜·텍스트를 보정한다 (SET_CHANGE → DATE_PROCESS → TEXT_PROCESS) +6. 확인 팝업 후 저장·전기한다 (POPUP_TO_CONFIRM → SET_SAVE → SET_POST) +7. 전표 입력 상세는 ZFIR0110_DOC 을 호출해 처리한다 + +## 핵심 내부테이블 + +- `GT_MAIN` — 전자세금계산서 수신 내역 편집 그리드 (채움: SET_DATA / 소비: RUN_DISPLAY_ALV, SET_SAVE, SET_POST) + +## 테이블 / 외부 호출 + +- read: ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D +- write: GT_MAIN, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D +- 외부 호출: FB03, LAST_DAY_OF_MONTHS, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, REUSE_ALV_VARIANT_DEFAULT_GET, SAPGUI_PROGRESS_INDICATOR, ZFIR0110_DOC + +## 로직 조각 (25건 / unit 18개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_INIT_VARIANT — `ZFIR0100F01` L55-L74 (20줄) + +*변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다.* + +> 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] REUSE_ALV_VARIANT_DEFAULT_GET(I_SAVE='A') 으로 리포트·사용자·핸들에 해당하는 기본 ALV 변형을 GX_VARIANT 에 읽는다(결과 반영은 주석 처리). + +```abap + 61| GX_VARIANT = GS_VARIANT. + 62| + 63| CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' + 64| EXPORTING + 65| I_SAVE = 'A' + 66| CHANGING + 67| CS_VARIANT = GX_VARIANT + 68| EXCEPTIONS + 69| NOT_FOUND = 2. + 70| IF SY-SUBRC = 0. + 71| **** PA_LAYOU = GX_VARIANT-VARIANT. + 72| ENDIF. +``` + +- **EN**: Retrieves the user's default ALV layout variant via REUSE_ALV_VARIANT_DEFAULT_GET. +- 호출(파서): REUSE_ALV_VARIANT_DEFAULT_GET +- SAP 객체: REUSE_ALV_VARIANT_DEFAULT_GET +- 업무 키워드: 기본 변형, ALV 레이아웃, 변형 조회 +- English: Default Variant, ALV Layout +- 정의부(복사 시 함께 필요): [`GX_VARIANT`](#decl-zfir0100t01-32-gx_variant), [`GS_VARIANT`](#decl-zfir0100t01-31-gs_variant) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L61-L72` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#GET_INIT_VARIANT#C1` + +### FORM SET_DATA — `ZFIR0100F01` L92-L166 (75줄) + +*조회 월의 기간을 만든 뒤 전자세금계산서 헤더(ZDTV3T_AP_HEAD)·확장(ZDTV3T_AP_EXT)·상세(ZDTV3T_AP_EXT_D)를 조인해 전표처리 상태 조건으로 수신 내역을 IT_ZDTV3T_AP_HEAD 에 읽는 FORM 이다.* + +> 이 unit 의 조각 2개가 37/75줄(49%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 라디오버튼(P_R1 미처리/P_R2 처리완료/P_R3 전체)에 따라 전표처리 여부(USE_DOC) 필터값 L_DOC1/L_DOC2 를 결정한다. + +```abap + 125| IF P_R1 = 'X'. + 126| L_DOC1 = SPACE. + 127| L_DOC2 = SPACE. + 128| ELSEIF P_R2 = 'X'. + 129| L_DOC1 = 'X'. + 130| L_DOC2 = 'X'. + 131| ELSEIF P_R3 = 'X'. + 132| L_DOC1 = 'X'. + 133| L_DOC2 = SPACE. + 134| ENDIF. +``` + +- **EN**: Derives the USE_DOC filter values from the selection radio buttons (unposted, posted, or all). +- 업무 키워드: 조회 조건, 전표처리 여부, 라디오버튼 +- English: Selection Criteria, Document Status Filter +- 정의부(복사 시 함께 필요): [`P_R1`](#decl-zfir0100scr-22-p_r1), [`L_DOC1`](#decl-zfir0100f01-96-l_doc1), [`L_DOC2`](#decl-zfir0100f01-96-l_doc2), [`P_R2`](#decl-zfir0100scr-25-p_r2), [`P_R3`](#decl-zfir0100scr-28-p_r3) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L125-L134` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#SET_DATA#C1` + +#### [sql_select] ZDTV3T_AP_HEAD 를 ZDTV3T_AP_EXT·ZDTV3T_AP_EXT_D 와 회사코드·작성일자·사업장·일련번호로 INNER JOIN 하여 회사코드·작성일 기간·공급자 사업자번호·이메일·미취소(INV_SIGN 공백)·전표처리 여부 조건으로 수신 전자세금계산서를 IT_ZDTV3T_AP_HEAD 에 적재한다. + +```abap + 138| SELECT * + 139| INTO CORRESPONDING FIELDS OF IT_ZDTV3T_AP_HEAD + 140| FROM ( ( ZDTV3T_AP_HEAD AS A INNER JOIN ZDTV3T_AP_EXT AS B + 141| ON A~BUKRS = B~BUKRS + 142| AND A~ISSUE_DATE = B~ISSUE_DATE + 143| AND A~BUPLA = B~BUPLA + 144| AND A~INV_SEQ = B~INV_SEQ ) + 145| + 146| INNER JOIN ZDTV3T_AP_EXT_D AS C + 147| + 148| ON B~BUKRS = C~BUKRS + 149| AND B~ISSUE_DATE = C~ISSUE_DATE + 150| AND B~BUPLA = C~BUPLA + 151| AND B~INV_SEQ = C~INV_SEQ ) + 152| + 153| WHERE A~BUKRS = P_BUKRS + 154| AND A~ISSUE_DATE IN S_BUDAT + 155| AND A~SU_ID IN S_SU_ID + 156| AND A~IP_EMAIL1 IN S_EMAIL + 157| AND A~INV_SIGN = '' + 158| AND ( B~USE_DOC = L_DOC1 OR + 159| B~USE_DOC = L_DOC2 ). + 160| + 161| APPEND IT_ZDTV3T_AP_HEAD. + 162| CLEAR IT_ZDTV3T_AP_HEAD. + 163| + 164| ENDSELECT. +``` + +- **EN**: Selects received e-tax invoices by joining ZDTV3T_AP_HEAD with ZDTV3T_AP_EXT and ZDTV3T_AP_EXT_D on company code, issue date, business place and sequence, filtered by period, supplier ID, email, non-cancelled and USE_DOC status. +- 테이블(파서): read [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md), [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md) / write - +- SAP 객체: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D +- 업무 키워드: 전자세금계산서 수신, 매입 세금계산서, 조회, 조인, 전표처리 여부 +- English: E-Tax Invoice, AP Invoice, Business Place, Inner Join +- 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`IT_ZDTV3T_AP_HEAD`](#decl-zfir0100top-11-it_zdtv3t_ap_head), [`ZDTV3T_AP_EXT`](#decl-zfir0100top-5-zdtv3t_ap_ext), [`ZDTV3T_AP_EXT_D`](#decl-zfir0100top-5-zdtv3t_ap_ext_d), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs), [`S_BUDAT`](#decl-zfir0100top-48-s_budat), [`S_SU_ID`](#decl-zfir0100scr-12-s_su_id), [`S_EMAIL`](#decl-zfir0100scr-13-s_email), [`L_DOC1`](#decl-zfir0100f01-96-l_doc1), [`L_DOC2`](#decl-zfir0100f01-96-l_doc2) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L138-L164` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_DATA#C2` + +### FORM DATE_PROCESS — `ZFIR0100F01` L311-L330 (20줄) + +*조회 연월(P_SPMON)로 월초~월말 날짜 범위 S_BUDAT 를 LAST_DAY_OF_MONTHS 로 구성하는 FORM 이다.* + +> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 연월 P_SPMON 의 1일을 시작일로 하고 LAST_DAY_OF_MONTHS 로 월말일을 구해 작성일자 조회 범위 S_BUDAT(BT) 를 만든다. + +```abap + 313| CLEAR: S_BUDAT[], S_BUDAT. + 314| S_BUDAT-SIGN = 'I'. + 315| S_BUDAT-OPTION = 'BT'. + 316| S_BUDAT-LOW+0(6) = P_SPMON. + 317| S_BUDAT-LOW+6(2) = '01'. + 318| + 319| CALL FUNCTION 'LAST_DAY_OF_MONTHS' + 320| EXPORTING + 321| DAY_IN = S_BUDAT-LOW + 322| IMPORTING + 323| LAST_DAY_OF_MONTH = S_BUDAT-HIGH + 324| EXCEPTIONS + 325| DAY_IN_NO_DATE = 1 + 326| OTHERS = 2. + 327| + 328| APPEND S_BUDAT. +``` + +- **EN**: Builds the issue-date range S_BUDAT from the first day of the selected month to its last day via LAST_DAY_OF_MONTHS. +- 호출(파서): LAST_DAY_OF_MONTHS +- SAP 객체: LAST_DAY_OF_MONTHS +- 업무 키워드: 조회 기간, 월초, 월말, 날짜 범위 +- English: Period Range, Last Day Of Month, Select-Option +- 정의부(복사 시 함께 필요): [`S_BUDAT`](#decl-zfir0100top-48-s_budat), [`P_SPMON`](#decl-zfir0100scr-9-p_spmon) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L313-L328` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#DATE_PROCESS#C1` + +### FORM MODIFY_PROCESS — `ZFIR0100F01` L240-L261 (22줄) + +*조회된 IT_ZDTV3T_AP_HEAD 를 GT_MAIN 그리드 테이블로 옮기며 전표번호 유무에 따라 처리 상태 아이콘(ZICON)을 설정하는 FORM 이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 수신 전자세금계산서 각 건을 GT_MAIN 으로 복사하고 전표번호(BELNR)가 없으면 미처리 아이콘(@09@), 있으면 처리완료 아이콘(@08@)을 ZICON 에 넣어 그리드 상태 표시를 만든다. + +```abap + 244| LOOP AT IT_ZDTV3T_AP_HEAD. + 245| + 246| MOVE-CORRESPONDING IT_ZDTV3T_AP_HEAD TO GT_MAIN. + 247| + 248| IF GT_MAIN-BELNR IS INITIAL. + 249| GT_MAIN-ZICON = '@09@'. + 250| ELSE. + 251| GT_MAIN-ZICON = '@08@'. + 252| ENDIF. + 253| + 254| + 255| APPEND GT_MAIN. + 256| CLEAR GT_MAIN. + 257| + 258| ENDLOOP. +``` + +- **EN**: Copies each e-tax invoice row into GT_MAIN and sets the status icon based on whether an FI document number (BELNR) already exists. +- SAP 객체: GT_MAIN, IT_ZDTV3T_AP_HEAD +- 업무 키워드: 상태 아이콘, 전표처리 여부, 그리드 데이터 구성 +- English: Status Icon, Document Number, Grid Data +- 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`IT_ZDTV3T_AP_HEAD`](#decl-zfir0100top-11-it_zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L244-L258` · confidence 0.85 · `ZFIR0100#ZFIR0100F01#FORM#MODIFY_PROCESS#C1` + +### FORM DATA_CHANGED — `ZFIR0100F02` L962-L1040 (79줄) + +*편집 ALV 의 DATA_CHANGED 이벤트에서 변경된 셀 값을 GT_MAIN 에 반영하고 변경 플래그를 세우며 오류 시 프로토콜에 기록한 뒤 그리드를 새로고침하는 FORM 이다.* + +> 이 unit 의 조각 2개가 58/79줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 행 삽입(MT_INSERTED_ROWS)이 있으면 셀 변경 처리를 하지 않고 종료한다. + +```abap + 977| DESCRIBE TABLE P_CHANGED->MT_INSERTED_ROWS LINES LV_LINE. + 978| IF LV_LINE <> 0. + 979| EXIT. + 980| ENDIF. +``` + +- **EN**: Exits without processing when the change protocol contains inserted rows. +- 호출(파서): P_CHANGED->MT_INSERTED_ROWS +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL +- 업무 키워드: 행 삽입 제외, 변경 검사 +- English: Inserted Rows, Data Changed +- 정의부(복사 시 함께 필요): [`LV_LINE`](#decl-zfir0100f02-968-lv_line) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L977-L980` · confidence 0.8 · `ZFIR0100#ZFIR0100F02#FORM#DATA_CHANGED#C1` + +#### [other] 변경된 셀(MT_GOOD_CELLS)마다 GET_CELL_VALUE 로 값을 읽어 GT_MAIN 의 해당 필드에 MODIFY 하고 회사코드를 채우며 변경 플래그(GV_CHK)를 세운 뒤, 오류면 ADD_PROTOCAL_ENTRY 로 기록하고 정상이면 MODIFY_CELL 로 셀 값을 확정한다(ZDTV3T_AP_EXT USE_DOC 갱신은 주석 처리). + +```abap + 982| LOOP AT P_CHANGED->MT_GOOD_CELLS INTO LS_MOD_CELLS. + 983| CLEAR: GV_ERR, GS_MSG. + 984| + 985| ASSIGN COMPONENT LS_MOD_CELLS-FIELDNAME + 986| OF STRUCTURE GT_MAIN TO . + 987| + 988| * 입력된 셀의 값 얻기 + 989| + 990| CALL METHOD P_CHANGED->GET_CELL_VALUE + 991| EXPORTING + 992| I_ROW_ID = LS_MOD_CELLS-ROW_ID + 993| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME + 994| I_TABIX = LS_MOD_CELLS-TABIX + 995| IMPORTING + 996| E_VALUE = . + 997| + 998| GV_CHK = 'X'. " 변경 CHECK + 999| + 1000| GT_MAIN-BUKRS = P_BUKRS. + 1001| + 1002| MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID + 1003| TRANSPORTING (LS_MOD_CELLS-FIELDNAME). + 1004| + 1005| + 1006| IF GV_ERR IS NOT INITIAL. + 1007| PERFORM ADD_PROTOCAL_ENTRY USING P_CHANGED + 1008| LS_MOD_CELLS + 1009| GS_MSG. + 1010| ELSE. + 1011| + 1012| * UPDATE VALUE + 1013| + 1014| CALL METHOD P_CHANGED->MODIFY_CELL + 1015| EXPORTING + 1016| I_ROW_ID = LS_MOD_CELLS-ROW_ID + 1017| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME + 1018| I_VALUE = LS_MOD_CELLS-VALUE. + 1019| + 1020| + 1021| * IF LS_MOD_CELLS-FIELDNAME = 'BELNR'. + 1022| * IF LS_MOD_CELLS-VALUE IS INITIAL. + 1023| * L_USE_DOC = ''. + 1024| * ELSE. + 1025| * L_USE_DOC = 'X'. + 1026| * ENDIF. + 1027| * UPDATE ZDTV3T_AP_EXT SET: USE_DOC = L_USE_DOC + 1028| * WHERE BUKRS = GT_MAIN-BUKRS + 1029| * AND ISSUE_DATE = GT_MAIN-ISSUE_DATE + 1030| * AND BUPLA = GT_MAIN-BUPLA + 1031| * AND INV_SEQ = GT_MAIN-INV_SEQ. + 1032| * ENDIF. + 1033| ENDIF. + 1034| + 1035| ENDLOOP. +``` + +- **EN**: For each changed cell, reads the new value with GET_CELL_VALUE, updates the GT_MAIN field and change flag, and either logs an error via ADD_PROTOCAL_ENTRY or confirms the value with MODIFY_CELL. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): P_CHANGED->MT_GOOD_CELLS, P_CHANGED->GET_CELL_VALUE, ADD_PROTOCAL_ENTRY, P_CHANGED->MODIFY_CELL +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, GET_CELL_VALUE, MODIFY_CELL, GT_MAIN +- 업무 키워드: 셀 변경 반영, 변경 플래그, 오류 프로토콜, 전표번호 입력 +- English: Data Changed, Cell Value, Editable ALV +- 정의부(복사 시 함께 필요): [`LS_MOD_CELLS`](#decl-zfir0100f02-965-ls_mod_cells), [`GV_ERR`](#decl-zfir0100t01-59-gv_err), [`GS_MSG`](#decl-zfir0100t01-58-gs_msg), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [``](#decl-zfir0100f02-970--fs_field-), [`GV_CHK`](#decl-zfir0100t01-61-gv_chk), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L982-L1035` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#DATA_CHANGED#C2` + +### FORM ADD_PROTOCAL_ENTRY — `ZFIR0100F02` L1064-L1084 (21줄) + +*편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다.* + +> 이 unit 의 조각 1개가 11/21줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 검증 실패 셀(필드명·행)에 대해 FIMSG 메시지 내용을 ADD_PROTOCOL_ENTRY 로 등록해 ALV 오류 프로토콜에 표시한다. + +```abap + 1072| CALL METHOD RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY + 1073| EXPORTING + 1074| I_MSGID = '00' + 1075| I_MSGTY = 'E' + 1076| I_MSGNO = PS_MESSAGE-MSGNO + 1077| I_MSGV1 = PS_MESSAGE-MSGV1 + 1078| I_MSGV2 = PS_MESSAGE-MSGV2 + 1079| I_MSGV3 = PS_MESSAGE-MSGV3 + 1080| I_MSGV4 = PS_MESSAGE-MSGV4 + 1081| I_FIELDNAME = RS_MOD_CELLS-FIELDNAME + 1082| I_ROW_ID = RS_MOD_CELLS-ROW_ID. +``` + +- **EN**: Adds an error message for the failed cell to the ALV changed-data protocol via ADD_PROTOCOL_ENTRY. +- 호출(파서): RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, ADD_PROTOCOL_ENTRY +- 업무 키워드: 오류 프로토콜, 셀 검증 오류, 메시지 +- English: Error Protocol, Data Changed, ALV Grid +- 위치: `abap://ZFIR0100/ZFIR0100F02#L1072-L1082` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#ADD_PROTOCAL_ENTRY#C1` + +### FORM USER_COMMAND — `ZFIR0100F02` L874-L901 (28줄) + +*ALV 툴바 사용자 명령(REFRESH/SAVE/POST)을 받아 재조회·확인 후 저장·전표기표 FORM 으로 분기하는 디스패치 FORM 이다.* + +> 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] REFRESH 는 SET_DATA·MODIFY_PROCESS·SET_REFRESH 로 재조회, SAVE 는 POPUP_TO_CONFIRM 후 SET_SAVE, POST 는 SET_POST 로 매입전표 기표를 실행한다. + +```abap + 879| CASE P_UCOMM. + 880| + 881| WHEN 'REFRESH'. + 882| PERFORM SET_DATA. + 883| PERFORM MODIFY_PROCESS. + 884| PERFORM SET_REFRESH. + 885| + 886| WHEN 'SAVE'. + 887| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. + 888| CHECK P_ANSWER = 'J'. + 889| PERFORM SET_SAVE. + 890| PERFORM SET_REFRESH. + 891| + 892| WHEN 'POST'. + 893| * PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. + 894| * CHECK P_ANSWER = 'J'. + 895| PERFORM SET_POST. + 896| PERFORM SET_REFRESH. + 897| + 898| + 899| ENDCASE. +``` + +- **EN**: Dispatches ALV user commands to refresh, confirm-and-save, or post routines for the e-tax invoice grid. +- 호출(파서): SET_DATA, MODIFY_PROCESS, SET_REFRESH, POPUP_TO_CONFIRM, SET_SAVE, SET_REFRESH, SET_POST, SET_REFRESH +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 사용자 명령, 재조회, 저장, 전표기표 +- English: User Command, Refresh, Save, Post +- 정의부(복사 시 함께 필요): [`P_ANSWER`](#decl-zfir0100top-37-p_answer) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L879-L899` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#USER_COMMAND#C1` + +### FORM POPUP_TO_CONFIRM — `ZFIR0100F01` L265-L296 (32줄) + +*저장/전표기표 명령에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄워 사용자 응답을 받는 FORM 이다.* + +> 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SAVE 는 '저장 하시겠습니까', POST 는 '전표기표 하시겠습니까' 문구를 준비해 POPUP_TO_CONFIRM_STEP 으로 확인 팝업을 띄우고 응답을 FP_ANSWER 에 받는다. + +```abap + 272| CASE SAVE_OK. + 273| + 274| WHEN 'SAVE'. + 275| L_DEFAULTOPTION = 'Y'. + 276| L_TEXTLINE2 = '저장 하시겠습니까 ?'. + 277| + 278| + 279| WHEN 'POST'. + 280| L_DEFAULTOPTION = 'Y'. + 281| L_TEXTLINE2 = '전표기표 하시겠습니까 ?'. + 282| + 283| ENDCASE. + 284| + 285| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 286| EXPORTING + 287| DEFAULTOPTION = L_DEFAULTOPTION + 288| TEXTLINE1 = L_TEXTLINE1 + 289| TEXTLINE2 = L_TEXTLINE2 + 290| TITEL = TEXT-101 + 291| CANCEL_DISPLAY = '' + 292| IMPORTING + 293| ANSWER = FP_ANSWER. +``` + +- **EN**: Prepares the question text by command (SAVE/POST) and calls POPUP_TO_CONFIRM_STEP to obtain the user's confirmation answer. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 저장 확인, 전표기표 확인 +- English: Confirmation Popup, Posting Confirmation +- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok), [`L_DEFAULTOPTION`](#decl-zfir0100f01-267-l_defaultoption), [`L_TEXTLINE2`](#decl-zfir0100f01-267-l_textline2), [`L_TEXTLINE1`](#decl-zfir0100f01-267-l_textline1) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L272-L293` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#POPUP_TO_CONFIRM#C1` + +### FORM SET_SAVE — `ZFIR0100F01` L404-L492 (89줄) + +*ALV 에서 선택한 전자세금계산서 행의 전표번호를 수신 테이블에 저장하고 사용여부·상태 아이콘을 갱신한다.* + +> 이 unit 의 조각 2개가 57/89줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 그리드에서 현재 선택된 행을 가져오고, 선택이 없으면 '저장 할 행을 선택하세요' 메시지를 내고 중단한다. + +```abap + 426| CLEAR LT_ROWS[]. + 427| CALL METHOD GO_GRID->GET_SELECTED_ROWS + 428| IMPORTING + 429| ET_INDEX_ROWS = LT_ROWS. + 430| + 431| IF LT_ROWS[] IS INITIAL. + 432| MESSAGE S001 WITH '저장 할 행을 선택하세요.'. + 433| EXIT. + 434| ENDIF. +``` + +- **EN**: Fetches the selected ALV rows and aborts with a message when nothing is selected. +- 호출(파서): GO_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS +- 업무 키워드: 행선택, 선택검증, 저장전검증, ALV선택 +- English: row selection, selection check, pre-save validation, ALV +- 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-421-lt_rows), [`GO_GRID`](#decl-zfir0100c01-124-go_grid) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L426-L434` · confidence 0.88 · `ZFIR0100#ZFIR0100F01#FORM#SET_SAVE#C1` + +#### [db_write] 선택한 행마다 전자세금계산서 상세 테이블 ZDTV3T_AP_EXT_D 에 생성된 전표번호·회계연도·처리자를 회사코드·발행일·사업장·계산서순번 키로 UPDATE 하고, 전표번호 유무에 따라 헤더 테이블 ZDTV3T_AP_EXT 의 사용여부(USE_DOC)와 화면 상태 아이콘을 갱신한다. + +```abap + 437| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. + 438| CLEAR GT_MAIN. + 439| + 440| + 441| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. + 442| IF SY-SUBRC = 0. + 443| + 444| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[]. + 445| + 446| UPDATE ZDTV3T_AP_EXT_D SET: BELNR = GT_MAIN-BELNR + 447| * BUDAT = LT_BKPF-BUDAT + 448| * BLDAT = LT_BKPF-BLDAT + 449| * BLART = LT_BKPF-BLART + 450| * MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ + 451| * DMBTR = IS_INVOICE-GRANDTOTAL + 452| UNAME = SY-UNAME + 453| ZGJAH = GT_MAIN-ZGJAH + 454| WHERE BUKRS = GT_MAIN-BUKRS + 455| AND ISSUE_DATE = GT_MAIN-ISSUE_DATE + 456| AND BUPLA = GT_MAIN-BUPLA + 457| AND INV_SEQ = GT_MAIN-INV_SEQ. + 458| + 459| IF GT_MAIN-BELNR IS INITIAL. + 460| L_USE_DOC = ''. + 461| GT_MAIN-ZICON = '@09@'. + 462| + 463| ELSE. + 464| L_USE_DOC = 'X'. + 465| GT_MAIN-ZICON = '@08@'. + 466| + 467| ENDIF. + 468| + 469| + 470| UPDATE ZDTV3T_AP_EXT SET: USE_DOC = L_USE_DOC + 471| WHERE BUKRS = GT_MAIN-BUKRS + 472| AND ISSUE_DATE = GT_MAIN-ISSUE_DATE + 473| AND BUPLA = GT_MAIN-BUPLA + 474| AND INV_SEQ = GT_MAIN-INV_SEQ. + 475| + 476| IF SY-SUBRC = 0. + 477| G_OK = 'X'. + 478| + 479| MODIFY GT_MAIN INDEX LS_ROWS-INDEX TRANSPORTING ZICON. + 480| + 481| ENDIF. + 482| + 483| ENDIF. + 484| ENDLOOP. +``` + +- **EN**: For each selected row, updates the e-tax-invoice detail table with the posted document number and the header table's USE_DOC flag, refreshing the status icon. +- 테이블(파서): read - / write [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md), [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md), [GT_MAIN](/tables/GT_MAIN.md) +- SAP 객체: ZDTV3T_AP_EXT_D, ZDTV3T_AP_EXT, BELNR, USE_DOC, ISSUE_DATE, INV_SEQ +- 업무 키워드: 전자세금계산서, 전표번호, 저장, 사용여부, 발행일, 사업장, 계산서순번, 상태아이콘 +- English: electronic tax invoice, document number, save, use flag, issue date, business place, invoice sequence +- 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-421-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-422-ls_rows), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LT_SCOL`](#decl-zfir0100f01-407-lt_scol), [`ZDTV3T_AP_EXT_D`](#decl-zfir0100top-5-zdtv3t_ap_ext_d), [`L_USE_DOC`](#decl-zfir0100f01-414-l_use_doc), [`ZDTV3T_AP_EXT`](#decl-zfir0100top-5-zdtv3t_ap_ext), [`G_OK`](#decl-zfir0100top-38-g_ok) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L437-L484` · confidence 0.85 · `ZFIR0100#ZFIR0100F01#FORM#SET_SAVE#C2` + +### FORM SET_POST — `ZFIR0100F01` L335-L397 (63줄) + +*ALV 에서 선택된 미처리 전자세금계산서 행을 GT_TABLE 로 메모리에 EXPORT 한 뒤 전표 입력 화면 ZFIR0110_DOC 을 호출해 매입전표를 기표하는 FORM 이다.* + +> 이 unit 의 조각 2개가 36/63줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] GO_GRID->GET_SELECTED_ROWS 로 선택 행을 읽고 선택 행이 없으면 '전표기표 할 행을 선택하세요' 메시지 후 종료한다. + +```abap + 355| CALL METHOD GO_GRID->GET_SELECTED_ROWS + 356| IMPORTING + 357| ET_INDEX_ROWS = LT_ROWS. + 358| + 359| IF LT_ROWS[] IS INITIAL. + 360| MESSAGE S001 WITH '전표기표 할 행을 선택하세요.'. + 361| EXIT. + 362| ENDIF. +``` + +- **EN**: Gets the selected ALV rows and exits with a message if none are selected for document posting. +- 호출(파서): GO_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS +- 업무 키워드: 행 선택 검증, 전표기표 +- English: Selected Rows, Validation +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [`LT_ROWS`](#decl-zfir0100f01-348-lt_rows) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L355-L362` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_POST#C1` + +#### [interface] 선택된 각 행에 대해 이미 전표번호(BELNR)가 있으면 '이미 처리된 전표' 메시지로 건너뛰고, 아니면 해당 전자세금계산서 행을 GT_TABLE 에 담아 EXPORT TO MEMORY ID 'GT_TABLE' 후 CALL TRANSACTION 'ZFIR0110_DOC' 으로 매입전표 입력 화면을 호출한다. + +```abap + 365| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. + 366| CLEAR GT_MAIN. + 367| + 368| + 369| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. + 370| IF SY-SUBRC = 0. + 371| + 372| IF NOT GT_MAIN-BELNR IS INITIAL. + 373| MESSAGE S001 WITH '이미 처리된 전표가 있습니다'. + 374| CONTINUE. + 375| ENDIF. + 376| + 377| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[]. + 378| CLEAR: GT_TABLE[], GT_TABLE. + 379| + 380| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE. + 381| APPEND GT_TABLE. + 382| CLEAR GT_TABLE. + 383| + 384| ** + 385| G_OK = 'X'. + 386| EXPORT GT_TABLE TO MEMORY ID 'GT_TABLE'. + 387| CALL TRANSACTION 'ZFIR0110_DOC'. + 388| FREE GT_TABLE. + 389| ** + 390| + 391| ENDIF. + 392| ENDLOOP. +``` + +- **EN**: For each selected unposted e-tax invoice row, exports it to ABAP memory (ID GT_TABLE) and calls transaction ZFIR0110_DOC to create the AP document; rows already having BELNR are skipped. +- 호출(파서): ZFIR0110_DOC +- SAP 객체: ZFIR0110_DOC, GT_TABLE, GT_MAIN +- 업무 키워드: 매입전표 기표, 전자세금계산서, 메모리 전달, 중복 처리 방지 +- English: AP Document Posting, E-Tax Invoice, Call Transaction, ABAP Memory +- 정의부(복사 시 함께 필요): [`LT_ROWS`](#decl-zfir0100f01-348-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-349-ls_rows), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LT_SCOL`](#decl-zfir0100f01-338-lt_scol), [`GT_TABLE`](#decl-zfir0100top-43-gt_table), [`G_OK`](#decl-zfir0100top-38-g_ok) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L365-L392` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#SET_POST#C2` + +### FORM HANDLE_DOUBLE_CLICK — `ZFIR0100F02` L1096-L1113 (18줄) + +*ALV 전표번호(BELNR) 셀 더블클릭 시 회사코드·회계연도·전표번호를 파라미터로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다.* + +> 이 unit 의 조각 1개가 12/18줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 더블클릭한 행이 BELNR 컬럼이고 전표번호가 있으면 SET PARAMETER ID BUK/GJR/BLN 으로 회사코드·회계연도·전표번호를 넘겨 FB03(전표 조회)을 SKIP FIRST SCREEN 으로 호출한다. + +```abap + 1100| READ TABLE GT_MAIN INDEX P_ROW-INDEX. + 1101| IF SY-SUBRC EQ 0. + 1102| IF P_COLUMN-FIELDNAME = 'BELNR'. + 1103| IF NOT GT_MAIN-BELNR IS INITIAL. + 1104| SET PARAMETER ID 'BUK' FIELD P_BUKRS. "회사코드 + 1105| SET PARAMETER ID 'GJR' FIELD GT_MAIN-ZGJAH. "회계연도 + 1106| SET PARAMETER ID 'BLN' FIELD GT_MAIN-BELNR. "전표 + 1107| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 1108| ENDIF. + 1109| ENDIF. + 1110| + 1111| ENDIF. +``` + +- **EN**: On double-click of a filled BELNR cell, sets BUK/GJR/BLN parameters and calls transaction FB03 to display the FI document. +- 호출(파서): FB03 +- SAP 객체: FB03, GT_MAIN +- 업무 키워드: 전표 조회, 더블클릭, 전표번호, 회계연도 +- English: Display Document, FI Document, Hotspot Navigation +- 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`P_BUKRS`](#decl-zfir0100scr-6-p_bukrs) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L1100-L1111` · confidence 0.95 · `ZFIR0100#ZFIR0100F02#FORM#HANDLE_DOUBLE_CLICK#C1` + +### FORM SET_POP_MESSAGE — `ZFIR0100F01` L194-L216 (23줄) + +*POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM 을 호출해 전달받은 질문 텍스트로 예/아니오 팝업을 띄우고 응답을 P_ANSWER 로 반환하며 오류 시 시스템 메시지를 출력한다. + +```abap + 197| CALL FUNCTION 'POPUP_TO_CONFIRM' + 198| EXPORTING + 199| TEXT_QUESTION = P_TEXT + 200| TEXT_BUTTON_1 = '예(Yes)' + 201| TEXT_BUTTON_2 = '아니오(No)' + 202| DEFAULT_BUTTON = '1' + 203| DISPLAY_CANCEL_BUTTON = '' + 204| START_COLUMN = 25 + 205| START_ROW = 6 + 206| IMPORTING + 207| ANSWER = P_ANSWER + 208| EXCEPTIONS + 209| TEXT_NOT_FOUND = 1 + 210| OTHERS = 2. + 211| IF SY-SUBRC <> 0. + 212| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 213| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 214| ENDIF. +``` + +- **EN**: Calls POPUP_TO_CONFIRM with the given question text to get a Yes/No answer and raises the system message on failure. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 예/아니오, 사용자 응답 +- English: Confirmation Popup, Dialog +- 정의부(복사 시 함께 필요): [`P_ANSWER`](#decl-zfir0100top-37-p_answer) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L197-L214` · confidence 0.95 · `ZFIR0100#ZFIR0100F01#FORM#SET_POP_MESSAGE#C1` + +### FORM CHANG_LINE — `ZFIR0100F01` L496-L573 (78줄) + +*ALV 에서 선택된 행만 변경 가능하도록 전체 행의 CELLTAB 을 초기화한 뒤 선택 행에 전표번호(BELNR)·회계연도(ZGJAH) 셀만 편집 가능한 스타일을 적용하는 FORM 이다.* + +> 이 unit 의 조각 2개가 43/78줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] GO_GRID->GET_SELECTED_ROWS 로 선택 행을 가져오고 선택 행이 없으면 G_LINE 플래그를 세우고 '변경 할 행을 선택하세요' 메시지 후 종료한다. + +```abap + 526| CALL METHOD GO_GRID->GET_SELECTED_ROWS + 527| IMPORTING + 528| ET_INDEX_ROWS = LT_ROWS. + 529| + 530| IF LT_ROWS[] IS INITIAL. + 531| G_LINE = 'X'. + 532| MESSAGE S001 WITH '변경 할 행을 선택하세요.'. + 533| EXIT. + 534| ENDIF. +``` + +- **EN**: Reads the selected ALV rows via GET_SELECTED_ROWS and exits with a message if no row is selected. +- 호출(파서): GO_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS +- 업무 키워드: 행 선택 검증, 선택 행, 메시지 +- English: Selected Rows, ALV Grid, Validation +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [`LT_ROWS`](#decl-zfir0100f01-518-lt_rows), [`G_LINE`](#decl-zfir0100top-39-g_line) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L526-L534` · confidence 0.9 · `ZFIR0100#ZFIR0100F01#FORM#CHANG_LINE#C1` + +#### [other] GT_MAIN 전체 행의 CELLTAB 을 지운 뒤 선택된 행에 대해서만 SET_CELLTAB('CHAN') 으로 전표번호·회계연도 셀을 편집 가능하게 하는 셀 스타일을 삽입해 행 단위 편집 권한을 부여한다. + +```abap + 537| LOOP AT GT_MAIN. + 538| LV_TABIX = SY-TABIX. + 539| CLEAR: GT_MAIN-CELLTAB. + 540| MODIFY GT_MAIN INDEX LV_TABIX TRANSPORTING CELLTAB. + 541| CLEAR GT_MAIN. + 542| ENDLOOP. + 543| + 544| + 545| + 546| LOOP AT LT_ROWS INTO LS_ROWS WHERE ROWTYPE = SPACE. + 547| CLEAR GT_MAIN. + 548| + 549| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. + 550| IF SY-SUBRC = 0. + 551| + 552| CLEAR: GT_MAIN-CELLTAB, + 553| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM. + 554| + 555| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN. + 556| + 557| IF LV_UCOMM IS INITIAL. + 558| LV_UCOMM = 'CHAN'. " GV_UCOMM. + 559| ENDIF. + 560| + 561| * SETTING COLOR + 562| PERFORM SET_CELLTAB USING LS_MAIN + 563| LV_UCOMM + 564| CHANGING LT_CELLTAB. + 565| + 566| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB. + 567| MODIFY GT_MAIN INDEX LS_ROWS-INDEX. + 568| ENDIF. + 569| + 570| ENDLOOP. +``` + +- **EN**: Clears CELLTAB for all rows and, for each selected row, builds the CHAN cell style via SET_CELLTAB so only BELNR/ZGJAH cells become editable. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): SET_CELLTAB +- SAP 객체: LVC_T_STYL +- 업무 키워드: 셀 편집 스타일, 선택 행 편집, 전표번호, 회계연도 +- English: CELLTAB, Editable Cell, Document Number +- 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [`LV_TABIX`](#decl-zfir0100f01-503-lv_tabix), [`LT_ROWS`](#decl-zfir0100f01-518-lt_rows), [`LS_ROWS`](#decl-zfir0100f01-519-ls_rows), [`LS_MAIN`](#decl-zfir0100f01-498-ls_main), [`LT_CELLTAB`](#decl-zfir0100f01-499-lt_celltab), [`LV_UCOMM`](#decl-zfir0100f01-500-lv_ucomm) +- 위치: `abap://ZFIR0100/ZFIR0100F01#L537-L570` · confidence 0.8 · `ZFIR0100#ZFIR0100F01#FORM#CHANG_LINE#C2` + +### FORM SET_CELLTAB — `ZFIR0100F02` L88-L124 (37줄) + +*변경(CHAN) 모드에서 필드카탈로그 전 컬럼을 입력 불가로 두되 전표번호(BELNR)·회계연도(ZGJAH) 셀만 입력 가능하게 CELLTAB 스타일을 만드는 FORM 이다.* + +> 이 unit 의 조각 1개가 24/37줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] CHAN 명령일 때 필드카탈로그의 각 컬럼을 MC_STYLE_DISABLED 로 잠그고 BELNR·ZGJAH 컬럼만 MC_STYLE_ENABLED 로 열어 사용자가 수동 전표번호·회계연도만 입력할 수 있도록 CELLTAB 을 구성한다. + +```abap + 99| LOOP AT GT_FCAT1 INTO GS_FCAT. + 100| CLEAR LS_CELLTAB. + 101| CASE P_UCOMM. + 102| + 103| WHEN 'CHAN'. + 104| + 105| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. + 106| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 107| LS_CELLTAB-STYLE = LV_MODE. + 108| + 109| IF GS_FCAT-FIELDNAME = 'BELNR' OR + 110| GS_FCAT-FIELDNAME = 'ZGJAH'. + 111| + 112| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. + 113| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 114| LS_CELLTAB-STYLE = LV_MODE. + 115| ENDIF. + 116| + 117| ENDCASE. + 118| + 119| + 120| INSERT LS_CELLTAB INTO TABLE P_CELLTAB. + 121| + 122| ENDLOOP. +``` + +- **EN**: Builds the CELLTAB style table so that in CHAN mode only the BELNR and ZGJAH cells are enabled for input while all other columns are disabled. +- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_DISABLED, CL_GUI_ALV_GRID=>MC_STYLE_ENABLED +- SAP 객체: CL_GUI_ALV_GRID, LVC_T_STYL +- 업무 키워드: 셀 입력 제어, 전표번호, 회계연도, 편집 가능 컬럼 +- English: CELLTAB, Cell Style, Editable Column +- 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0100t01-35-gt_fcat1), [`GS_FCAT`](#decl-zfir0100t01-34-gs_fcat), [`LS_CELLTAB`](#decl-zfir0100f02-92-ls_celltab), [`LV_MODE`](#decl-zfir0100f02-93-lv_mode) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L99-L122` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#SET_CELLTAB#C1` + +### FORM RUN_DISPLAY_ALV — `ZFIR0100F02` L703-L725 (23줄) + +*화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 화면번호에 따라 그리드 객체와 GT_MAIN 을 필드심볼에 할당하고 SET_EVENT_UCOMM 이벤트 등록 후 CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY 로 레이아웃·변형·툴바제외·정렬을 적용해 ALV 를 표시한다. + +```abap + 705| CASE P_VALUE. + 706| WHEN '0100'. + 707| ASSIGN: GO_GRID TO , + 708| GT_MAIN[] TO . + 709| ENDCASE. + 710| + 711| PERFORM SET_EVENT_UCOMM. + 712| + 713| CALL METHOD ->SET_TABLE_FOR_FIRST_DISPLAY + 714| EXPORTING + 715| I_DEFAULT = 'X' + 716| IS_LAYOUT = GS_LAYOUT + 717| IS_VARIANT = GS_VARIANT + 718| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 719| I_SAVE = 'A' + 720| CHANGING + 721| IT_OUTTAB = + 722| IT_FIELDCATALOG = + 723| IT_SORT = GT_SORT. +``` + +- **EN**: Assigns the grid and GT_MAIN by screen number, registers events and calls SET_TABLE_FOR_FIRST_DISPLAY with layout, variant, toolbar exclusions and sort to display the ALV grid. +- 호출(파서): SET_EVENT_UCOMM, ->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID, SET_TABLE_FOR_FIRST_DISPLAY +- 업무 키워드: ALV 표시, 그리드, 레이아웃, 변형 +- English: ALV Grid, Layout Variant, First Display +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0100c01-124-go_grid), [``](#decl-zfir0100t01-86--fs_grid-), [`ZDTV3T_AP_HEAD`](#decl-zfir0100top-5-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0100top-21-gt_main), [``](#decl-zfir0100t01-87--fs_table-), [`GS_LAYOUT`](#decl-zfir0100t01-30-gs_layout), [`GS_VARIANT`](#decl-zfir0100t01-31-gs_variant), [`GT_EXCLUDE`](#decl-zfir0100t01-33-gt_exclude), [``](#decl-zfir0100t01-84--gt_field-), [`GT_SORT`](#decl-zfir0100t01-37-gt_sort) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L705-L723` · confidence 0.85 · `ZFIR0100#ZFIR0100F02#FORM#RUN_DISPLAY_ALV#C1` + +### FORM SET_CHANGE — `ZFIR0100F02` L912-L953 (42줄) + +*변경(CHAN) 명령 시 선택 행 상태에 따라 그리드 편집 가능 여부를 토글하고 잠금(SET_LOCK)을 설정하는 FORM 이다.* + +> 이 unit 의 조각 2개가 12/42줄(29%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHANG_LINE 으로 선택 행의 변경 가능 여부(G_LINE)를 판정한 뒤 변경 가능하면 GO_GRID->SET_READY_FOR_INPUT 으로 편집 모드를 켜고 아니면 끈다. + +```abap + 914| PERFORM CHANG_LINE. + 915| + 916| IF G_LINE = ''. + 917| CALL METHOD GO_GRID->SET_READY_FOR_INPUT + 918| EXPORTING + 919| I_READY_FOR_INPUT = 1. + 920| ELSE. + 921| CALL METHOD GO_GRID->SET_READY_FOR_INPUT + 922| EXPORTING + 923| I_READY_FOR_INPUT = 0. + 924| ENDIF. +``` + +- **EN**: Determines via CHANG_LINE whether the selected rows are changeable and toggles ALV edit mode with SET_READY_FOR_INPUT accordingly. +- 호출(파서): CHANG_LINE, GO_GRID->SET_READY_FOR_INPUT, GO_GRID->SET_READY_FOR_INPUT +- SAP 객체: CL_GUI_ALV_GRID, SET_READY_FOR_INPUT +- 업무 키워드: 편집 모드, 변경 가능 여부, 행 선택 +- English: Edit Mode, ALV Grid, Ready For Input +- 정의부(복사 시 함께 필요): [`G_LINE`](#decl-zfir0100top-39-g_line), [`GO_GRID`](#decl-zfir0100c01-124-go_grid) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L914-L924` · confidence 0.8 · `ZFIR0100#ZFIR0100F02#FORM#SET_CHANGE#C1` + +#### [control_flow] 편집 진입 시 SET_LOCK 으로 데이터 잠금(Enqueue)을 걸어 동시 수정을 방지한다. + +```abap + 951| PERFORM SET_LOCK USING GV_UCOMM. +``` + +- **EN**: Calls SET_LOCK to enqueue the data when entering change mode to prevent concurrent edits. +- 호출(파서): SET_LOCK +- 업무 키워드: 잠금, 동시 수정 방지 +- English: Enqueue, Lock +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zfir0100t01-57-gv_ucomm) +- 위치: `abap://ZFIR0100/ZFIR0100F02#L951-L951` · confidence 0.7 · `ZFIR0100#ZFIR0100F02#FORM#SET_CHANGE#C2` + +### MODULE USER_COMMAND_0100_EXIT INPUT — `ZFIR0100I01` L7-L37 (31줄) + +*화면 0100 종료 명령 처리 시 미저장 변경분 확인 팝업을 띄우고 잠금을 해제한 뒤 화면을 빠져나가는 EXIT 모듈이다.* + +> 이 unit 의 조각 2개가 19/31줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 변경 플래그(GV_CHK)가 있으면 SET_POP_MESSAGE 확인 팝업을 띄워 사용자가 확인하면 CHK_DATA 로 데이터 검증을 수행하고 오류가 있으면 종료를 막는다. + +```abap + 11| IF GV_CHK IS NOT INITIAL. + 12| PERFORM SET_POP_MESSAGE USING TEXT-100 + 13| CHANGING GV_ANSWER. + 14| IF GV_ANSWER = '1'. + 15| PERFORM CHK_DATA. + 16| ELSE. + 17| MESSAGE S001 WITH TEXT-101. + 18| ENDIF. + 19| + 20| CHECK GV_ERR IS INITIAL. + 21| ENDIF. +``` + +- **EN**: If unsaved changes exist, shows a confirmation popup and runs CHK_DATA validation, blocking exit on error. +- 호출(파서): SET_POP_MESSAGE, CHK_DATA +- 업무 키워드: 종료 확인, 변경 확인, 데이터 검증 +- English: Exit Confirmation, Validation +- 정의부(복사 시 함께 필요): [`GV_CHK`](#decl-zfir0100t01-61-gv_chk), [`GV_ANSWER`](#decl-zfir0100t01-60-gv_answer), [`GV_ERR`](#decl-zfir0100t01-59-gv_err) +- 위치: `abap://ZFIR0100/ZFIR0100I01#L11-L21` · confidence 0.8 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C1` + +#### [control_flow] SET_LOCK 으로 잠금(Enqueue)을 해제한 뒤 BACK/EXIT 은 화면 0, CANCEL 은 프로그램 종료로 분기한다. + +```abap + 28| PERFORM SET_LOCK USING 'UNLOCK'. + 29| + 30| CASE SAVE_OK. + 31| WHEN '&F03' OR '&F15'. + 32| LEAVE TO SCREEN 0. + 33| WHEN '&F12'. + 34| LEAVE PROGRAM. + 35| ENDCASE. +``` + +- **EN**: Releases the lock via SET_LOCK and leaves the screen or program according to the exit function code. +- 호출(파서): SET_LOCK +- 업무 키워드: 잠금 해제, 화면 종료 +- English: Dequeue, Leave Screen +- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok) +- 위치: `abap://ZFIR0100/ZFIR0100I01#L28-L35` · confidence 0.85 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0100I01` L45-L89 (45줄) + +*화면 0100 의 사용자 명령(변경·재조회·저장·전기)을 받아 해당 처리 FORM 으로 분기하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 28/45줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK_CODE(CHAN/REFRESH/SAVE/POST)에 따라 전자세금계산서 그리드 변경 반영(SET_CHANGE), 재조회(SET_DATA·MODIFY_PROCESS), 확인 팝업 후 저장(SET_SAVE), 매입전표 전기(SET_POST) 를 분기 호출한다. + +```abap + 60| CASE SAVE_OK. + 61| WHEN 'CHAN'. + 62| PERFORM SET_CHANGE. " CHANGE + 63| + 64| + 65| WHEN 'REFRESH'. + 66| PERFORM SET_DATA. + 67| PERFORM MODIFY_PROCESS. + 68| PERFORM SET_REFRESH. + 69| + 70| WHEN 'SAVE'. + 71| PERFORM POPUP_TO_CONFIRM USING P_ANSWER SAVE_OK. + 72| CHECK P_ANSWER = 'J'. + 73| PERFORM SET_SAVE. + 74| PERFORM SET_REFRESH. + 75| + 76| WHEN 'POST'. + 77| * PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. + 78| * CHECK P_ANSWER = 'J'. + 79| PERFORM SET_POST. + 80| + 81| IF G_OK = 'X'. + 82| PERFORM SET_DATA. + 83| PERFORM MODIFY_PROCESS. + 84| PERFORM SET_REFRESH. + 85| ENDIF. + 86| + 87| ENDCASE. +``` + +- **EN**: Dispatches screen 0100 user commands to change, refresh, save (after POPUP_TO_CONFIRM) and post routines for the e-tax invoice AP document grid. +- 호출(파서): SET_CHANGE, SET_DATA, MODIFY_PROCESS, SET_REFRESH, POPUP_TO_CONFIRM, SET_SAVE, SET_REFRESH, SET_POST, SET_DATA, MODIFY_PROCESS, SET_REFRESH +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 사용자 명령, 저장, 전기, 재조회, 확인 팝업 +- English: User Command, PAI, Posting, Save +- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0100t01-55-save_ok), [`P_ANSWER`](#decl-zfir0100top-37-p_answer), [`G_OK`](#decl-zfir0100top-38-g_ok) +- 위치: `abap://ZFIR0100/ZFIR0100I01#L60-L87` · confidence 0.9 · `ZFIR0100#ZFIR0100I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (107건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0100C01` (18건) + +#### LCL_EVENT_RECEIVER — class · L7-L52 {#decl-zfir0100c01-7-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION . + PUBLIC SECTION . + +* 변경 필드 값처리 + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING + ER_DATA_CHANGED. + +* ON F4처리 + + METHODS : HANDLE_ON_F4 + FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + +* TOOLBAR + + METHODS: HANDLE_ON_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_INTERACTIVE + SENDER. + +* USER_COMMAND + + METHODS: HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING E_UCOMM. + +* DOUBLE_CLICK + + METHODS: HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION +``` + +#### GO_CUSTOM — data · L110-L110 {#decl-zfir0100c01-110-go_custom} + +```abap +DATA: GO_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GO_CUSTOM2 — data · L111-L111 {#decl-zfir0100c01-111-go_custom2} + +```abap +DATA: + GO_CUSTOM2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GO_DOCKING — data · L113-L113 {#decl-zfir0100c01-113-go_docking} + +```abap +DATA: GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING2 — data · L114-L114 {#decl-zfir0100c01-114-go_docking2} + +```abap +DATA: + GO_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_SPLITTER — data · L116-L116 {#decl-zfir0100c01-116-go_splitter} + +```abap +DATA: GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L117-L117 {#decl-zfir0100c01-117-go_splitter2} + +```abap +DATA: + GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_GRID — data · L124-L124 {#decl-zfir0100c01-124-go_grid} + +```abap +DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID2 — data · L125-L125 {#decl-zfir0100c01-125-go_grid2} + +```abap +DATA: + GO_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID3 — data · L126-L126 {#decl-zfir0100c01-126-go_grid3} + +```abap +DATA: + GO_GRID3 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID4 — data · L127-L127 {#decl-zfir0100c01-127-go_grid4} + +```abap +DATA: + GO_GRID4 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID5 — data · L128-L128 {#decl-zfir0100c01-128-go_grid5} + +```abap +DATA: + GO_GRID5 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_CON — data · L130-L130 {#decl-zfir0100c01-130-go_con} + +```abap +DATA: GO_CON TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON2 — data · L131-L131 {#decl-zfir0100c01-131-go_con2} + +```abap +DATA: + GO_CON2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON3 — data · L132-L132 {#decl-zfir0100c01-132-go_con3} + +```abap +DATA: + GO_CON3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON4 — data · L133-L133 {#decl-zfir0100c01-133-go_con4} + +```abap +DATA: + GO_CON4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON5 — data · L134-L134 {#decl-zfir0100c01-134-go_con5} + +```abap +DATA: + GO_CON5 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_EVENT — data · L136-L136 {#decl-zfir0100c01-136-go_event} + +```abap +DATA: GO_EVENT TYPE REF TO LCL_EVENT_RECEIVER. +``` + +### `ZFIR0100SCR` (7건) + +#### P_BUKRS — parameter · L6-L8 {#decl-zfir0100scr-6-p_bukrs} + +```abap +PARAMETERS : P_BUKRS TYPE T001-BUKRS DEFAULT 'KR01' + MEMORY ID BUK + OBLIGATORY. +``` + +#### P_SPMON — parameter · L9-L10 {#decl-zfir0100scr-9-p_spmon} + +```abap +PARAMETERS: + P_SPMON TYPE SPMON DEFAULT SY-DATUM+0(6) + OBLIGATORY. +``` + +#### S_SU_ID — select-option · L12-L12 {#decl-zfir0100scr-12-s_su_id} + +```abap +SELECT-OPTIONS: S_SU_ID FOR LFA1-LIFNR. +``` + +#### S_EMAIL — select-option · L13-L13 {#decl-zfir0100scr-13-s_email} + +```abap +SELECT-OPTIONS: + S_EMAIL FOR ZDTV3T_AP_HEAD-IP_EMAIL1. +``` + +#### P_R1 — parameter · L22-L22 {#decl-zfir0100scr-22-p_r1} + +```abap +PARAMETERS: P_R1 RADIOBUTTON GROUP G1 . +``` + +#### P_R2 — parameter · L25-L25 {#decl-zfir0100scr-25-p_r2} + +```abap +PARAMETERS: P_R2 RADIOBUTTON GROUP G1. +``` + +#### P_R3 — parameter · L28-L28 {#decl-zfir0100scr-28-p_r3} + +```abap +PARAMETERS: P_R3 RADIOBUTTON GROUP G1. +``` + +### `ZFIR0100T01` (39건) + +#### IT_EXCEL — data · L9-L9 {#decl-zfir0100t01-9-it_excel} + +```abap +DATA: IT_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCEL — data · L13-L22 {#decl-zfir0100t01-13-gt_excel} + +```abap +DATA: BEGIN OF GT_EXCEL OCCURS 0, + TRDAT(10), + BANK_COD3(10), + BANKN(20), + OUTAMT(20), + INAMT(20), + ZBALAMT(20), + NAME(20), + SGTXT(20), + END OF GT_EXCEL. +``` + +#### IT_ZTRT0002 — data · L25-L27 {#decl-zfir0100t01-25-it_ztrt0002} + +```abap +DATA: BEGIN OF IT_ZTRT0002 OCCURS 0. + INCLUDE STRUCTURE ZTRT0002. +DATA END OF IT_ZTRT0002. +``` + +#### GS_LAYOUT — data · L30-L30 {#decl-zfir0100t01-30-gs_layout} + +```abap +DATA: GS_LAYOUT TYPE LVC_S_LAYO. +``` + +#### GS_VARIANT — data · L31-L31 {#decl-zfir0100t01-31-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GX_VARIANT — data · L32-L32 {#decl-zfir0100t01-32-gx_variant} + +```abap +DATA: + GX_VARIANT TYPE DISVARIANT. +``` + +#### GT_EXCLUDE — data · L33-L33 {#decl-zfir0100t01-33-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_FCAT — data · L34-L34 {#decl-zfir0100t01-34-gs_fcat} + +```abap +DATA: + GS_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_FCAT1 — data · L35-L35 {#decl-zfir0100t01-35-gt_fcat1} + +```abap +DATA: + GT_FCAT1 TYPE LVC_T_FCAT. +``` + +#### GS_SORT — data · L36-L36 {#decl-zfir0100t01-36-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. +``` + +#### GT_SORT — data · L37-L37 {#decl-zfir0100t01-37-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. +``` + +#### GS_GLAY — data · L38-L38 {#decl-zfir0100t01-38-gs_glay} + +```abap +DATA: + GS_GLAY TYPE LVC_S_GLAY. +``` + +#### GT_HEAD — data · L39-L39 {#decl-zfir0100t01-39-gt_head} + +```abap +DATA: + GT_HEAD TYPE LVC_T_HEAD. +``` + +#### GS_HEAD — data · L40-L40 {#decl-zfir0100t01-40-gs_head} + +```abap +DATA: + GS_HEAD TYPE LVC_S_HEAD. +``` + +#### GS_EVENT — data · L41-L41 {#decl-zfir0100t01-41-gs_event} + +```abap +DATA: + GS_EVENT TYPE LVC_S_EVTS. +``` + +#### GT_EVENT — data · L42-L42 {#decl-zfir0100t01-42-gt_event} + +```abap +DATA: + GT_EVENT TYPE LVC_T_EVTS. +``` + +#### GS_STBL — data · L43-L43 {#decl-zfir0100t01-43-gs_stbl} + +```abap +DATA: + GS_STBL TYPE LVC_S_STBL. " Refresh stability. +``` + +#### G_REPID — data · L45-L45 {#decl-zfir0100t01-45-g_repid} + +```abap +DATA: G_REPID TYPE SY-REPID. +``` + +#### G_TABNAME — data · L46-L46 {#decl-zfir0100t01-46-g_tabname} + +```abap +DATA: + G_TABNAME TYPE SLIS_TABNAME. +``` + +#### GV_EXIT — data · L47-L47 {#decl-zfir0100t01-47-gv_exit} + +```abap +DATA: + GV_EXIT TYPE C. +``` + +#### OK_CODE — data · L54-L54 {#decl-zfir0100t01-54-ok_code} + +```abap +DATA: OK_CODE TYPE SY-UCOMM. +``` + +#### SAVE_OK — data · L55-L55 {#decl-zfir0100t01-55-save_ok} + +```abap +DATA: + SAVE_OK TYPE SY-UCOMM. +``` + +#### GV_UCOMM — data · L57-L57 {#decl-zfir0100t01-57-gv_ucomm} + +```abap +DATA: GV_UCOMM TYPE SY-UCOMM. " COMMAND +``` + +#### GS_MSG — data · L58-L58 {#decl-zfir0100t01-58-gs_msg} + +```abap +DATA: + GS_MSG LIKE FIMSG. " MESSSAGE +``` + +#### GV_ERR — data · L59-L59 {#decl-zfir0100t01-59-gv_err} + +```abap +DATA: + GV_ERR TYPE C. " ERROR +``` + +#### GV_ANSWER — data · L60-L60 {#decl-zfir0100t01-60-gv_answer} + +```abap +DATA: + GV_ANSWER TYPE C. " MESSAGE +``` + +#### GV_CHK — data · L61-L61 {#decl-zfir0100t01-61-gv_chk} + +```abap +DATA: + GV_CHK TYPE C. " CHANGE +``` + +#### GV_LOCK — data · L62-L62 {#decl-zfir0100t01-62-gv_lock} + +```abap +DATA: + GV_LOCK TYPE C. +``` + +#### GV_MNAME — data · L63-L63 {#decl-zfir0100t01-63-gv_mname} + +```abap +DATA: + GV_MNAME TYPE STRING. +``` + +#### GS_F4 — data · L65-L65 {#decl-zfir0100t01-65-gs_f4} + +```abap +DATA: GS_F4 TYPE LVC_S_F4. " F4 ## ## +``` + +#### GT_F4 — data · L66-L66 {#decl-zfir0100t01-66-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GC_YEL — constants · L73-L73 {#decl-zfir0100t01-73-gc_yel} + +```abap +CONSTANTS: GC_YEL(4) VALUE '@09@'. " ICON_LED_YELLOW +``` + +#### GC_GRE — constants · L74-L74 {#decl-zfir0100t01-74-gc_gre} + +```abap +CONSTANTS: + GC_GRE(4) VALUE '@08@'. " ICON_LED_GREEN +``` + +#### GC_OUT — constants · L75-L75 {#decl-zfir0100t01-75-gc_out} + +```abap +CONSTANTS: + GC_OUT(4) VALUE '@EB@'. " ICON_LED_LIGHT_OUT +``` + +#### GC_RED — constants · L76-L76 {#decl-zfir0100t01-76-gc_red} + +```abap +CONSTANTS: + GC_RED(4) VALUE '@0A@'. " ICON_LED_RED +``` + +#### — field-symbol · L83-L83 {#decl-zfir0100t01-83--gs_field-} + +```abap +FIELD-SYMBOLS: TYPE LVC_S_FCAT. +``` + +#### — field-symbol · L84-L84 {#decl-zfir0100t01-84--gt_field-} + +```abap +FIELD-SYMBOLS: + TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L86-L86 {#decl-zfir0100t01-86--fs_grid-} + +```abap +FIELD-SYMBOLS: TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### — field-symbol · L87-L87 {#decl-zfir0100t01-87--fs_table-} + +```abap +FIELD-SYMBOLS: + TYPE TABLE. +``` + +### `ZFIR0100TOP` (20건) + +#### ZDTV3T_AP_EXT — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_ext} + +```abap +TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. +``` + +#### ZDTV3T_AP_EXT_D — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_ext_d} + +```abap +TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. +``` + +#### ZDTV3T_AP_HEAD — tables · L5-L5 {#decl-zfir0100top-5-zdtv3t_ap_head} + +```abap +TABLES: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D. +``` + +#### BKPF — tables · L6-L6 {#decl-zfir0100top-6-bkpf} + +```abap +TABLES: + BKPF, LFA1. +``` + +#### LFA1 — tables · L6-L6 {#decl-zfir0100top-6-lfa1} + +```abap +TABLES: + BKPF, LFA1. +``` + +#### ICON — type-pool · L8-L8 {#decl-zfir0100top-8-icon} + +```abap +TYPE-POOLS: SLIS, ICON. +``` + +#### SLIS — type-pool · L8-L8 {#decl-zfir0100top-8-slis} + +```abap +TYPE-POOLS: SLIS, ICON. +``` + +#### IT_ZDTV3T_AP_HEAD — data · L11-L18 {#decl-zfir0100top-11-it_zdtv3t_ap_head} + +```abap +DATA: BEGIN OF IT_ZDTV3T_AP_HEAD OCCURS 0. + INCLUDE STRUCTURE ZDTV3T_AP_HEAD. + +DATA: BELNR LIKE ZDTV3T_AP_EXT_D-BELNR. +DATA: ZGJAH LIKE ZDTV3T_AP_EXT_D-ZGJAH. + +DATA: USE_DOC LIKE ZDTV3T_AP_EXT-USE_DOC. +DATA END OF IT_ZDTV3T_AP_HEAD. +``` + +#### GT_MAIN — data · L21-L31 {#decl-zfir0100top-21-gt_main} + +```abap +DATA: BEGIN OF GT_MAIN OCCURS 0, + MARK LIKE ICON-STATUS, + ZICON(4). + INCLUDE STRUCTURE ZDTV3T_AP_HEAD. + +DATA: BELNR LIKE BKPF-BELNR, + ZGJAH LIKE BKPF-GJAHR. + +DATA: CELLTAB TYPE LVC_T_STYL, + SCOL TYPE LVC_T_SCOL, + END OF GT_MAIN. +``` + +#### GT_IMSI — data · L35-L35 {#decl-zfir0100top-35-gt_imsi} + +```abap +DATA: GT_IMSI LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### P_ANSWER — data · L37-L37 {#decl-zfir0100top-37-p_answer} + +```abap +DATA: P_ANSWER. +``` + +#### G_OK — data · L38-L38 {#decl-zfir0100top-38-g_ok} + +```abap +DATA: G_OK. +``` + +#### G_LINE — data · L39-L39 {#decl-zfir0100top-39-g_line} + +```abap +DATA: G_LINE. +``` + +#### TMP_MAIN — data · L41-L41 {#decl-zfir0100top-41-tmp_main} + +```abap +DATA: TMP_MAIN LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### GT_TABLE — data · L43-L43 {#decl-zfir0100top-43-gt_table} + +```abap +DATA: GT_TABLE LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### GT_ANY — data · L45-L45 {#decl-zfir0100top-45-gt_any} + +```abap +DATA GT_ANY TYPE REF TO DATA. +``` + +#### I_TABNAM — data · L46-L46 {#decl-zfir0100top-46-i_tabnam} + +```abap +DATA I_TABNAM TYPE TABNAME16. +``` + +#### S_BUDAT — ranges · L48-L48 {#decl-zfir0100top-48-s_budat} + +```abap +RANGES: S_BUDAT FOR BKPF-BUDAT. +``` + +#### — field-symbol · L51-L51 {#decl-zfir0100top-51--fs_s-} + +```abap +FIELD-SYMBOLS: TYPE ANY. +``` + +#### — field-symbol · L52-L52 {#decl-zfir0100top-52--fs_t-} + +```abap +FIELD-SYMBOLS: + TYPE ANY TABLE. +``` + +### `ZFIR0100F01` (18건) + +#### L_DOC1 — data · unit 로컬 · L96-L96 {#decl-zfir0100f01-96-l_doc1} + +```abap + DATA: L_DOC1, L_DOC2. +``` + +#### L_DOC2 — data · unit 로컬 · L96-L96 {#decl-zfir0100f01-96-l_doc2} + +```abap + DATA: L_DOC1, L_DOC2. +``` + +#### L_DEFAULTOPTION — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_defaultoption} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +#### L_TEXTLINE2 — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_textline2} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +#### L_TEXTLINE1 — data · unit 로컬 · L267-L267 {#decl-zfir0100f01-267-l_textline1} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +#### LT_SCOL — data · unit 로컬 · L338-L338 {#decl-zfir0100f01-338-lt_scol} + +```abap +DATA: + LT_SCOL TYPE LVC_T_SCOL. +``` + +#### LT_ROWS — data · unit 로컬 · L348-L348 {#decl-zfir0100f01-348-lt_rows} + +```abap + DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 +``` + +#### LS_ROWS — data · unit 로컬 · L349-L349 {#decl-zfir0100f01-349-ls_rows} + +```abap +DATA: + LS_ROWS TYPE LVC_S_ROW. +``` + +#### LT_SCOL — data · unit 로컬 · L407-L407 {#decl-zfir0100f01-407-lt_scol} + +```abap +DATA: + LT_SCOL TYPE LVC_T_SCOL. +``` + +#### L_USE_DOC — data · unit 로컬 · L414-L414 {#decl-zfir0100f01-414-l_use_doc} + +```abap + DATA: L_USE_DOC. +``` + +#### LT_ROWS — data · unit 로컬 · L421-L421 {#decl-zfir0100f01-421-lt_rows} + +```abap + DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 +``` + +#### LS_ROWS — data · unit 로컬 · L422-L422 {#decl-zfir0100f01-422-ls_rows} + +```abap +DATA: + LS_ROWS TYPE LVC_S_ROW. +``` + +#### LS_MAIN — data · unit 로컬 · L498-L498 {#decl-zfir0100f01-498-ls_main} + +```abap + DATA: LS_MAIN LIKE GT_MAIN. +``` + +#### LT_CELLTAB — data · unit 로컬 · L499-L499 {#decl-zfir0100f01-499-lt_celltab} + +```abap + DATA: LT_CELLTAB TYPE LVC_T_STYL. +``` + +#### LV_UCOMM — data · unit 로컬 · L500-L500 {#decl-zfir0100f01-500-lv_ucomm} + +```abap + DATA: LV_UCOMM TYPE SY-UCOMM. +``` + +#### LV_TABIX — data · unit 로컬 · L503-L503 {#decl-zfir0100f01-503-lv_tabix} + +```abap + DATA: LV_TABIX TYPE SY-TABIX. +``` + +#### LT_ROWS — data · unit 로컬 · L518-L518 {#decl-zfir0100f01-518-lt_rows} + +```abap + DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 +``` + +#### LS_ROWS — data · unit 로컬 · L519-L519 {#decl-zfir0100f01-519-ls_rows} + +```abap +DATA: + LS_ROWS TYPE LVC_S_ROW. +``` + +### `ZFIR0100F02` (5건) + +#### LS_CELLTAB — data · unit 로컬 · L92-L92 {#decl-zfir0100f02-92-ls_celltab} + +```abap + DATA: LS_CELLTAB TYPE LVC_S_STYL. +``` + +#### LV_MODE — data · unit 로컬 · L93-L93 {#decl-zfir0100f02-93-lv_mode} + +```abap +DATA: + LV_MODE TYPE RAW4. +``` + +#### LS_MOD_CELLS — data · unit 로컬 · L965-L965 {#decl-zfir0100f02-965-ls_mod_cells} + +```abap + DATA: LS_MOD_CELLS TYPE LVC_S_MODI. +``` + +#### LV_LINE — data · unit 로컬 · L968-L968 {#decl-zfir0100f02-968-lv_line} + +```abap + DATA: LV_LINE TYPE I. +``` + +#### — field-symbol · unit 로컬 · L970-L970 {#decl-zfir0100f02-970--fs_field-} + +```abap + FIELD-SYMBOLS: TYPE ANY. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZFIR0100 L37-43 | 0 | INITIALIZATION 에서 SET_INIT 를 호출하는 이벤트 블록이다. | +| AT SELECTION-SCREEN | EVENT | ZFIR0100 L44-49 | 0 | 선택화면 이벤트에서 GET_VARIANT(빈 FORM)를 호출하는 이벤트 블록이다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZFIR0100 L50-58 | 0 | 조회 연월 P_SPMON 의 F4 검색도움을 공용 풀 ZTR_POOL 의 GET_PERIOD_SPMON 으로 제공하는 이벤트 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0100 L59-69 | 0 | SET_DATA 로 전자세금계산서를 조회하고 MODIFY_PROCESS 로 그리드 데이터를 구성하는 메인 이벤트 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0100 L70-73 | 0 | 선택 종료 후 편집 ALV 화면 0100 을 호출하는 이벤트 블록이다. | +| LCL_EVENT_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0100C01 L64-66 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0100C01 L70-80 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_ON_TOOLBAR | METHOD | ZFIR0100C01 L84-88 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0100C01 L92-94 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0100C01 L98-102 | 0 | | +| SET_INIT | FORM | ZFIR0100F01 L13-24 | 0 | 리포트 ID 와 초기 모드(DISP)를 설정하고 GET_INIT_VARIANT 로 기본 변형을 불러오는 초기화 FORM 이다. | +| SET_INIT_VARIANT | FORM | ZFIR0100F01 L35-44 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트명·사용자·핸들 '0010' 을 설정하는 플러밍 FORM 이다. | +| GET_INIT_VARIANT | FORM | ZFIR0100F01 L55-74 | 1 | 변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다. | +| GET_VARIANT | FORM | ZFIR0100F01 L79-81 | 0 | 선언만 되어 있고 본문이 비어 있는 FORM 이다. | +| SET_DATA | FORM | ZFIR0100F01 L92-166 | 2 | 조회 월의 기간을 만든 뒤 전자세금계산서 헤더(ZDTV3T_AP_HEAD)·확장(ZDTV3T_AP_EXT)·상세(ZDTV3T_AP_EXT_D)를 조인해 전표처리 상태 조건으로 수신 내역을 IT_ZDTV3T_AP_HEAD 에 읽는 FORM 이다. | +| RUN_MSG_PROC | FORM | ZFIR0100F01 L176-183 | 0 | SAPGUI_PROGRESS_INDICATOR 로 처리 중 메시지를 표시하는 진행 표시 유틸 FORM 이다. | +| SET_POP_MESSAGE | FORM | ZFIR0100F01 L194-216 | 1 | POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다. | +| SET_LOCK | FORM | ZFIR0100F01 L226-228 | 0 | 잠금/해제 처리를 위한 자리만 있고 본문이 비어 있는 FORM 이다. | +| SELECT_PROCESS | FORM | ZFIR0100F01 L232-236 | 0 | 선언만 되어 있고 본문이 비어 있는 FORM 이다. | +| MODIFY_PROCESS | FORM | ZFIR0100F01 L240-261 | 1 | 조회된 IT_ZDTV3T_AP_HEAD 를 GT_MAIN 그리드 테이블로 옮기며 전표번호 유무에 따라 처리 상태 아이콘(ZICON)을 설정하는 FORM 이다. | +| POPUP_TO_CONFIRM | FORM | ZFIR0100F01 L265-296 | 1 | 저장/전표기표 명령에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄워 사용자 응답을 받는 FORM 이다. | +| TEXT_PROCESS | FORM | ZFIR0100F01 L300-307 | 0 | 거래처 텍스트 보정용으로 예정되었으나 주석 처리되어 본문이 비어 있는 FORM 이다. | +| DATE_PROCESS | FORM | ZFIR0100F01 L311-330 | 1 | 조회 연월(P_SPMON)로 월초~월말 날짜 범위 S_BUDAT 를 LAST_DAY_OF_MONTHS 로 구성하는 FORM 이다. | +| SET_POST | FORM | ZFIR0100F01 L335-397 | 2 | ALV 에서 선택된 미처리 전자세금계산서 행을 GT_TABLE 로 메모리에 EXPORT 한 뒤 전표 입력 화면 ZFIR0110_DOC 을 호출해 매입전표를 기표하는 FORM 이다. | +| SET_SAVE | FORM | ZFIR0100F01 L404-492 | 2 | ALV 에서 선택한 전자세금계산서 행의 전표번호를 수신 테이블에 저장하고 사용여부·상태 아이콘을 갱신한다. | +| CHANG_LINE | FORM | ZFIR0100F01 L496-573 | 2 | ALV 에서 선택된 행만 변경 가능하도록 전체 행의 CELLTAB 을 초기화한 뒤 선택 행에 전표번호(BELNR)·회계연도(ZGJAH) 셀만 편집 가능한 스타일을 적용하는 FORM 이다. | +| SET_ITAB_STYLE | FORM | ZFIR0100F02 L13-45 | 0 | GT_MAIN 전체 행을 돌며 SET_CELLTAB 으로 셀 편집 스타일(CELLTAB)을 만들어 각 행에 반영하는 ALV 셀 속성 설정 FORM 이다. | +| SET_LINE_ITAB_STYLE | FORM | ZFIR0100F02 L51-74 | 0 | 단일 행의 CELLTAB 스타일 설정을 위해 작업변수만 준비하고 실제 로직은 없는 미완성 FORM 이다. | +| SET_CELLTAB | FORM | ZFIR0100F02 L88-124 | 1 | 변경(CHAN) 모드에서 필드카탈로그 전 컬럼을 입력 불가로 두되 전표번호(BELNR)·회계연도(ZGJAH) 셀만 입력 가능하게 CELLTAB 스타일을 만드는 FORM 이다. | +| SET_CELLTAB_INSERT | FORM | ZFIR0100F02 L131-153 | 0 | 필드카탈로그의 모든 컬럼을 입력 불가(MC_STYLE_DISABLED) 스타일로 CELLTAB 에 넣어 해당 행의 셀 편집을 막는 ALV 셀 속성 FORM 이다. | +| SET_CONTAINER | FORM | ZFIR0100F02 L163-175 | 0 | 프레임·툴바제외·레이아웃·필드카탈로그·이벤트·ALV 표시 FORM 을 순서대로 호출해 화면 컨테이너를 구성하는 디스패치 FORM 이다. | +| SET_FRAME | FORM | ZFIR0100F02 L186-196 | 0 | 커스텀 컨테이너 CON_0100 과 ALV 그리드 객체(GO_GRID)를 생성하는 플러밍 FORM 이다. | +| SET_VARIANT | FORM | ZFIR0100F02 L206-215 | 0 | ALV 변형(Variant) 구조 GS_VARIANT 에 리포트명·사용자·핸들을 초기 설정하는 플러밍 FORM 이다. | +| SET_TOOLBAR_EXCLUDE | FORM | ZFIR0100F02 L226-389 | 0 | 편집 ALV 툴바에서 행 삽입·삭제·복사·붙여넣기·UNDO·REFRESH 버튼을 제외 목록(GT_EXCLUDE)에 넣는 ALV 설정 FORM 이다. | +| SET_LAYOUT | FORM | ZFIR0100F02 L399-416 | 0 | ALV 레이아웃(열너비 최적화, 선택모드, CELLTAB 스타일 필드, SCOL 색상 필드)을 설정하는 플러밍 FORM 이다. | +| SET_FIELDCATALOG | FORM | ZFIR0100F02 L426-439 | 0 | 화면번호에 따라 필드카탈로그 작업영역(GS_FCAT/GT_FCAT1)을 필드심볼에 할당하고 SET_FIELD01 을 호출하는 플러밍 FORM 이다. | +| SET_FIELD01 | FORM | ZFIR0100F02 L450-656 | 0 | 화면 0100 편집 그리드의 필드카탈로그(작성일자·사업장·공급가액·세액·공급자 정보·전표번호 등)를 SET_FIELD 로 정의하는 ALV 설정 FORM 이다. | +| SET_FIELD | FORM | ZFIR0100F02 L668-693 | 0 | 필드카탈로그 속성을 동적 ASSIGN 으로 채워 S/E 타입에 따라 초기화·APPEND 하는 필드카탈로그 빌더 유틸 FORM 이다. | +| RUN_DISPLAY_ALV | FORM | ZFIR0100F02 L703-725 | 1 | 화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다. | +| SET_EVENT_UCOMM | FORM | ZFIR0100F02 L736-768 | 0 | 그리드를 초기 비편집 상태로 두고 MODIFIED/ENTER 편집 이벤트를 등록한 뒤 CHECK_CHANGED_DATA 와 포커스 설정을 하는 ALV 편집 이벤트 준비 FORM 이다. | +| SET_EVENT | FORM | ZFIR0100F02 L778-790 | 0 | ALV 그리드 이벤트 핸들러 객체(GO_EVENT)를 생성하고 F4·데이터변경·사용자명령·툴바·더블클릭 핸들러를 등록하는 플러밍 FORM 이다. | +| SET_REFRESH | FORM | ZFIR0100F02 L801-824 | 0 | 레이아웃을 재적용하고 REFRESH_TABLE_DISPLAY(행·열 안정)와 CL_GUI_CFW=>FLUSH 로 ALV 그리드를 새로고침하는 플러밍 FORM 이다. | +| TOOLBAR | FORM | ZFIR0100F02 L836-864 | 0 | ALV 툴바 버튼 추가용 핸들러이나 모든 내용이 주석 처리되어 실제 로직이 없는 FORM 이다. | +| USER_COMMAND | FORM | ZFIR0100F02 L874-901 | 1 | ALV 툴바 사용자 명령(REFRESH/SAVE/POST)을 받아 재조회·확인 후 저장·전표기표 FORM 으로 분기하는 디스패치 FORM 이다. | +| SET_CHANGE | FORM | ZFIR0100F02 L912-953 | 2 | 변경(CHAN) 명령 시 선택 행 상태에 따라 그리드 편집 가능 여부를 토글하고 잠금(SET_LOCK)을 설정하는 FORM 이다. | +| DATA_CHANGED | FORM | ZFIR0100F02 L962-1040 | 2 | 편집 ALV 의 DATA_CHANGED 이벤트에서 변경된 셀 값을 GT_MAIN 에 반영하고 변경 플래그를 세우며 오류 시 프로토콜에 기록한 뒤 그리드를 새로고침하는 FORM 이다. | +| CHK_DATS | FORM | ZFIR0100F02 L1046-1052 | 0 | 날짜 필드 검증용으로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | +| ADD_PROTOCAL_ENTRY | FORM | ZFIR0100F02 L1064-1084 | 1 | 편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다. | +| HANDLE_DOUBLE_CLICK | FORM | ZFIR0100F02 L1096-1113 | 1 | ALV 전표번호(BELNR) 셀 더블클릭 시 회사코드·회계연도·전표번호를 파라미터로 세팅해 FB03 전표 조회 트랜잭션을 호출하는 FORM 이다. | +| CHK_DATA | FORM | ZFIR0100F02 L1124-1125 | 0 | 데이터 검증용으로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | +| GET_COLOR | FORM | ZFIR0100F02 L1137-1152 | 0 | ALV 행의 DEVNUM 컬럼에 셀 색상(LVC_S_SCOL)을 지정하는 표시용 FORM 이다. | +| ON_F4 | FORM | ZFIR0100F02 L1157-1168 | 0 | ALV F4 이벤트 핸들러로 선언만 되어 있고 본문이 비어 있는 FORM 이다. | +| F4_FIELD_ENTRY_PART | FORM | ZFIR0100F02 L1177-1188 | 0 | ALV 그리드 필드에 F4 검색도움을 등록하는(REGISTER_F4_FOR_FIELDS) 플러밍 FORM 이다. | +| USER_COMMAND_0100_EXIT INPUT | MODULE | ZFIR0100I01 L7-37 | 2 | 화면 0100 종료 명령 처리 시 미저장 변경분 확인 팝업을 띄우고 잠금을 해제한 뒤 화면을 빠져나가는 EXIT 모듈이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0100I01 L45-89 | 1 | 화면 0100 의 사용자 명령(변경·재조회·저장·전기)을 받아 해당 처리 FORM 으로 분기하는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0100O01 L10-29 | 0 | | +| SET_SCREEN_0100 OUTPUT | MODULE | ZFIR0100O01 L37-41 | 0 | | +| SET_GRID_0100 OUTPUT | MODULE | ZFIR0100O01 L49-69 | 0 | | diff --git a/wiki/programs/ZFIR0110_DOC.md b/wiki/programs/ZFIR0110_DOC.md new file mode 100644 index 0000000..a4a9f6a --- /dev/null +++ b/wiki/programs/ZFIR0110_DOC.md @@ -0,0 +1,2125 @@ +--- +type: abap-program +title: "ZFIR0110_DOC" +description: "전자세금계산서 기반 매입 전표를 실제로 입력·전기하는 다이얼로그 화면이다. ZFIR0100 에서 호출되며, 계정·지급조건·사업장·전기키 등에 F4 도움말을 제공하고 입력값을 검증한 뒤 전표 헤더(SET_BKPF)와 아이템(SET_BSEG, 228줄)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전기한다. 화면 모듈 USER_COMMAND_0100(305줄)이 사용자 액션 전체를 처리한다." +resource: "abap://ZFIR0110_DOC" +tags: ["전자세금계산서", "전표", "매입", "부가세", "채무관리", "FI", "불공제", "비공제매입세액", "세금코드", "조건유형", "세금라인삭제", "영세", "과세", "세금코드검증", "세율", "세액정합성", "입력검증", "세금계산서", "사업장", "F4 값 목록"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["A003", "J_1BBRANCH", "KONP", "LFA1", "LFB1", "SKAT", "T001", "T007A", "T020", "T052", "TGSBT", "THKON", "ZDTV3T_AP_EXT", "ZDTV3T_AP_HEAD"] +x-tables-write: ["ZDTV3T_AP_EXT", "ZDTV3T_AP_EXT_D"] +x-calls: ["CONVERSION_EXIT_ALPHA_INPUT", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "FI_F4_ZTERM", "FI_FIND_PAYMENT_CONDITIONS", "HELP_VALUES_GET_NO_DD_NAME", "HELP_VALUES_GET_WITH_TABLE", "OXT_MESSAGE_TO_POPUP", "READ_HAUPTBUCH_TEXT", "RF_CPD_DATEN_BEARBEITEN", "VRM_SET_VALUES", "ZFIR0130", "Z_FI_DOCUMENT_POSTING"] +x-code-hash: "7012097f655a81b26e43a57b0c39c2474ffca1f88890e0ed117cef34fcce5324" +x-unit-count: 42 +x-chunk-count: 41 +x-declaration-count: 41 +--- + +## 업무 목적 + +전자세금계산서 기반 매입 전표를 실제로 입력·전기하는 다이얼로그 화면이다. ZFIR0100 에서 호출되며, 계정·지급조건·사업장·전기키 등에 F4 도움말을 제공하고 입력값을 검증한 뒤 전표 헤더(SET_BKPF)와 아이템(SET_BSEG, 228줄)을 구성해 Z_FI_DOCUMENT_POSTING 으로 전기한다. 화면 모듈 USER_COMMAND_0100(305줄)이 사용자 액션 전체를 처리한다. + +## 주 흐름 + +1. 호출 파라미터로 대상 세금계산서 데이터를 세팅한다 (SET_DATA) +2. 화면 0100 을 열고 초기 데이터를 채운다 (INIT_DATA) +3. 계정·지급조건·사업장·전기키·은행유형에 F4 도움말을 제공한다 (SET_F4_HKONT / SET_F4_ZTERM / SET_F4_BUPLA / SET_F4_BSCHL / SET_F4_BVTYP) +4. 입력값을 검증하고 계정·거래처 텍스트를 채운다 (INPUT_CHECK / GET_HKONT_TEXT / SET_NAME / SET_ZTERM) +5. 금액을 합산하고 지급기준일을 설정한다 (SUM_AMT / SET_ZFBDT) +6. 사용자 액션(저장/전기/취소)을 처리한다 (USER_COMMAND_0100) +7. 전표 헤더·아이템을 구성해 전기한다 (CHECK_DATA → SET_BKPF → SET_BSEG → POST → Z_FI_DOCUMENT_POSTING) + +## 핵심 내부테이블 + +- `GT_ITEM` — 입력 중인 전표 아이템 (채움: INIT_DATA, SET_BSEG / 소비: POST) + +## 테이블 / 외부 호출 + +- read: A003, J_1BBRANCH, KONP, LFA1, LFB1, SKAT, T001, T007A, T020, T052, TGSBT, THKON, ZDTV3T_AP_EXT, ZDTV3T_AP_HEAD +- write: ZDTV3T_AP_EXT, ZDTV3T_AP_EXT_D +- 외부 호출: CONVERSION_EXIT_ALPHA_INPUT, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, FI_F4_ZTERM, FI_FIND_PAYMENT_CONDITIONS, HELP_VALUES_GET_NO_DD_NAME, HELP_VALUES_GET_WITH_TABLE, OXT_MESSAGE_TO_POPUP, READ_HAUPTBUCH_TEXT, RF_CPD_DATEN_BEARBEITEN, VRM_SET_VALUES, ZFIR0130, Z_FI_DOCUMENT_POSTING + +## 로직 조각 (41건 / unit 20개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM SET_DATA — `ZFIR0110_DOC_F01` L7-L17 (11줄) + +*호출 프로그램이 ABAP 메모리(ID 'GT_TABLE')에 넘긴 전표 데이터를 IMPORT 하고 비어 있으면 화면을 종료하는 초기화 루틴이다.* + +> 이 unit 의 조각 1개가 6/11줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 메모리 ID 'GT_TABLE' 에서 호출 프로그램이 넘긴 전표 항목 테이블을 IMPORT 하고 첫 행이 없으면 LEAVE TO SCREEN 0 으로 화면을 닫는다. + +```abap + 10| IMPORT GT_TABLE FROM MEMORY ID 'GT_TABLE'. + 11| + 12| READ TABLE GT_TABLE INDEX 1. + 13| IF SY-SUBRC <> 0. + 14| LEAVE TO SCREEN 0. + 15| ENDIF. +``` + +- **EN**: Import the document table passed by the caller via ABAP memory ID 'GT_TABLE' and leave the screen when it is empty. +- SAP 객체: GT_TABLE +- 업무 키워드: 메모리 IMPORT, 프로그램 간 데이터 전달, 전표 데이터, 화면 종료 +- English: ABAP Memory, IMPORT, Data Handover +- 정의부(복사 시 함께 필요): [`ZDTV3T_AP_HEAD`](#decl-zfir0110_doc-24-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0110_doc-35-gt_main), [`GT_TABLE`](#decl-zfir0110_doc-45-gt_table) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L10-L15` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#FORM#SET_DATA#C1` + +### MODULE INIT_DATA OUTPUT — `ZFIR0110_DOC` L164-L237 (74줄) + +*화면 최초 표시 시 회사코드·세금계산서 번호를 검증하고 T001 과 세금계산서(ZDTV3T_AP_HEAD/EXT)를 읽어 화면 초기 데이터를 세팅하는 PBO 모듈이다.* + +> 이 unit 의 조각 2개가 44/74줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 호출 데이터에서 회사코드·세금계산서 번호를 받아 누락 시 메시지 후 화면을 닫고, T001 에서 회사코드 정보(계정표 등)를 읽어 존재를 확인한다. + +```abap + 177| G_BUKRS = GT_TABLE-BUKRS. + 178| G_INV_SEQ = GT_TABLE-INV_SEQ. + 179| ** + 180| + 181| + 182| IF G_BUKRS IS INITIAL. + 183| MESSAGE I000 WITH '회사코드 누락!!!'. + 184| LEAVE TO SCREEN 0. + 185| ENDIF. + 186| * + 187| IF G_INV_SEQ IS INITIAL. + 188| MESSAGE I000 WITH '세금계산서 번호 누락!!!'. + 189| LEAVE TO SCREEN 0. + 190| ENDIF. + 191| + 192| + 193| + 194| * 회사정보 + 195| SELECT SINGLE * + 196| FROM T001 + 197| WHERE BUKRS EQ G_BUKRS. + 198| IF SY-SUBRC NE 0. + 199| MESSAGE I000 WITH '회사코드 누락!!!'. + 200| LEAVE TO SCREEN 0. + 201| SET PARAMETER ID 'KPL' FIELD T001-KTOPL. + 202| ENDIF. +``` + +- **EN**: Takes company code and invoice sequence from the caller data, exits with a message when missing, and validates the company code by reading T001. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 회사코드 검증, 세금계산서 번호, 회사 정보, 계정표 +- English: Company Code, T001, Chart of Accounts, Validation +- 정의부(복사 시 함께 필요): [`G_BUKRS`](#decl-zfir0110_doc-80-g_bukrs), [`ZDTV3T_AP_HEAD`](#decl-zfir0110_doc-24-zdtv3t_ap_head), [`GT_MAIN`](#decl-zfir0110_doc-35-gt_main), [`GT_TABLE`](#decl-zfir0110_doc-45-gt_table), [`G_INV_SEQ`](#decl-zfir0110_doc-83-g_inv_seq), [`T001`](#decl-zfir0110_doc-22-t001), [`FIELD`](#decl-zfir0110_doc-101-field) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L177-L202` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#INIT_DATA_OUTPUT#C1` + +#### [sql_select] ZDTV3T_AP_HEAD 와 ZDTV3T_AP_EXT 를 회사코드·발행일·사업장·순번으로 조인해 해당 전자세금계산서 헤더 정보를 IS_INVOICE 로 읽고 없으면 메시지 후 화면을 닫는다. + +```abap + 208| CLEAR : IS_INVOICE. + 209| SELECT SINGLE * + 210| INTO CORRESPONDING FIELDS OF IS_INVOICE + 211| FROM ZDTV3T_AP_HEAD AS A INNER JOIN ZDTV3T_AP_EXT AS B + 212| ON A~BUKRS = B~BUKRS + 213| AND A~ISSUE_DATE = B~ISSUE_DATE + 214| AND A~BUPLA = B~BUPLA + 215| AND A~INV_SEQ = B~INV_SEQ + 216| + 217| + 218| WHERE A~BUKRS EQ G_BUKRS + 219| AND A~INV_SEQ EQ G_INV_SEQ. + 220| * AND B~USE_DOC EQ SPACE. + 221| + 222| IF SY-SUBRC NE 0. + 223| MESSAGE I000 WITH '회사' G_BUKRS G_INV_SEQ '가 존재하지 않습니다.'. + 224| LEAVE TO SCREEN 0. + 225| ENDIF. +``` + +- **EN**: Reads the electronic tax invoice header into IS_INVOICE by joining ZDTV3T_AP_HEAD and ZDTV3T_AP_EXT on company code, issue date, business place and sequence, exiting with a message when not found. +- 테이블(파서): read [ZDTV3T_AP_HEAD](/tables/ZDTV3T_AP_HEAD.md), [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md) / write - +- SAP 객체: ZDTV3T_AP_HEAD, ZDTV3T_AP_EXT +- 업무 키워드: 전자세금계산서, 매입 세금계산서, 세금계산서 조회, 사업장 +- English: Electronic Tax Invoice, AP Invoice, Inner Join +- 정의부(복사 시 함께 필요): [`IS_INVOICE`](#decl-zfir0110_doc-63-is_invoice), [`ZDTV3T_AP_HEAD`](#decl-zfir0110_doc-24-zdtv3t_ap_head), [`G_BUKRS`](#decl-zfir0110_doc-80-g_bukrs), [`G_INV_SEQ`](#decl-zfir0110_doc-83-g_inv_seq) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L208-L225` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#INIT_DATA_OUTPUT#C2` + +### MODULE GET_TEXT INPUT — `ZFIR0110_DOC` L252-L270 (19줄) + +*구매처 입력 시 LFB1 에서 조정계정·지급조건을, LFA1 에서 구매처명을 조회해 화면에 채우는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 14/19줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 구매처(LIFNR)가 입력되면 LFB1(회사코드 뷰)에서 조정계정 AKONT 와 지급조건 ZTERM 을 읽어 없으면 '존재하지 않는 거래처' 오류를 내고, LFA1 에서 구매처명 NAME1 을 가져온다. + +```abap + 254| IF NOT ZDTV3S_DOC_LIFNR-LIFNR IS INITIAL. + 255| SELECT SINGLE AKONT ZTERM + 256| INTO (ZDTV3S_DOC_LIFNR-HKONT,ZDTV3S_DOC_LIFNR-ZTERM) + 257| FROM LFB1 + 258| WHERE LIFNR EQ ZDTV3S_DOC_LIFNR-LIFNR + 259| AND BUKRS EQ ZDTV3S_DOC_HEAD-BUKRS. + 260| IF SY-SUBRC NE 0. + 261| MESSAGE E000 WITH '존재하지 않는 거래처입니다.'. + 262| ENDIF. + 263| * + 264| SELECT SINGLE NAME1 INTO ZDTV3S_DOC_LIFNR-NAME1 + 265| FROM LFA1 + 266| WHERE LIFNR EQ ZDTV3S_DOC_LIFNR-LIFNR. + 267| ENDIF. +``` + +- **EN**: When a vendor is entered reads reconciliation account AKONT and payment terms ZTERM from LFB1 (company code view), raising an error if missing, then reads the vendor name from LFA1. +- 테이블(파서): read [LFB1](/tables/LFB1.md), [LFA1](/tables/LFA1.md) / write - +- SAP 객체: LFB1, LFA1 +- 업무 키워드: 구매처 검증, 조정계정, 지급조건, 구매처명 +- English: Vendor Master, Reconciliation Account, Payment Terms, LFB1, LFA1 +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L254-L267` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_TEXT_INPUT#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0110_DOC` L274-L578 (305줄) + +*화면 0100 의 기능코드(점검·붙여넣기·엔터·1회성/직원 거래처·행 추가/삭제·시뮬레이션·저장)를 처리하는 메인 PAI 모듈이다.* + +> 이 unit 의 조각 8개가 181/305줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 붙여넣기(PASTE) 시 체크된 행(BOX=X)을 GT_IMSI 에 복사해 계정이 비어 있는 첫 행 위치에 넣어 아이템 행을 복제한다. + +```abap + 288| READ TABLE GT_ITEM WITH KEY BOX = 'X'. + 289| IF SY-SUBRC NE 0. + 290| MESSAGE I000 WITH '복사 할 라인을 선택하세요.'. + 291| EXIT. + 292| ENDIF. + 293| + 294| + 295| CLEAR: GT_IMSI[], GT_IMSI. + 296| MOVE-CORRESPONDING GT_ITEM TO GT_IMSI. + 297| APPEND GT_IMSI. + 298| + 299| READ TABLE GT_ITEM WITH KEY HKONT = SPACE. + 300| IF SY-SUBRC = 0. + 301| L_TABIX = SY-TABIX. + 302| ENDIF. + 303| + 304| MOVE-CORRESPONDING GT_IMSI TO GT_ITEM. + 305| CLEAR: GT_ITEM-BOX. + 306| MODIFY GT_ITEM INDEX L_TABIX. + 307| CLEAR GT_ITEM. +``` + +- **EN**: On PASTE copies the checked item row into GT_IMSI and writes it over the first row with an empty G/L account, duplicating the line. +- 업무 키워드: 행 복사, 붙여넣기, 전표 항목, 테이블컨트롤 +- English: Copy Line, Table Control, Item +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`GT_IMSI`](#decl-zfir0110_doc-55-gt_imsi) +- 선언을 못 찾은 이름: L_TABIX (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L288-L307` · confidence 0.8 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C1` + +#### [validation] 엔터 시 입력한 세금코드가 T007A(세금절차 TAXKR, 매입 유형 V)에 존재하는 매입세금코드인지 검증하고 아니면 메시지 후 중단한다. + +```abap + 392| SELECT SINGLE MANDT INTO SY-MANDT + 393| FROM T007A + 394| WHERE KALSM EQ 'TAXKR' + 395| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ + 396| AND MWART EQ 'V'. + 397| IF SY-SUBRC NE 0. + 398| MESSAGE I000 WITH '세금코드' ZDTV3S_DOC_LIFNR-MWSKZ + 399| '는 매입세금코드가 아닙니다.'. + 400| EXIT. + 401| ENDIF. +``` + +- **EN**: On ENTER validates that the entered tax code exists in T007A for procedure TAXKR as an input tax code (MWART = V), stopping with a message otherwise. +- 테이블(파서): read [T007A](/tables/T007A.md) / write - +- SAP 객체: T007A +- 업무 키워드: 매입세금코드, 세금코드 검증, 세금계산절차 +- English: Input Tax Code, T007A, Tax Procedure TAXKR +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L392-L401` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C2` + +#### [validation] A003(세금 조건 KR) 에서 세금코드의 조건유형이 KRIT(불공제)면 G_NVV 를 세우고, 아니면 G_NVV 를 지우고 세액이 있으면서 세금계정 행이 없을 때 세금 아이템(GS_ITEM_NVV)을 첫 행에 삽입한다. + +```abap + 403| SELECT SINGLE * + 404| FROM A003 + 405| WHERE KAPPL EQ 'TX' + 406| AND ALAND EQ 'KR' + 407| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ. + 408| IF SY-SUBRC EQ 0 AND A003-KSCHL EQ 'KRIT'. + 409| G_NVV = 'X'. + 410| READ TABLE GT_ITEM INTO TMP_ITEM + 411| WITH KEY HKONT = G_HKONT. + 412| IF SY-SUBRC EQ 0. + 413| ** 김재환 + 414| * DELETE GT_ITEM INDEX 1. + 415| + 416| ENDIF. + 417| ELSE. + 418| * + 419| G_NVV = SPACE. + 420| READ TABLE GT_ITEM INTO TMP_ITEM + 421| WITH KEY HKONT = G_HKONT. + 422| IF SY-SUBRC NE 0 AND IS_INVOICE-TAXTOTAL > 0 . + 423| INSERT GS_ITEM_NVV INTO GT_ITEM INDEX 1. + 424| ENDIF. + 425| ENDIF. +``` + +- **EN**: Reads A003 for the tax code: if condition type KRIT (non-deductible) sets G_NVV, otherwise clears it and inserts the tax line GS_ITEM_NVV at index 1 when the invoice has tax and no tax account line exists. +- 테이블(파서): read [A003](/tables/A003.md) / write - +- SAP 객체: A003, KONP +- 업무 키워드: 불공제 세금, 세금 조건, 세금 라인 추가, 조건유형 KRIT +- English: Non-deductible Tax, Condition Record A003, Tax Line +- 정의부(복사 시 함께 필요): [`A003`](#decl-zfir0110_doc-28-a003), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`G_NVV`](#decl-zfir0110_doc-86-g_nvv), [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`TMP_ITEM`](#decl-zfir0110_doc-57-tmp_item), [`G_HKONT`](#decl-zfir0110_doc-88-g_hkont), [`IS_INVOICE`](#decl-zfir0110_doc-63-is_invoice), [`GS_ITEM_NVV`](#decl-zfir0110_doc-58-gs_item_nvv) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L403-L425` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C3` + +#### [validation] KONP 에서 세율(KBETR)이 0 인 영세 세금코드인지 확인해 영세인데 세액이 있으면 '과세세금코드 선택', 과세인데 세액이 없으면 '영세세금코드 선택' 안내를 내고 테이블컨트롤 행수 재설정 후 SUM_AMT 로 합계를 다시 계산한다. + +```abap + 428| SELECT SINGLE MANDT INTO SY-MANDT + 429| FROM KONP + 430| WHERE KNUMH EQ A003-KNUMH + 431| AND KBETR EQ 0 . + 432| IF SY-SUBRC EQ 0. + 433| G_ZERO = 'X'. + 434| IF NOT IS_INVOICE-TAXTOTAL IS INITIAL . + 435| MESSAGE I000 WITH '과세세금코드를 선택하세요.'. + 436| EXIT. + 437| ENDIF. + 438| ELSE. + 439| G_ZERO = SPACE. + 440| IF IS_INVOICE-TAXTOTAL IS INITIAL. + 441| MESSAGE I000 WITH '영세세금코드를 선택하세요.'. + 442| ENDIF. + 443| ENDIF. + 444| * 현재라인 재설정. + 445| TC_100-LINES = LINES( GT_ITEM[] ). + 446| + 447| PERFORM SUM_AMT. +``` + +- **EN**: Checks KONP for a zero tax rate (G_ZERO) and warns when the zero-rate/taxable code contradicts the invoice tax total, then resets the table control lines and recalculates totals via SUM_AMT. +- 테이블(파서): read [KONP](/tables/KONP.md) / write - +- 호출(파서): SUM_AMT +- SAP 객체: KONP, A003 +- 업무 키워드: 영세율, 과세, 세율 검증, 세액 대조, 합계 재계산 +- English: Zero-rate Tax, Tax Rate, KONP, Validation +- 정의부(복사 시 함께 필요): [`A003`](#decl-zfir0110_doc-28-a003), [`G_ZERO`](#decl-zfir0110_doc-87-g_zero), [`IS_INVOICE`](#decl-zfir0110_doc-63-is_invoice), [`TC_100`](#decl-zfir0110_doc-61-tc_100), [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L428-L447` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C4` + +#### [fm_call] 1회성 거래처(XCPDK) 선택 시 RF_CPD_DATEN_BEARBEITEN 팝업으로 CPD 주소·은행 정보(BSEC)를 입력받아 화면 구조에 반영하고, 해제 시 BSEC 를 지운다. + +```abap + 454| IF ZDTV3S_DOC_LIFNR-XCPDK EQ 'X'. + 455| CALL FUNCTION 'RF_CPD_DATEN_BEARBEITEN' + 456| EXPORTING + 457| I_AKTYP = 'H' + 458| I_BKPF = BKPF + 459| I_BSEC = BSEC + 460| I_BSEG = BSEG + 461| I_KTNRA = ZDTV3S_DOC_LIFNR-LIFNR + 462| I_NAME1 = ZDTV3S_DOC_LIFNR-NAME1 + 463| I_T001 = T001 + 464| I_XCPDK = 'X' + 465| I_ASPOPUP = 'X' + 466| I_CREATE_POPUP = 'X' + 467| IMPORTING + 468| E_BSEC = BSEC + 469| E_BSEG = BSEG + 470| E_CPD_DATA_INVALID = L_CHAR. + 471| * + 472| IF L_CHAR NE 'X'. + 473| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR. + 474| ENDIF. + 475| ELSE. + 476| CLEAR : BSEC , ZDTV3S_DOC_LIFNR-XCPDK. + 477| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR. + 478| ENDIF. +``` + +- **EN**: For one-time vendors (XCPDK) opens the RF_CPD_DATEN_BEARBEITEN popup to capture CPD address/bank data into BSEC and copies it to the screen structure, clearing it when unchecked. +- 호출(파서): RF_CPD_DATEN_BEARBEITEN +- SAP 객체: RF_CPD_DATEN_BEARBEITEN, BSEC +- 업무 키워드: 1회성 거래처, CPD 데이터, 주소 입력, 은행 정보 +- English: One-Time Account, CPD, BSEC, RF_CPD_DATEN_BEARBEITEN +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`BKPF`](#decl-zfir0110_doc-25-bkpf), [`BSEC`](#decl-zfir0110_doc-26-bsec), [`BSEG`](#decl-zfir0110_doc-27-bseg), [`T001`](#decl-zfir0110_doc-22-t001), [`L_CHAR`](#decl-zfir0110_doc-275-l_char) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L454-L478` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C5` + +#### [fm_call] 직원 거래처(XZEMP) 선택 시 RF_CPD_DATEN_BEARBEITEN 팝업으로 지급 대상 정보(BSEC)를 입력받고 유효하지 않으면 플래그를 해제하며, 미선택 시 BSEC_CLEAR 로 정리한다. + +```abap + 485| IF ZDTV3S_DOC_LIFNR-XZEMP EQ 'X'. + 486| CALL FUNCTION 'RF_CPD_DATEN_BEARBEITEN' + 487| EXPORTING + 488| I_AKTYP = 'H' + 489| I_BKPF = BKPF + 490| I_BSEC = BSEC + 491| I_BSEG = BSEG + 492| I_KTNRA = ZDTV3S_DOC_LIFNR-LIFNR + 493| I_NAME1 = ZDTV3S_DOC_LIFNR-NAME1 + 494| I_T001 = T001 + 495| I_XCPDK = ' ' + 496| I_ASPOPUP = 'X' + 497| I_CREATE_POPUP = 'X' + 498| IMPORTING + 499| E_BSEC = BSEC + 500| E_BSEG = BSEG + 501| E_CPD_DATA_INVALID = L_CHAR. + 502| * + 503| IF L_CHAR NE 'X'. + 504| MOVE-CORRESPONDING BSEC TO ZDTV3S_DOC_LIFNR. + 505| ELSE. + 506| CLEAR : BSEC , ZDTV3S_DOC_LIFNR-XZEMP. + 507| ENDIF. + 508| ELSE. + 509| PERFORM BSEC_CLEAR. + 510| ENDIF. +``` + +- **EN**: For employee payee (XZEMP) opens the RF_CPD_DATEN_BEARBEITEN popup for payee data into BSEC, clears the flag when invalid, or calls BSEC_CLEAR when unchecked. +- 호출(파서): RF_CPD_DATEN_BEARBEITEN, BSEC_CLEAR +- SAP 객체: RF_CPD_DATEN_BEARBEITEN, BSEC +- 업무 키워드: 직원 거래처, 지급 대상, CPD 팝업 +- English: Employee Vendor, Payee Data, RF_CPD_DATEN_BEARBEITEN +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`BKPF`](#decl-zfir0110_doc-25-bkpf), [`BSEC`](#decl-zfir0110_doc-26-bsec), [`BSEG`](#decl-zfir0110_doc-27-bseg), [`T001`](#decl-zfir0110_doc-22-t001), [`L_CHAR`](#decl-zfir0110_doc-275-l_char) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L485-L510` · confidence 0.8 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C6` + +#### [control_flow] 행 추가(INS)는 커서 위치에 빈 행을 삽입해 GT_ITEM 을 재구성하고, 행 삭제(DEL)는 체크된 행을 DELETE 하며 각각 테이블컨트롤 행수를 재설정한다. + +```abap + 514| READ TABLE GT_ITEM WITH KEY BOX = 'X'. + 515| IF SY-SUBRC NE 0. + 516| MESSAGE I000 WITH '추가 할 라인을 선택하세요.'. + 517| EXIT. + 518| ENDIF. + 519| + 520| CLEAR : OK_CODE. + 521| GET CURSOR FIELD L_FIELD LINE L_POS. + 522| + 523| CLEAR: GT_IMSI[], GT_IMSI. + 524| + 525| LOOP AT GT_ITEM. + 526| IF SY-TABIX = L_POS. + 527| APPEND GT_IMSI. + 528| CLEAR GT_IMSI. + 529| ENDIF. + 530| + 531| MOVE-CORRESPONDING GT_ITEM TO GT_IMSI. + 532| APPEND GT_IMSI. + 533| CLEAR GT_IMSI. + 534| + 535| ENDLOOP. + 536| + 537| GT_ITEM[] = GT_IMSI[]. + 538| + 539| * 현재라인 재설정. + 540| TC_100-LINES = LINES( GT_ITEM[] ). + 541| + 542| + 543| WHEN 'DEL'. "라인삭제 + 544| * 삭제할라인 존재확인. + 545| READ TABLE GT_ITEM WITH KEY BOX = 'X'. + 546| IF SY-SUBRC NE 0. + 547| MESSAGE I000 WITH '삭제할 라인을 선택하세요.'. + 548| EXIT. + 549| ENDIF. + 550| * ITAB 삭제 + 551| DELETE GT_ITEM WHERE BOX EQ 'X'. + 552| * 현재라인 재설정. + 553| TC_100-LINES = LINES( GT_ITEM[] ). +``` + +- **EN**: INS inserts an empty line at the cursor position by rebuilding GT_ITEM; DEL deletes checked rows; both reset the table control line count. +- 업무 키워드: 행 추가, 행 삭제, 테이블컨트롤, 전표 항목 편집 +- English: Insert Line, Delete Line, Table Control +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`OK_CODE`](#decl-zfir0110_doc-84-ok_code), [`FIELD`](#decl-zfir0110_doc-101-field), [`L_FIELD`](#decl-zfir0110_doc-277-l_field), [`L_POS`](#decl-zfir0110_doc-278-l_pos), [`GT_IMSI`](#decl-zfir0110_doc-55-gt_imsi), [`TC_100`](#decl-zfir0110_doc-61-tc_100) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L514-L553` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C7` + +#### [control_flow] SIM/SIMU 는 CHECK_DATA 검증 후 POST 를 시뮬레이션 모드('+','1')로, SAVE 는 실제 전기 모드(' ')로 호출한다. + +```abap + 556| WHEN 'SIM'. + 557| * 입력자료 점검. + 558| PERFORM CHECK_DATA. + 559| * 전표 SIM.... + 560| PERFORM POST USING '+'. + 561| + 562| WHEN 'SIMU'. + 563| * 입력자료 점검. + 564| PERFORM CHECK_DATA. + 565| * 전표 SIM.... + 566| PERFORM POST USING '1'. + 567| + 568| WHEN 'SAVE'. + 569| * + 570| PERFORM CHECK_DATA. + 571| * + 572| PERFORM POST USING ' '. +``` + +- **EN**: SIM/SIMU run CHECK_DATA then POST in simulation modes ('+','1'); SAVE runs CHECK_DATA then POST for real posting. +- 호출(파서): CHECK_DATA, POST, CHECK_DATA, POST, CHECK_DATA, POST +- SAP 객체: Z_FI_DOCUMENT_POSTING +- 업무 키워드: 시뮬레이션, 전표 저장, 전기, 입력 점검 +- English: Simulation, Post Document, Save +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L556-L572` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#USER_COMMAND_0100_INPUT#C8` + +### FORM CHECK_DATA — `ZFIR0110_DOC` L582-L619 (38줄) + +*전표 입력값을 전기 전에 검증한다 — 불공제 세금코드 판정, 과세/영세 세금코드와 세액의 정합성 확인.* + +> 이 unit 의 조각 2개가 26/38줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 선택한 세금코드의 조건레코드(A003)를 읽어 조건유형이 KRIT 이면 불공제(비공제 매입세액) 건으로 판정하고 플래그를 세운다 — 이후 세금 라인을 만들지 않기 위한 표시다. + +```abap + 584| SELECT SINGLE * + 585| FROM A003 + 586| WHERE KAPPL EQ 'TX' + 587| AND ALAND EQ 'KR' + 588| AND MWSKZ EQ ZDTV3S_DOC_LIFNR-MWSKZ. + 589| IF SY-SUBRC EQ 0 AND A003-KSCHL EQ 'KRIT'. + 590| G_NVV = 'X'. + 591| ELSE. + 592| G_NVV = SPACE. + 593| ENDIF. +``` + +- **EN**: Reads the tax condition record (A003) and flags the case as non-deductible input VAT when the condition type is KRIT. +- 테이블(파서): read [A003](/tables/A003.md) / write - +- SAP 객체: A003, KSCHL, MWSKZ, KRIT +- 업무 키워드: 불공제, 비공제매입세액, 세금코드, 조건유형, 세금라인삭제 +- English: non-deductible, input VAT, tax code, condition type, KRIT, A003 +- 정의부(복사 시 함께 필요): [`A003`](#decl-zfir0110_doc-28-a003), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`G_NVV`](#decl-zfir0110_doc-86-g_nvv) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L584-L593` · confidence 0.82 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#CHECK_DATA#C1` + +#### [validation] 조건레코드의 세율(KONP-KBETR)이 0 인지 확인해 영세 세금코드인지 판정하고, 세금계산서의 세액 유무와 맞지 않으면 사용자에게 알린다 — 세액이 있는데 영세코드면 '과세세금코드를 선택하세요', 세액이 없는데 과세코드면 '영세세금코드를 선택하세요'. + +```abap + 596| SELECT SINGLE MANDT INTO SY-MANDT + 597| FROM KONP + 598| WHERE KNUMH EQ A003-KNUMH + 599| AND KBETR EQ 0 . + 600| IF SY-SUBRC EQ 0. + 601| G_ZERO = 'X'. + 602| IF NOT IS_INVOICE-TAXTOTAL IS INITIAL . + 603| MESSAGE I000 WITH '과세세금코드를 선택하세요.'. + 604| EXIT. + 605| ENDIF. + 606| ELSE. + 607| G_ZERO = SPACE. + 608| IF IS_INVOICE-TAXTOTAL IS INITIAL. + 609| MESSAGE I000 WITH '영세세금코드를 선택하세요.'. + 610| ENDIF. + 611| ENDIF. +``` + +- **EN**: Checks whether the tax condition rate is zero and cross-validates it against the invoice tax total, prompting the user to pick the matching tax code. +- 테이블(파서): read [KONP](/tables/KONP.md) / write - +- SAP 객체: KONP, KBETR, A003, MWSKZ +- 업무 키워드: 영세, 과세, 세금코드검증, 세율, 세액정합성, 입력검증, 세금계산서 +- English: zero rate, taxable, tax code validation, tax rate, consistency check, input validation +- 정의부(복사 시 함께 필요): [`A003`](#decl-zfir0110_doc-28-a003), [`G_ZERO`](#decl-zfir0110_doc-87-g_zero), [`IS_INVOICE`](#decl-zfir0110_doc-63-is_invoice) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L596-L611` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#CHECK_DATA#C2` + +### FORM SUM_AMT — `ZFIR0110_DOC` L1128-L1166 (39줄) + +*구매처 항목과 비용 아이템의 차변·대변 합계를 계산해 전표 균형 여부를 신호등 아이콘으로 표시하는 FORM 이다.* + +> 이 unit 의 조각 2개가 33/39줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 구매처 금액 부호에 따라 차변(SUMSOLL)/대변(SUMHABEN) 합계를 초기화하되, 자동세금계산(XMWST)이 아니거나 불공제(G_NVV)면 세액(MWSTS)을 반대편에 포함한다. + +```abap + 1131| ZDTV3S_DOC_HEAD-SUMSOLL = 0 . + 1132| ZDTV3S_DOC_HEAD-SUMHABEN = 0 . + 1133| IF ZDTV3S_DOC_LIFNR-DMBTR > 0. + 1134| * 차변금액. + 1135| IF ZDTV3S_DOC_HEAD-XMWST NE 'X' OR G_NVV EQ 'X'. + 1136| ZDTV3S_DOC_HEAD-SUMSOLL = ZDTV3S_DOC_LIFNR-MWSTS. + 1137| ENDIF. + 1138| * 대변금액. + 1139| ZDTV3S_DOC_HEAD-SUMHABEN = ABS( ZDTV3S_DOC_LIFNR-DMBTR ). + 1140| ELSE. + 1141| * 차변금액. + 1142| ZDTV3S_DOC_HEAD-SUMSOLL = ABS( ZDTV3S_DOC_LIFNR-DMBTR ). + 1143| * 대변금액. + 1144| IF ZDTV3S_DOC_HEAD-XMWST NE 'X' OR G_NVV EQ 'X'. + 1145| ZDTV3S_DOC_HEAD-SUMHABEN = ZDTV3S_DOC_LIFNR-MWSTS. + 1146| ENDIF. + 1147| ENDIF. +``` + +- **EN**: Initialises debit/credit totals from the vendor amount sign, including the tax amount on the opposite side when tax is not auto-calculated (XMWST) or is non-deductible (G_NVV). +- 업무 키워드: 차변 합계, 대변 합계, 세액, 불공제, 자동세금계산 +- English: Debit Total, Credit Total, Tax Amount, Non-deductible Tax +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`G_NVV`](#decl-zfir0110_doc-86-g_nvv) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1131-L1147` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SUM_AMT#C1` + +#### [aggregation] 비용 아이템을 전기키 40(차변)/50(대변)별로 합산해 차대 합계에 더하고 두 합계가 일치하면 녹색등, 아니면 적색등을 전표 헤더 AMPEL 에 표시한다. + +```abap + 1149| LOOP AT GT_ITEM. + 1150| + 1151| CASE GT_ITEM-BSCHL. + 1152| WHEN '40'. + 1153| ADD GT_ITEM-DMBTR TO ZDTV3S_DOC_HEAD-SUMSOLL. + 1154| WHEN '50'. + 1155| ADD GT_ITEM-DMBTR TO ZDTV3S_DOC_HEAD-SUMHABEN. + 1156| ENDCASE. + 1157| + 1158| ENDLOOP. + 1159| * + 1160| IF ZDTV3S_DOC_HEAD-SUMSOLL EQ ZDTV3S_DOC_HEAD-SUMHABEN. + 1161| ZDTV3S_DOC_HEAD-AMPEL = ICON_GREEN_LIGHT . + 1162| ELSE. + 1163| ZDTV3S_DOC_HEAD-AMPEL = ICON_RED_LIGHT. + 1164| ENDIF. +``` + +- **EN**: Aggregates item amounts by posting key 40 (debit) / 50 (credit) into the totals and sets the header traffic light green when debit equals credit, red otherwise. +- 업무 키워드: 전기키, 차대 균형, 전표 밸런스, 신호등 +- English: Posting Key, Debit/Credit Balance, Traffic Light +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1149-L1164` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SUM_AMT#C2` + +### FORM POST — `ZFIR0110_DOC` L623-L795 (173줄) + +*전표 헤더·아이템을 구성한 뒤 시뮬레이션(ZFIR0130 호출) 또는 Z_FI_DOCUMENT_POSTING 실제 전기를 수행하고 성공 시 세금계산서 테이블에 전표번호를 기록하는 FORM 이다.* + +> 이 unit 의 조각 4개가 87/173줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] SET_BKPF/SET_BSEG 로 BBKPF·BBSEG 전기 데이터와 시뮬레이션용 BSEG 를 만들고 P_TEST 값(+/-/1/공백)에 따라 BDC 모드(E/A/N)를 정한다. + +```abap + 650| PERFORM SET_BKPF TABLES LT_BKPF. + 651| * 전표 항목정보. + 652| PERFORM SET_BSEG TABLES LT_BSEG T_BSEG. + 653| + 654| + 655| * + 656| IF P_TEST EQ '-' OR P_TEST EQ '+'. + 657| L_MODE = 'E'. + 658| ELSEIF P_TEST EQ '1'. + 659| L_MODE = 'A'. + 660| ELSE. + 661| L_MODE = 'N'. + 662| ENDIF. +``` + +- **EN**: Builds BBKPF/BBSEG posting data and simulation BSEG via SET_BKPF/SET_BSEG and derives the BDC mode (E/A/N) from P_TEST. +- 호출(파서): SET_BKPF, SET_BSEG +- SAP 객체: BBKPF, BBSEG +- 업무 키워드: 전표 헤더, 전표 항목, BDC 모드, 시뮬레이션 +- English: BBKPF, BBSEG, BDC Mode +- 정의부(복사 시 함께 필요): [`LT_BKPF`](#decl-zfir0110_doc-633-lt_bkpf), [`LT_BSEG`](#decl-zfir0110_doc-634-lt_bseg), [`BSEG`](#decl-zfir0110_doc-27-bseg), [`T_BSEG`](#decl-zfir0110_doc-638-t_bseg), [`L_MODE`](#decl-zfir0110_doc-632-l_mode) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L650-L662` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C1` + +#### [interface] 시뮬레이션(+)이면 T020(FBV1)을 읽고 BKPF 에 회계연도·기간을 채운 뒤 T_BKPF/T_BSEG 를 ABAP 메모리로 EXPORT 하고 ZFIR0130 전표 시뮬레이션 화면을 호출한다. + +```abap + 670| IF P_TEST EQ '+'. + 671| SELECT SINGLE * + 672| FROM T020 + 673| WHERE TCODE = 'FBV1'. + 674| + 675| LOOP AT LT_BKPF. + 676| MOVE-CORRESPONDING LT_BKPF TO T_BKPF. + 677| T_BKPF-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4). + 678| T_BKPF-MONAT = ZDTV3S_DOC_HEAD-BUDAT+4(2). + 679| APPEND T_BKPF. + 680| CLEAR T_BKPF. + 681| ENDLOOP. + 682| * + 683| + 684| EXPORT T_BKPF TO MEMORY ID 'T_BKPF'. + 685| EXPORT T_BSEG TO MEMORY ID 'T_BSEG'. + 686| CALL TRANSACTION 'ZFIR0130'. + 687| FREE: T_BKPF, T_BSEG. +``` + +- **EN**: In simulation mode reads T020 for FBV1, fills fiscal year/period in T_BKPF, exports T_BKPF/T_BSEG to ABAP memory and calls transaction ZFIR0130 to display the simulated document. +- 테이블(파서): read [T020](/tables/T020.md) / write - +- 호출(파서): ZFIR0130 +- SAP 객체: ZFIR0130, T020, BKPF, BSEG +- 업무 키워드: 전표 시뮬레이션, 메모리 전달, 회계연도, 기간 +- English: Document Simulation, EXPORT TO MEMORY, ZFIR0130 +- 정의부(복사 시 함께 필요): [`T020`](#decl-zfir0110_doc-23-t020), [`LT_BKPF`](#decl-zfir0110_doc-633-lt_bkpf), [`BKPF`](#decl-zfir0110_doc-25-bkpf), [`T_BKPF`](#decl-zfir0110_doc-637-t_bkpf), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head), [`BSEG`](#decl-zfir0110_doc-27-bseg), [`T_BSEG`](#decl-zfir0110_doc-638-t_bseg) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L670-L687` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C2` + +#### [fm_call] 실제 전기 시 Z_FI_DOCUMENT_POSTING 에 BDC 모드·BBKPF·BBSEG 를 넘겨 회계전표를 생성하고 회사코드·전표번호·회계연도와 메시지(FIMSG)를 받는다. + +```abap + 710| ELSEIF P_TEST EQ ''. + 711| + 712| ** 김재환 + 713| * CALL FUNCTION 'ZDTV3SAP_CRD_INT_POST' + 714| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 715| EXPORTING + 716| I_BDC_MODE = L_MODE + 717| I_SIMULATION = P_TEST + 718| IMPORTING + 719| E_BUKRS = G_BUKRS + 720| E_BELNR = G_BELNR + 721| E_GJAHR = G_GJAHR + 722| TABLES + 723| T_BBKPF = LT_BKPF + 724| T_BBSEG = LT_BSEG + 725| T_MESSTAB = LT_MSG. + 726| + 727| + 728| READ TABLE LT_BKPF INDEX 1. + 729| CHECK SY-SUBRC EQ 0. +``` + +- **EN**: For real posting calls Z_FI_DOCUMENT_POSTING with BDC mode, BBKPF and BBSEG to create the accounting document and returns company code, document number, fiscal year and FIMSG messages. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, BBKPF, BBSEG, FIMSG +- 업무 키워드: 전표 전기, 회계전표 생성, 매입전표, 전기 메시지 +- English: Document Posting, Accounting Document, Z_FI_DOCUMENT_POSTING +- 정의부(복사 시 함께 필요): [`L_MODE`](#decl-zfir0110_doc-632-l_mode), [`G_BUKRS`](#decl-zfir0110_doc-80-g_bukrs), [`G_BELNR`](#decl-zfir0110_doc-81-g_belnr), [`G_GJAHR`](#decl-zfir0110_doc-82-g_gjahr), [`LT_BKPF`](#decl-zfir0110_doc-633-lt_bkpf), [`LT_BSEG`](#decl-zfir0110_doc-634-lt_bseg), [`LT_MSG`](#decl-zfir0110_doc-635-lt_msg) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L710-L729` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C3` + +#### [db_write] 성공 메시지 FP S 001 이 있으면 ZDTV3T_AP_EXT_D 에 전표번호·전기일·증빙일·전표유형·세금코드·금액·사용자·연도를 UPDATE 하고 ZDTV3T_AP_EXT 의 USE_DOC 를 X 로 표시한 뒤 파라미터 ID 로 전표키를 넘기고 화면을 닫으며, 실패면 메시지 팝업을 띄운다. + +```abap + 733| READ TABLE LT_MSG WITH KEY MSGID = 'FP' + 734| MSGTY = 'S' + 735| MSGNO = '001'. + 736| IF SY-SUBRC EQ 0. + 737| L_OK = 'X'. + 738| + 739| UPDATE ZDTV3T_AP_EXT_D SET: BELNR = G_BELNR + 740| BUDAT = LT_BKPF-BUDAT + 741| BLDAT = LT_BKPF-BLDAT + 742| BLART = LT_BKPF-BLART + 743| MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ + 744| DMBTR = IS_INVOICE-GRANDTOTAL + 745| UNAME = SY-UNAME + 746| ZGJAH = G_GJAHR + 747| WHERE BUKRS = IS_INVOICE-BUKRS + 748| AND ISSUE_DATE = IS_INVOICE-ISSUE_DATE + 749| AND BUPLA = IS_INVOICE-BUPLA + 750| AND INV_SEQ = IS_INVOICE-INV_SEQ. + 751| + 752| + 753| UPDATE ZDTV3T_AP_EXT SET: USE_DOC = 'X' + 754| WHERE BUKRS = IS_INVOICE-BUKRS + 755| AND ISSUE_DATE = IS_INVOICE-ISSUE_DATE + 756| AND BUPLA = IS_INVOICE-BUPLA + 757| AND INV_SEQ = IS_INVOICE-INV_SEQ. + 758| + 759| SET PARAMETER ID 'ZDTV3_OK' FIELD L_OK. + 760| SET PARAMETER ID 'BUK' FIELD G_BUKRS. + 761| SET PARAMETER ID 'GJR' FIELD G_GJAHR. + 762| SET PARAMETER ID 'BLN' FIELD G_BELNR. + 763| LEAVE TO SCREEN 0. + 764| ELSE. + 765| CHECK P_TEST EQ SPACE. + 766| PERFORM MESSAGE_POPUP TABLES LT_MSG. + 767| PERFORM MULTI_MSG_POPUPC USING IT_MSG. + 768| ENDIF. +``` + +- **EN**: When success message FP S 001 exists, updates ZDTV3T_AP_EXT_D with the document number/dates/type/tax code/amount/user/year and flags USE_DOC in ZDTV3T_AP_EXT, passes the document key via parameter IDs and leaves the screen; otherwise shows the message popups. +- 테이블(파서): read - / write [ZDTV3T_AP_EXT_D](/tables/ZDTV3T_AP_EXT_D.md), [ZDTV3T_AP_EXT](/tables/ZDTV3T_AP_EXT.md) +- 호출(파서): MESSAGE_POPUP, MULTI_MSG_POPUPC +- SAP 객체: ZDTV3T_AP_EXT_D, ZDTV3T_AP_EXT +- 업무 키워드: 세금계산서 전표 연결, 전표번호 기록, 사용여부, 전기 결과, 파라미터 ID +- English: Tax Invoice, Document Number, Update, Posting Result +- 정의부(복사 시 함께 필요): [`LT_MSG`](#decl-zfir0110_doc-635-lt_msg), [`L_OK`](#decl-zfir0110_doc-631-l_ok), [`G_BELNR`](#decl-zfir0110_doc-81-g_belnr), [`LT_BKPF`](#decl-zfir0110_doc-633-lt_bkpf), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`IS_INVOICE`](#decl-zfir0110_doc-63-is_invoice), [`G_GJAHR`](#decl-zfir0110_doc-82-g_gjahr), [`FIELD`](#decl-zfir0110_doc-101-field), [`G_BUKRS`](#decl-zfir0110_doc-80-g_bukrs), [`IT_MSG`](#decl-zfir0110_doc-77-it_msg) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L733-L768` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#POST#C4` + +### FORM SET_BKPF — `ZFIR0110_DOC` L799-L816 (18줄) + +*화면 헤더(ZDTV3S_DOC_HEAD)를 BBKPF 전표 헤더로 옮기고 자동세금계산 해제·세션 종료 플래그를 세팅하는 FORM 이다.* + +> 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 화면 헤더를 BBKPF 로 복사하고 환산일(WWERT) 미입력 처리, 레코드유형 B, 자동세금계산(XMWST) 해제, 전기 완료 플래그(XPRFG) 설정 후 헤더 행을 추가한다. + +```abap + 801| MOVE-CORRESPONDING ZDTV3S_DOC_HEAD TO PT_BKPF. + 802| IF ZDTV3S_DOC_HEAD-WWERT IS INITIAL. + 803| PT_BKPF-WWERT = SPACE. + 804| ENDIF. + 805| PT_BKPF-STYPE = 'B'. + 806| ** 불공제는 자동세금계산안함. + 807| PT_BKPF-XMWST = SPACE. + 808| PT_BKPF-XPRFG = 'X'. + 809| * + 810| INCLUDE ZFIR0110_U104P. + 811| * INCLUDE ZDTV3I_U104P IF FOUND. + 812| * + 813| APPEND PT_BKPF. +``` + +- **EN**: Copies the screen header into BBKPF, handles empty translation date, sets record type B, disables automatic tax calculation (XMWST) and sets XPRFG, then appends the header. +- SAP 객체: BBKPF +- 업무 키워드: 전표 헤더, 자동세금계산, 환산일, 전표유형 +- English: Document Header, BBKPF, Automatic Tax Calculation +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L801-L813` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BKPF#C1` + +### FORM SET_BSEG — `ZFIR0110_DOC` L820-L1047 (228줄) + +*세금계산서 매입전표의 구매처 항목과 비용 항목을 BBSEG(전기용)와 BSEG(시뮬레이션용) 두 가지 형식으로 구성하는 FORM 이다.* + +> 이 unit 의 조각 4개가 195/228줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 구매처 항목(ZDTV3S_DOC_LIFNR)을 BBSEG 로 옮겨 전기키·구매처(NEWBS/NEWKO)를 세팅하고, 1회성/직원 거래처가 아니면 CPD 주소·은행 필드를 지우며 지급기준일·할인일수·기산일 초기값 처리 후 금액·세액을 통화형식으로 WRBTR/WMWST 에 넣고(불공제 아니면 세액 제거) 첫 BBSEG 항목으로 추가한다. + +```abap + 828| CLEAR : PT_BSEG , PT_BSEG[]. + 829| MOVE-CORRESPONDING ZDTV3S_DOC_LIFNR TO PT_BSEG. + 830| PT_BSEG-STYPE = 'B'. + 831| PT_BSEG-NEWBS = ZDTV3S_DOC_LIFNR-BSCHL. + 832| PT_BSEG-NEWKO = ZDTV3S_DOC_LIFNR-LIFNR. + 833| * 금액... + 834| CLEAR : PT_BSEG-DMBTR , PT_BSEG-MWSTS . + 835| * + 836| IF ZDTV3S_DOC_LIFNR-XZEMP EQ SPACE AND + 837| ZDTV3S_DOC_LIFNR-XCPDK EQ SPACE. + 838| CLEAR : PT_BSEG-STCD2 , PT_BSEG-NAME1, + 839| PT_BSEG-STRAS , PT_BSEG-ORT01, + 840| PT_BSEG-PSTLZ , PT_BSEG-LAND1, + 841| PT_BSEG-BANKN . + 842| + 843| ENDIF. + 844| * + 845| IF ZDTV3S_DOC_LIFNR-XZEMP EQ 'X'. + 846| PT_BSEG-REGUL = 'X'. + 847| ENDIF. + 848| IF ZDTV3S_DOC_LIFNR-ZFBDT IS INITIAL. + 849| CLEAR : PT_BSEG-ZFBDT. + 850| ENDIF. + 851| + 852| + 853| + 854| IF ZDTV3S_DOC_LIFNR-ZBD1T IS INITIAL. + 855| CLEAR : PT_BSEG-ZBD1T. + 856| ENDIF. + 857| + 858| IF ZDTV3S_DOC_LIFNR-ZBD2T IS INITIAL. + 859| CLEAR : PT_BSEG-ZBD2T. + 860| ENDIF. + 861| + 862| + 863| + 864| IF ZDTV3S_DOC_LIFNR-VALUT IS INITIAL. + 865| CLEAR : PT_BSEG-VALUT. + 866| ENDIF. + 867| * + 868| ZDTV3S_DOC_LIFNR-DMBTR = ABS( ZDTV3S_DOC_LIFNR-DMBTR ). + 869| ZDTV3S_DOC_LIFNR-MWSTS = ABS( ZDTV3S_DOC_LIFNR-MWSTS ). + 870| WRITE ZDTV3S_DOC_LIFNR-DMBTR TO PT_BSEG-WRBTR CURRENCY T001-WAERS. + 871| WRITE ZDTV3S_DOC_LIFNR-MWSTS TO PT_BSEG-WMWST CURRENCY T001-WAERS. + 872| * + 873| * 불공제는 세금금액을 사용함. + 874| IF G_NVV EQ SPACE. + 875| PT_BSEG-WMWST = SPACE. + 876| ENDIF. + 877| * + 878| INCLUDE ZFIR0110_U105P. + 879| * INCLUDE ZDTV3I_U105P IF FOUND. + 880| * + 881| APPEND PT_BSEG. CLEAR PT_BSEG. +``` + +- **EN**: Builds the vendor line in BBSEG: posting key/vendor as NEWBS/NEWKO, clears one-time-account address/bank fields unless XZEMP/XCPDK, handles empty baseline date/discount days/value date, writes DMBTR/MWSTS as WRBTR/WMWST in company currency (tax cleared unless non-deductible G_NVV) and appends the line. +- SAP 객체: BBSEG, T001 +- 업무 키워드: 구매처 항목, 전기키, 1회성 거래처, 지급기준일, 세액, 불공제, 매입전표 +- English: Vendor Line Item, Posting Key, One-Time Account, Baseline Date, Tax Amount, BBSEG +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`T001`](#decl-zfir0110_doc-22-t001), [`G_NVV`](#decl-zfir0110_doc-86-g_nvv) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L828-L881` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C1` + +#### [calculation] 금액이 0 이 아닌 비용 아이템(GT_ITEM)별로 G/L 계정·전기키·금액을 BBSEG 항목으로 만들고 비어 있는 코스트 필드(FKONT/PERNR/PROJK/BZDAT)를 지우며 세금코드는 구매처 항목 값을 상속(없으면 '**')하고 사업장·적요를 보완해 추가한다. + +```abap + 884| LOOP AT GT_ITEM WHERE DMBTR NE 0. + 885| MOVE-CORRESPONDING GT_ITEM TO PT_BSEG. + 886| PT_BSEG-STYPE = 'B'. + 887| PT_BSEG-NEWKO = GT_ITEM-HKONT. + 888| PT_BSEG-NEWBS = GT_ITEM-BSCHL. + 889| CLEAR : PT_BSEG-DMBTR , PT_BSEG-HKONT. + 890| WRITE GT_ITEM-DMBTR TO PT_BSEG-WRBTR CURRENCY T001-WAERS. + 891| * + 892| IF GT_ITEM-FKONT IS INITIAL. + 893| CLEAR : PT_BSEG-FKONT. + 894| ENDIF. + 895| IF GT_ITEM-PERNR IS INITIAL. + 896| CLEAR : PT_BSEG-PERNR. + 897| ENDIF. + 898| IF GT_ITEM-PROJK IS INITIAL. + 899| CLEAR : PT_BSEG-PROJK. + 900| ENDIF. + 901| IF GT_ITEM-BZDAT IS INITIAL. + 902| CLEAR : PT_BSEG-BZDAT. + 903| ENDIF. + 904| * + 905| * IF G_NVV EQ 'X' OR G_ZERO EQ 'X'. + 906| PT_BSEG-MWSKZ = ZDTV3S_DOC_LIFNR-MWSKZ. + 907| * ENDIF. + 908| + 909| IF PT_BSEG-MWSKZ IS INITIAL. + 910| PT_BSEG-MWSKZ = '**'. + 911| ELSE. + 912| PT_BSEG-BUPLA = ZDTV3S_DOC_LIFNR-BUPLA. + 913| ENDIF. + 914| * + 915| IF PT_BSEG-SGTXT IS INITIAL. + 916| PT_BSEG-SGTXT = ZDTV3S_DOC_LIFNR-SGTXT. + 917| ENDIF. + 918| * + 919| INCLUDE ZFIR0110_U106P. + 920| * INCLUDE ZDTV3I_U106P IF FOUND. + 921| * + 922| APPEND PT_BSEG. CLEAR PT_BSEG. + 923| ENDLOOP. +``` + +- **EN**: For each expense item with non-zero amount builds a BBSEG line with G/L account, posting key and amount, clears empty cost-object fields, inherits the vendor tax code (default '**'), sets business place and default text, and appends it. +- SAP 객체: BBSEG, BSEG +- 업무 키워드: 비용 항목, G/L 계정, 세금코드 상속, 사업장, 적요, 코스트 객체 +- English: Expense Line Item, G/L Account, Tax Code, Business Place, BBSEG +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`T001`](#decl-zfir0110_doc-22-t001), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L884-L923` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C2` + +#### [calculation] 시뮬레이션용 BSEG 구조에 구매처 항목을 회사코드·회계연도·항목번호(BUZEI)·계정유형 K·대변(H)·통화 KRW·구매처·조정계정·금액·세액(불공제 아니면 제거)으로 구성해 추가한다. + +```abap + 936| CLEAR : T_BSEG , T_BSEG[]. + 937| MOVE-CORRESPONDING ZDTV3S_DOC_LIFNR TO T_BSEG. + 938| + 939| CN = CN + 1. + 940| T_BSEG-MANDT = SY-MANDT. + 941| T_BSEG-BUKRS = ZDTV3S_DOC_HEAD-BUKRS. + 942| T_BSEG-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4). + 943| T_BSEG-BUZEI = CN. + 944| + 945| T_BSEG-BSCHL = ZDTV3S_DOC_LIFNR-BSCHL. + 946| T_BSEG-KOART = 'K'. + 947| T_BSEG-SHKZG = 'H'. + 948| T_BSEG-PSWSL = 'KRW'. + 949| + 950| T_BSEG-LIFNR = ZDTV3S_DOC_LIFNR-LIFNR. + 951| T_BSEG-HKONT = ZDTV3S_DOC_LIFNR-HKONT. + 952| T_BSEG-ZUONR = ZDTV3S_DOC_LIFNR-ZUONR. + 953| + 954| + 955| IF ZDTV3S_DOC_LIFNR-ZFBDT IS INITIAL. + 956| CLEAR : T_BSEG-ZFBDT. + 957| ENDIF. + 958| + 959| + 960| IF ZDTV3S_DOC_LIFNR-ZBD1T IS INITIAL. + 961| CLEAR : T_BSEG-ZBD1T. + 962| ENDIF. + 963| + 964| IF ZDTV3S_DOC_LIFNR-ZBD2T IS INITIAL. + 965| CLEAR : T_BSEG-ZBD2T. + 966| ENDIF. + 967| + 968| IF ZDTV3S_DOC_LIFNR-VALUT IS INITIAL. + 969| CLEAR : T_BSEG-VALUT. + 970| ENDIF. + 971| * + 972| T_BSEG-WRBTR = ZDTV3S_DOC_LIFNR-DMBTR. + 973| T_BSEG-WMWST = ZDTV3S_DOC_LIFNR-MWSTS. + 974| + 975| T_BSEG-SGTXT = ZDTV3S_DOC_LIFNR-SGTXT. + 976| + 977| * + 978| * 불공제는 세금금액을 사용함. + 979| IF G_NVV EQ SPACE. + 980| T_BSEG-WMWST = SPACE. + 981| ENDIF. + 982| * + 983| INCLUDE ZFIR0110_U105P. + 984| * INCLUDE ZDTV3I_U105P IF FOUND. + 985| * + 986| APPEND T_BSEG. CLEAR T_BSEG. +``` + +- **EN**: Builds the vendor line in BSEG format for simulation: company code, fiscal year, line number, account type K, credit indicator H, currency KRW, vendor, reconciliation account, amount and tax (tax cleared unless G_NVV). +- SAP 객체: BSEG +- 업무 키워드: 시뮬레이션, 구매처 항목, 대변, 계정유형, 회계연도 +- English: Simulation, BSEG, Account Type K, Credit +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`CN`](#decl-zfir0110_doc-823-cn), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head), [`G_NVV`](#decl-zfir0110_doc-86-g_nvv) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L936-L986` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C3` + +#### [calculation] 시뮬레이션용으로 비용 아이템마다 BSEG 항목(계정유형 S·차변 S·KRW·G/L 계정·전기키·금액·지정·세금코드 기본 '**'·사업장·적요)을 순번을 매겨 구성해 추가한다. + +```abap + 990| LOOP AT GT_ITEM WHERE DMBTR NE 0. + 991| MOVE-CORRESPONDING GT_ITEM TO T_BSEG. + 992| + 993| CN = CN + 1. + 994| T_BSEG-MANDT = SY-MANDT. + 995| T_BSEG-BUKRS = ZDTV3S_DOC_HEAD-BUKRS. + 996| T_BSEG-GJAHR = ZDTV3S_DOC_HEAD-BUDAT+0(4). + 997| T_BSEG-BUZEI = CN. + 998| + 999| T_BSEG-KOART = 'S'. + 1000| T_BSEG-SHKZG = 'S'. + 1001| + 1002| T_BSEG-PSWSL = 'KRW'. + 1003| + 1004| T_BSEG-HKONT = GT_ITEM-HKONT. + 1005| T_BSEG-BSCHL = GT_ITEM-BSCHL. + 1006| T_BSEG-WRBTR = GT_ITEM-DMBTR. + 1007| T_BSEG-ZUONR = GT_ITEM-ZUONR. + 1008| + 1009| + 1010| IF GT_ITEM-FKONT IS INITIAL. + 1011| CLEAR : T_BSEG-FKONT. + 1012| ENDIF. + 1013| IF GT_ITEM-PERNR IS INITIAL. + 1014| CLEAR : T_BSEG-PERNR. + 1015| ENDIF. + 1016| IF GT_ITEM-PROJK IS INITIAL. + 1017| CLEAR : T_BSEG-PROJK. + 1018| ENDIF. + 1019| IF GT_ITEM-BZDAT IS INITIAL. + 1020| CLEAR : T_BSEG-BZDAT. + 1021| ENDIF. + 1022| * + 1023| * IF G_NVV EQ 'X' OR G_ZERO EQ 'X'. + 1024| T_BSEG-MWSKZ = GT_ITEM-MWSKZ. + 1025| * ENDIF. + 1026| + 1027| IF T_BSEG-MWSKZ IS INITIAL. + 1028| T_BSEG-MWSKZ = '**'. + 1029| ELSE. + 1030| T_BSEG-BUPLA = ZDTV3S_DOC_LIFNR-BUPLA. + 1031| ENDIF. + 1032| * + 1033| T_BSEG-SGTXT = GT_ITEM-SGTXT. + 1034| * + 1035| INCLUDE ZFIR0110_U106P. + 1036| * INCLUDE ZDTV3I_U106P IF FOUND. + 1037| * + 1038| APPEND T_BSEG. CLEAR T_BSEG. + 1039| ENDLOOP. +``` + +- **EN**: For simulation builds a BSEG line per expense item with account type S, debit indicator S, KRW, G/L account, posting key, amount, assignment, tax code (default '**'), business place and text, numbering the lines. +- SAP 객체: BSEG +- 업무 키워드: 시뮬레이션, 비용 항목, 차변, G/L 계정, 세금코드 +- English: Simulation, BSEG, Account Type S, Debit +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`GT_ITEM`](#decl-zfir0110_doc-53-gt_item), [`CN`](#decl-zfir0110_doc-823-cn), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L990-L1039` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#SET_BSEG#C4` + +### FORM MESSAGE_POPUP — `ZFIR0110_DOC` L1051-L1063 (13줄) + +*FIMSG 구조의 전기 메시지를 BAPIRET 형식(IT_MSG)으로 변환해 팝업용 메시지 테이블을 만드는 FORM 이다.* + +> 이 unit 의 조각 1개가 10/13줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] Z_FI_DOCUMENT_POSTING 결과 FIMSG 메시지(유형·ID·번호·변수)를 BAPIRET 구조 IS_MSG 로 옮겨 IT_MSG 에 모아 팝업 표시에 사용한다. + +```abap + 1053| LOOP AT PT_FIMSG. + 1054| IS_MSG-TYPE = PT_FIMSG-MSGTY. + 1055| IS_MSG-ID = PT_FIMSG-MSGID. + 1056| IS_MSG-NUMBER = PT_FIMSG-MSGNO. + 1057| IS_MSG-MESSAGE_V1 = PT_FIMSG-MSGV1. + 1058| IS_MSG-MESSAGE_V2 = PT_FIMSG-MSGV2. + 1059| IS_MSG-MESSAGE_V3 = PT_FIMSG-MSGV3. + 1060| IS_MSG-MESSAGE_V4 = PT_FIMSG-MSGV4. + 1061| APPEND IS_MSG TO IT_MSG. + 1062| ENDLOOP. +``` + +- **EN**: Maps each FIMSG posting message (type, id, number, variables) into BAPIRET structure IS_MSG and collects them in IT_MSG for popup display. +- SAP 객체: FIMSG, BAPIRET2 +- 업무 키워드: 전기 메시지, 메시지 변환, 오류 목록 +- English: FIMSG, BAPIRET2, Message Mapping +- 정의부(복사 시 함께 필요): [`IS_MSG`](#decl-zfir0110_doc-78-is_msg), [`IT_MSG`](#decl-zfir0110_doc-77-it_msg) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1053-L1062` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#MESSAGE_POPUP#C1` + +### FORM MULTI_MSG_POPUPC — `ZFIR0110_DOC` L1067-L1075 (9줄) + +*BAPIRET 메시지 테이블을 OXT_MESSAGE_TO_POPUP 으로 팝업 표시하는 헬퍼 FORM 이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 전기 결과 메시지 목록(BAPIRETTAB)을 OXT_MESSAGE_TO_POPUP 으로 한 번에 팝업으로 보여준다. + +```abap + 1068| CALL FUNCTION 'OXT_MESSAGE_TO_POPUP' + 1069| EXPORTING + 1070| IT_MESSAGE = PT_MSG + 1071| EXCEPTIONS + 1072| BAL_ERROR = 1 + 1073| OTHERS = 2. +``` + +- **EN**: Displays the posting result message table (BAPIRETTAB) in a popup via OXT_MESSAGE_TO_POPUP. +- 호출(파서): OXT_MESSAGE_TO_POPUP +- SAP 객체: OXT_MESSAGE_TO_POPUP, BAPIRETTAB +- 업무 키워드: 메시지 팝업, 전기 결과, 다중 메시지 +- English: Message Popup, BAPIRET2 +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1068-L1073` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC#FORM#MULTI_MSG_POPUPC#C1` + +### MODULE GET_HKONT_TEXT INPUT — `ZFIR0110_DOC` L1079-L1101 (23줄) + +*구매처 항목의 G/L 계정(조정계정)이 THKON 에 등록된 처리대상 계정인지 검증하고 SKAT 에서 계정명을 조회하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력된 조정계정(HKONT)이 THKON(계정표 기준 조정계정 또는 대체조정계정 ABWHK)에 존재하는지 확인해 없으면 '처리대상 계정이 아닙니다' 오류를 내고, SKAT 에서 계정명 TXT50 을 조회한다. + +```abap + 1081| IF ZDTV3S_DOC_LIFNR-HKONT IS INITIAL. + 1082| ZDTV3S_DOC_LIFNR-TXT50 = SPACE. + 1083| ELSE. + 1084| SELECT SINGLE MANDT INTO SY-MANDT + 1085| FROM THKON + 1086| WHERE KTOPL EQ T001-KTOPL + 1087| AND ( HKONT EQ ZDTV3S_DOC_LIFNR-HKONT + 1088| OR ABWHK EQ ZDTV3S_DOC_LIFNR-HKONT ). + 1089| IF SY-SUBRC NE 0. + 1090| MESSAGE E000 WITH '처리대상 계정이 아닙니다.'. + 1091| ENDIF. + 1092| * + 1093| SELECT SINGLE TXT50 INTO ZDTV3S_DOC_LIFNR-TXT50 + 1094| FROM SKAT + 1095| WHERE SPRAS EQ SY-LANGU + 1096| AND KTOPL EQ T001-KTOPL + 1097| AND SAKNR EQ ZDTV3S_DOC_LIFNR-HKONT. + 1098| * + 1099| ENDIF. +``` + +- **EN**: Checks that the vendor reconciliation account exists in THKON (as HKONT or alternative ABWHK) for the chart of accounts, raising an error otherwise, then reads the account text TXT50 from SKAT. +- 테이블(파서): read [THKON](/tables/THKON.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: THKON, SKAT, T001 +- 업무 키워드: 조정계정, 대체조정계정, 계정 검증, 계정명 +- English: Reconciliation Account, Alternative Reconciliation Account, THKON, SKAT +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`T001`](#decl-zfir0110_doc-22-t001) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1081-L1099` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_HKONT_TEXT_INPUT#C1` + +### MODULE GET_HKONT_TEXT2 INPUT — `ZFIR0110_DOC` L1105-L1124 (20줄) + +*비용 아이템 G/L 계정(HKONT) 입력 시 SKAT 에서 계정명을 조회하고 없으면 오류로 막는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 테이블컨트롤 아이템의 G/L 계정이 입력되면 SKAT(계정표 T001-KTOPL, 로그온 언어)에서 계정명 TXT50 을 조회하고 없으면 '계정이 올바르지 않습니다' 오류를 내며 현재 행 번호를 G_LINE 에 보관한다. + +```abap + 1107| IF ZDTV3S_DOC_ITEM-HKONT IS INITIAL. + 1108| ZDTV3S_DOC_ITEM-TXT50 = SPACE. + 1109| ELSE. + 1110| * + 1111| SELECT SINGLE TXT50 INTO ZDTV3S_DOC_ITEM-TXT50 + 1112| FROM SKAT + 1113| WHERE SPRAS EQ SY-LANGU + 1114| AND KTOPL EQ T001-KTOPL + 1115| AND SAKNR EQ ZDTV3S_DOC_ITEM-HKONT. + 1116| IF SY-SUBRC NE 0. + 1117| MESSAGE E000 WITH '계정이 올바르지 않습니다.'. + 1118| ENDIF. + 1119| * + 1120| G_LINE = TC_100-CURRENT_LINE. + 1121| * + 1122| ENDIF. +``` + +- **EN**: Validates the item G/L account by reading its TXT50 from SKAT for the company's chart of accounts and raises an error when the account does not exist, remembering the table control line. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT, T001 +- 업무 키워드: G/L 계정 검증, 계정명, 비용 항목, 테이블컨트롤 +- English: G/L Account, Chart of Accounts, SKAT, Validation +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item), [`T001`](#decl-zfir0110_doc-22-t001), [`G_LINE`](#decl-zfir0110_doc-85-g_line), [`TC_100`](#decl-zfir0110_doc-61-tc_100) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1107-L1122` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#GET_HKONT_TEXT2_INPUT#C1` + +### MODULE SET_ZFBDT INPUT — `ZFIR0110_DOC` L1188-L1211 (24줄) + +*지급조건·증빙일·전기일로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건을 결정하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 17/24줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 구매처 항목의 지급조건(ZTERM)·증빙일(BLDAT)·전기일(BUDAT)·회사코드로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건(GS_SKLIN)을 산출한다. + +```abap + 1193| CLEAR : GS_SKLIN. + 1194| CALL FUNCTION 'FI_FIND_PAYMENT_CONDITIONS' + 1195| EXPORTING + 1196| I_ZTERM = ZDTV3S_DOC_LIFNR-ZTERM + 1197| I_BLDAT = ZDTV3S_DOC_HEAD-BLDAT + 1198| I_BUDAT = ZDTV3S_DOC_HEAD-BUDAT + 1199| I_ZFBDT = ZDTV3S_DOC_LIFNR-ZFBDT + 1200| I_BUKRS = ZDTV3S_DOC_HEAD-BUKRS + 1201| IMPORTING + 1202| E_ZFBDT = ZDTV3S_DOC_LIFNR-ZFBDT + 1203| E_SKLIN = GS_SKLIN + 1204| EXCEPTIONS + 1205| TERMS_INCORRECT = 1 + 1206| TERMS_NOT_FOUND = 2 + 1207| NO_DATE_ENTERED = 3 + 1208| NO_DAY_LIMIT_FOUND = 4 + 1209| OTHERS = 5. +``` + +- **EN**: Calls FI_FIND_PAYMENT_CONDITIONS with payment terms, document date, posting date and company code to derive the baseline date ZFBDT and cash discount terms GS_SKLIN. +- 호출(파서): FI_FIND_PAYMENT_CONDITIONS +- SAP 객체: FI_FIND_PAYMENT_CONDITIONS, T052 +- 업무 키워드: 지급조건, 지급기준일, 현금할인, 증빙일, 전기일 +- English: Payment Terms, Baseline Date, Cash Discount, FI_FIND_PAYMENT_CONDITIONS +- 정의부(복사 시 함께 필요): [`GS_SKLIN`](#decl-zfir0110_doc-59-gs_sklin), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1193-L1209` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_ZFBDT_INPUT#C1` + +### MODULE SET_GTEXT INPUT — `ZFIR0110_DOC` L1224-L1234 (11줄) + +*사업영역(GSBER) 입력 시 TGSBT 에서 사업영역 텍스트를 조회해 화면에 표시하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 입력된 사업영역(GSBER)의 명칭 GTEXT 를 TGSBT 에서 로그온 언어로 조회하고 없으면 텍스트를 지운다. + +```abap + 1226| SELECT SINGLE GTEXT INTO ZDTV3S_DOC_LIFNR-GTEXT + 1227| FROM TGSBT + 1228| WHERE SPRAS EQ SY-LANGU + 1229| AND GSBER EQ ZDTV3S_DOC_LIFNR-GSBER. + 1230| IF SY-SUBRC NE 0. + 1231| CLEAR : ZDTV3S_DOC_LIFNR-GTEXT. + 1232| ENDIF. +``` + +- **EN**: Reads the business area text GTEXT from TGSBT for the entered GSBER in the logon language, clearing it when not found. +- 테이블(파서): read [TGSBT](/tables/TGSBT.md) / write - +- SAP 객체: TGSBT +- 업무 키워드: 사업영역, 사업영역 텍스트, 전표 입력 +- English: Business Area, TGSBT +- 정의부(복사 시 함께 필요): [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1226-L1232` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_GTEXT_INPUT#C1` + +### MODULE SET_NAME INPUT — `ZFIR0110_DOC` L1238-L1248 (11줄) + +*사업장(BUPLA) 입력 시 J_1BBRANCH 에서 사업장명을 조회해 화면에 표시하는 PAI 모듈이다.* + +> 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·사업장(BUPLA)으로 J_1BBRANCH 에서 사업장명 NAME 을 조회하고 없으면 지운다. + +```abap + 1240| SELECT SINGLE NAME INTO ZDTV3S_DOC_LIFNR-NAME + 1241| FROM J_1BBRANCH + 1242| WHERE BUKRS EQ ZDTV3S_DOC_HEAD-BUKRS + 1243| AND BRANCH EQ ZDTV3S_DOC_LIFNR-BUPLA. + 1244| IF SY-SUBRC NE 0. + 1245| CLEAR : ZDTV3S_DOC_LIFNR-NAME. + 1246| ENDIF. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and BUPLA, clearing it when not found. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 세금계산서, 회사코드 +- English: Business Place, J_1BBRANCH +- 정의부(복사 시 함께 필요): [`NAME`](#decl-zfir0110_doc-94-name), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr), [`ZDTV3S_DOC_HEAD`](#decl-zfir0110_doc-29-zdtv3s_doc_head) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC#L1240-L1246` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC#MODULE#SET_NAME_INPUT#C1` + +### FORM ZTERM_PROCESS — `ZFIR0110_DOC_F01` L343-L362 (20줄) + +*공급업체 라인의 지급조건(ZTERM)으로 T052 에서 지급일수(ZSTG1)를 읽어 ZBD1T 에 설정하는 루틴이다.* + +> 이 unit 의 조각 1개가 9/20줄(45%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 지급조건 마스터 T052 에서 ZTERM 의 첫 번째 지급일수(ZSTG1)를 조회해 공급업체 전표 라인의 지급일수(ZBD1T)로 설정하고, 없으면 비운다. + +```abap + 350| SELECT SINGLE ZSTG1 INTO L_ZSTG1 + 351| FROM T052 + 352| WHERE ZTERM = ZDTV3S_DOC_LIFNR-ZTERM. + 353| + 354| IF SY-SUBRC NE 0. + 355| CLEAR : ZDTV3S_DOC_LIFNR-ZBD1T. + 356| ELSE. + 357| ZDTV3S_DOC_LIFNR-ZBD1T = L_ZSTG1. + 358| ENDIF. +``` + +- **EN**: Look up the first payment days (ZSTG1) of the payment term in T052 and set it as ZBD1T on the vendor document line, clearing it if not found. +- 테이블(파서): read [T052](/tables/T052.md) / write - +- SAP 객체: T052, ZDTV3S_DOC_LIFNR +- 업무 키워드: 지급조건, 지급일수, 공급업체 전표, 현금할인 일수 +- English: Payment Terms, T052, Days 1, Vendor Line Item +- 정의부(복사 시 함께 필요): [`L_ZSTG1`](#decl-zfir0110_doc_f01-345-l_zstg1), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L350-L358` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#FORM#ZTERM_PROCESS#C1` + +### MODULE SET_F4_HKONT INPUT — `ZFIR0110_DOC_F01` L23-L224 (202줄) + +*공급업체 라인의 G/L 조정계정(HKONT) F4 도움말로 THKON 에 허용된 대체 조정계정(Alternative Reconciliation Account) 목록을 보여주고 선택 계정과 계정명(SKAT)을 화면에 반영하는 PAI 모듈이다.* + +> 이 unit 의 조각 4개가 101/202줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] THKON 에서 회사코드 계정과목표(T001-KTOPL)와 기준 조정계정(GV_HKONT)에 허용된 대체 조정계정 목록을 읽는다. + +```abap + 88| SELECT * FROM THKON INTO TABLE HKOTAB + 89| WHERE KTOPL = T001-KTOPL + 90| AND HKONT = L_SAKNR. "Note1742955 +``` + +- **EN**: Read the alternative reconciliation accounts allowed for the chart of accounts and the original reconciliation account from THKON. +- 테이블(파서): read [THKON](/tables/THKON.md) / write - +- SAP 객체: THKON, T001 +- 업무 키워드: 대체 조정계정, 조정계정, 계정과목표, 공급업체 +- English: Alternative Reconciliation Account, THKON, Chart of Accounts +- 정의부(복사 시 함께 필요): [`HKOTAB`](#decl-zfir0110_doc_f01-26-hkotab), [`T001`](#decl-zfir0110_doc-22-t001), [`HKONT`](#decl-zfir0110_doc_f01-62-hkont), [`L_SAKNR`](#decl-zfir0110_doc_f01-66-l_saknr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L88-L90` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C1` + +#### [aggregation] 허용 대체계정마다 계정번호·단축키·READ_HAUPTBUCH_TEXT 로 읽은 SKAT 계정명을 F4 값 테이블(VALTAB)에 넣고, 원래 조정계정이 목록에 없으면 마지막에 추가한다. + +```abap + 111| REFRESH VALTAB. + 112| XORIG = SPACE. + 113| LOOP AT HKOTAB. + 114| VALTAB-FELD = HKOTAB-ABWHK. + 115| APPEND VALTAB. + 116| VALTAB-FELD = HKOTAB-KRZKY. + 117| APPEND VALTAB. + 118| CLEAR HSKAT. + 119| CALL FUNCTION 'READ_HAUPTBUCH_TEXT' + 120| EXPORTING + 121| KONTENPLAN = T001-KTOPL + 122| SACHKONTO = HKOTAB-ABWHK + 123| SPRACHE = SY-LANGU + 124| IMPORTING + 125| TEXT_WA = HSKAT + 126| EXCEPTIONS + 127| OTHERS = 0. + 128| VALTAB-FELD = HSKAT-TXT50. + 129| APPEND VALTAB. + 130| IF HKOTAB-ABWHK = L_SAKNR. "Note1742955 + 131| XORIG = 'X'. + 132| ENDIF. + 133| ENDLOOP. + 134| + 135| *------- Original-Hauptbuchkonto einf#gen ------------------------------ + 136| IF XORIG = SPACE. + 137| VALTAB-FELD = L_SAKNR. "Note1742955 + 138| APPEND VALTAB. + 139| VALTAB-FELD = SPACE. + 140| APPEND VALTAB. + 141| CLEAR HSKAT. + 142| CALL FUNCTION 'READ_HAUPTBUCH_TEXT' + 143| EXPORTING + 144| KONTENPLAN = T001-KTOPL + 145| SACHKONTO = L_SAKNR "Note1742955 + 146| SPRACHE = SY-LANGU + 147| IMPORTING + 148| TEXT_WA = HSKAT + 149| EXCEPTIONS + 150| OTHERS = 0. + 151| VALTAB-FELD = HSKAT-TXT50. + 152| APPEND VALTAB. + 153| ENDIF. +``` + +- **EN**: Build the F4 value table with account, short key and G/L account text (READ_HAUPTBUCH_TEXT) for each alternative account, appending the original reconciliation account if it is not in the list. +- 호출(파서): READ_HAUPTBUCH_TEXT, READ_HAUPTBUCH_TEXT +- SAP 객체: READ_HAUPTBUCH_TEXT, SKAT, THKON +- 업무 키워드: F4 값 목록, 계정명 조회, 대체 조정계정, 원래 조정계정 +- English: G/L Account Text, READ_HAUPTBUCH_TEXT, SKAT, Value Table +- 정의부(복사 시 함께 필요): [`VALTAB`](#decl-zfir0110_doc_f01-38-valtab), [`XORIG`](#decl-zfir0110_doc_f01-65-xorig), [`HKOTAB`](#decl-zfir0110_doc_f01-26-hkotab), [`HSKAT`](#decl-zfir0110_doc_f01-63-hskat), [`T001`](#decl-zfir0110_doc-22-t001), [`L_SAKNR`](#decl-zfir0110_doc_f01-66-l_saknr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L111-L153` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C2` + +#### [fm_call] 화면 필드의 입력 가능 여부를 DYNP_VALUES_READ 로 확인한 뒤 HELP_VALUES_GET_WITH_TABLE 로 대체 조정계정 히트리스트를 띄우고 선택 계정을 ZDTV3S_DOC_LIFNR-HKONT 에 넣는다. + +```abap + 158| PERFORM DYNP_VALUES_READ + 159| USING 'ZDTV3S_DOC_LIFNR-HKONT' F4RC. + 160| + 161| TRANSLATE F4HLP-FIELDINP USING ' XX '. + 162| + 163| *------- Eingabem#glichkeiten anzeigen --------------------------------- + 164| CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE' + 165| EXPORTING + 166| DISPLAY = F4HLP-FIELDINP + 167| FIELDNAME = 'HKONT' + 168| TABNAME = 'ZDTV3S_DOC_LIFNR' + 169| IMPORTING + 170| SELECT_VALUE = HKONT + 171| TABLES + 172| FIELDS = FLDTAB + 173| VALUETAB = VALTAB. + 174| + 175| IF NOT HKONT IS INITIAL. + 176| ZDTV3S_DOC_LIFNR-HKONT = HKONT. +``` + +- **EN**: Check field input status via DYNP_VALUES_READ, show the alternative reconciliation account hit list with HELP_VALUES_GET_WITH_TABLE, and store the chosen account in the vendor line. +- 호출(파서): DYNP_VALUES_READ, HELP_VALUES_GET_WITH_TABLE +- SAP 객체: HELP_VALUES_GET_WITH_TABLE, DYNP_VALUES_READ, ZDTV3S_DOC_LIFNR +- 업무 키워드: F4 히트리스트, 조정계정 선택, 화면 입력 모드 +- English: HELP_VALUES_GET_WITH_TABLE, Reconciliation Account, Search Help +- 정의부(복사 시 함께 필요): [`F4RC`](#decl-zfir0110_doc_f01-50-f4rc), [`F4HLP`](#decl-zfir0110_doc_f01-56-f4hlp), [`HKONT`](#decl-zfir0110_doc_f01-62-hkont), [`FLDTAB`](#decl-zfir0110_doc_f01-32-fldtab), [`VALTAB`](#decl-zfir0110_doc_f01-38-valtab), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L158-L176` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C3` + +#### [sql_select] 선택한 계정번호를 ALPHA 변환 후 SKAT 에서 계정명(TXT50)을 조회하고 DYNP_VALUES_UPDATE 로 화면 필드 ZDTV3S_DOC_LIFNR-TXT50 에 계정명을 표시한다. + +```abap + 184| PERFORM CONVERSION_EXIT_ALPHA_INPUT(ZTR_POOL) USING L_HKONT. + 185| + 186| * 화면 필드 선언 -> 선택된 값을 화면 필드에 뿌려줄때 사용. + 187| DATA: SCR_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. + 188| + 189| DATA: L_TXT50(50). + 190| SELECT SINGLE TXT50 INTO L_TXT50 + 191| FROM SKAT + 192| WHERE SPRAS EQ SY-LANGU + 193| AND KTOPL EQ T001-KTOPL + 194| AND SAKNR EQ L_HKONT. + 195| + 196| SCR_FIELDS-FIELDNAME = 'ZDTV3S_DOC_LIFNR-TXT50'. "반드시 대문자. + 197| SCR_FIELDS-FIELDVALUE = L_TXT50. + 198| APPEND SCR_FIELDS. + 199| + 200| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 201| EXPORTING + 202| DYNAME = SY-CPROG + 203| DYNUMB = SY-DYNNR + 204| TABLES + 205| DYNPFIELDS = SCR_FIELDS + 206| EXCEPTIONS + 207| INVALID_ABAPWORKAREA = 1 + 208| INVALID_DYNPROFIELD = 2 + 209| INVALID_DYNPRONAME = 3 + 210| INVALID_DYNPRONUMMER = 4 + 211| INVALID_REQUEST = 5 + 212| NO_FIELDDESCRIPTION = 6 + 213| UNDEFIND_ERROR = 7 + 214| OTHERS = 8. + 215| + 216| IF SY-SUBRC <> 0. + 217| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 218| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 219| ENDIF. +``` + +- **EN**: Convert the selected account with ALPHA input, read its description from SKAT, and push the text to screen field ZDTV3S_DOC_LIFNR-TXT50 via DYNP_VALUES_UPDATE. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- 호출(파서): CONVERSION_EXIT_ALPHA_INPUT, DYNP_VALUES_UPDATE +- SAP 객체: SKAT, DYNP_VALUES_UPDATE, CONVERSION_EXIT_ALPHA_INPUT +- 업무 키워드: 계정명 조회, G/L 계정 텍스트, 화면 필드 갱신 +- English: G/L Account Text, SKAT, DYNP_VALUES_UPDATE +- 정의부(복사 시 함께 필요): [`L_HKONT`](#decl-zfir0110_doc_f01-180-l_hkont), [`T001`](#decl-zfir0110_doc-22-t001) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L184-L219` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_HKONT_INPUT#C4` + +### MODULE SET_F4_ZTERM INPUT — `ZFIR0110_DOC_F01` L286-L339 (54줄) + +*공급업체 전표 입력 화면에서 지급조건(ZTERM) F4 도움말을 띄우고 선택값에 따른 지급기일(ZBD1T)을 화면 필드에 반영하는 PAI 모듈이다.* + +> 이 unit 의 조각 2개가 40/54줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI 표준 지급조건 F4 도움말 FM FI_F4_ZTERM 을 호출해 사용자가 선택한 지급조건(Payment Term, T052-ZTERM)을 받는다. + +```abap + 296| CALL FUNCTION 'FI_F4_ZTERM' + 297| EXPORTING + 298| I_KOART = KOART + 299| I_ZTERM = L_ZTERM + 300| I_XSHOW = L_XSHOW + 301| IMPORTING + 302| E_ZTERM = ZTERM. +``` + +- **EN**: Invoke the standard FI payment terms search help FI_F4_ZTERM and receive the selected payment term. +- 호출(파서): FI_F4_ZTERM +- SAP 객체: FI_F4_ZTERM, T052 +- 업무 키워드: 지급조건, F4 도움말, 공급업체 전표 +- English: Payment Terms, Search Help, FI_F4_ZTERM +- 정의부(복사 시 함께 필요): [`KOART`](#decl-zfir0110_doc_f01-291-koart), [`L_ZTERM`](#decl-zfir0110_doc_f01-292-l_zterm), [`L_XSHOW`](#decl-zfir0110_doc_f01-293-l_xshow), [`ZTERM`](#decl-zfir0110_doc_f01-294-zterm) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L296-L302` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_ZTERM_INPUT#C1` + +#### [control_flow] 선택된 지급조건을 ZDTV3S_DOC_LIFNR-ZTERM 에 넣고 ZTERM_PROCESS 로 T052 의 지급일수(ZBD1T)를 구한 뒤 DYNP_VALUES_UPDATE 로 화면 필드 ZBD1T 를 갱신한다. + +```abap + 304| IF NOT ZTERM IS INITIAL AND XSHOW IS INITIAL. + 305| ZDTV3S_DOC_LIFNR-ZTERM = ZTERM. + 306| + 307| PERFORM ZTERM_PROCESS. + 308| + 309| DATA: LDAY(3). + 310| LDAY = ZDTV3S_DOC_LIFNR-ZBD1T. + 311| + 312| SCR_FIELDS-FIELDNAME = 'ZDTV3S_DOC_LIFNR-ZBD1T'. "반드시 대문자. + 313| SCR_FIELDS-FIELDVALUE = LDAY. + 314| APPEND SCR_FIELDS. + 315| + 316| CALL FUNCTION 'DYNP_VALUES_UPDATE' + 317| EXPORTING + 318| DYNAME = SY-CPROG + 319| DYNUMB = SY-DYNNR + 320| TABLES + 321| DYNPFIELDS = SCR_FIELDS + 322| EXCEPTIONS + 323| INVALID_ABAPWORKAREA = 1 + 324| INVALID_DYNPROFIELD = 2 + 325| INVALID_DYNPRONAME = 3 + 326| INVALID_DYNPRONUMMER = 4 + 327| INVALID_REQUEST = 5 + 328| NO_FIELDDESCRIPTION = 6 + 329| UNDEFIND_ERROR = 7 + 330| OTHERS = 8. + 331| + 332| IF SY-SUBRC <> 0. + 333| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 334| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 335| ENDIF. + 336| ENDIF. +``` + +- **EN**: Store the chosen payment term in the vendor line, derive the days-1 (ZBD1T) via ZTERM_PROCESS and push it to the screen field with DYNP_VALUES_UPDATE. +- 호출(파서): ZTERM_PROCESS, DYNP_VALUES_UPDATE +- SAP 객체: DYNP_VALUES_UPDATE, ZDTV3S_DOC_LIFNR, T052 +- 업무 키워드: 지급조건 반영, 지급일수, 화면 필드 갱신, 공급업체 라인 +- English: Payment Term, Cash Discount Days, DYNP_VALUES_UPDATE, Vendor Line +- 정의부(복사 시 함께 필요): [`ZTERM`](#decl-zfir0110_doc_f01-294-zterm), [`ZDTV3S_DOC_LIFNR`](#decl-zfir0110_doc-30-zdtv3s_doc_lifnr) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L304-L336` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_ZTERM_INPUT#C2` + +### MODULE SET_F4_BUPLA INPUT — `ZFIR0110_DOC_F01` L368-L458 (91줄) + +*전표 항목의 사업장(BUPLA, Business Place) F4 도움말로 J_1BBRANCH 목록을 보여주고 선택값을 ZDTV3S_DOC_ITEM-BUPLA 에 넣는 PAI 모듈이다.* + +> 이 unit 의 조각 2개가 50/91줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사업장 마스터 J_1BBRANCH 에서 사업장 코드와 명칭을 전부 읽어 F4 표시용 값 테이블(IT_VALUE)로 옮기고, 자료가 없으면 메시지 후 종료한다. + +```abap + 402| SELECT BRANCH NAME INTO TABLE IT_J_1BBRANCH + 403| FROM J_1BBRANCH. + 404| + 405| LOOP AT IT_J_1BBRANCH. + 406| IT_VALUE-TEXT1 = IT_J_1BBRANCH-BRANCH. + 407| IT_VALUE-TEXT2 = IT_J_1BBRANCH-NAME. + 408| APPEND IT_VALUE. + 409| CLEAR IT_VALUE. + 410| ENDLOOP. + 411| + 412| * 검색된 자료의 존재 여부. + 413| IF SY-SUBRC <> 0. + 414| MESSAGE S000 WITH '해당 자료가 없습니다.'. + 415| EXIT. + 416| ENDIF. +``` + +- **EN**: Read all business places (code and name) from J_1BBRANCH into the F4 value list and exit with a message when nothing is found. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, F4 값 목록, 사업장 마스터 +- English: Business Place, J_1BBRANCH, Value List +- 정의부(복사 시 함께 필요): [`NAME`](#decl-zfir0110_doc-94-name), [`IT_J_1BBRANCH`](#decl-zfir0110_doc_f01-383-it_j_1bbranch), [`IT_VALUE`](#decl-zfir0110_doc_f01-388-it_value) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L402-L416` · confidence 0.9 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_BUPLA_INPUT#C1` + +#### [fm_call] 표시 필드(BRANCH 선택, NAME)를 정의하고 HELP_VALUES_GET_NO_DD_NAME 으로 사업장 히트리스트를 띄운 뒤 선택한 사업장을 전표 항목 필드 BUPLA 에 설정한다. + +```abap + 420| IT_FIELDS-TABNAME = 'J_1BBRANCH'. + 421| IT_FIELDS-FIELDNAME = 'BRANCH'. + 422| IT_FIELDS-SELECTFLAG = 'X'. "실제 선택되는 값에 'X' 표시 + 423| APPEND IT_FIELDS. + 424| + 425| + 426| + 427| IT_FIELDS-TABNAME = 'J_1BBRANCH'. + 428| IT_FIELDS-FIELDNAME = 'NAME'. + 429| IT_FIELDS-SELECTFLAG = ' '. + 430| APPEND IT_FIELDS. + 431| + 432| + 433| * F4기능 부분 + 434| CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME' + 435| EXPORTING + 436| SELECTFIELD = SELECTFIELD + 437| IMPORTING + 438| IND = LD_TABIX + 439| SELECT_VALUE = SELECT_VALUE + 440| TABLES + 441| FIELDS = IT_FIELDS + 442| FULL_TABLE = IT_VALUE + 443| EXCEPTIONS + 444| FULL_TABLE_EMPTY = 1 + 445| NO_TABLESTRUCTURE_GIVEN = 2 + 446| NO_TABLEFIELDS_IN_DICTIONARY = 3 + 447| MORE_THEN_ONE_SELECTFIELD = 4 + 448| NO_SELECTFIELD = 5 + 449| OTHERS = 6. + 450| + 451| * Double Click시 값을 화면에 Display + 452| CHECK NOT LD_TABIX IS INITIAL. + 453| READ TABLE IT_VALUE INDEX LD_TABIX. + 454| ZDTV3S_DOC_ITEM-BUPLA = SELECT_VALUE. +``` + +- **EN**: Define hit-list columns and show the business place list via HELP_VALUES_GET_NO_DD_NAME, then set the selected value into ZDTV3S_DOC_ITEM-BUPLA. +- 호출(파서): HELP_VALUES_GET_NO_DD_NAME +- SAP 객체: HELP_VALUES_GET_NO_DD_NAME, ZDTV3S_DOC_ITEM, J_1BBRANCH +- 업무 키워드: F4 히트리스트, 사업장 선택, 전표 항목 +- English: Search Help, HELP_VALUES_GET_NO_DD_NAME, Business Place +- 정의부(복사 시 함께 필요): [`IT_FIELDS`](#decl-zfir0110_doc_f01-375-it_fields), [`SELECTFIELD`](#decl-zfir0110_doc_f01-374-selectfield), [`LD_TABIX`](#decl-zfir0110_doc_f01-377-ld_tabix), [`SELECT_VALUE`](#decl-zfir0110_doc_f01-376-select_value), [`IT_VALUE`](#decl-zfir0110_doc_f01-388-it_value), [`ZDTV3S_DOC_ITEM`](#decl-zfir0110_doc-31-zdtv3s_doc_item) +- 위치: `abap://ZFIR0110_DOC/ZFIR0110_DOC_F01#L420-L454` · confidence 0.85 · `ZFIR0110_DOC#ZFIR0110_DOC_F01#MODULE#SET_F4_BUPLA_INPUT#C2` + +## 정의부 (73건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0110_104P` (1건) + +#### L_LINE — data · L4-L4 {#decl-zfir0110_104p-4-l_line} + +```abap +DATA : L_LINE TYPE I. +``` + +### `ZFIR0110_DOC` (51건) + +#### ICON — type-pool · L20-L20 {#decl-zfir0110_doc-20-icon} + +```abap +TYPE-POOLS: ICON. +``` + +#### T001 — tables · L22-L22 {#decl-zfir0110_doc-22-t001} + +```abap +TABLES : T001 . +``` + +#### T020 — tables · L23-L23 {#decl-zfir0110_doc-23-t020} + +```abap +TABLES: + T020. +``` + +#### ZDTV3T_AP_HEAD — tables · L24-L24 {#decl-zfir0110_doc-24-zdtv3t_ap_head} + +```abap +TABLES: + ZDTV3T_AP_HEAD. +``` + +#### BKPF — tables · L25-L25 {#decl-zfir0110_doc-25-bkpf} + +```abap +TABLES: + BKPF . +``` + +#### BSEC — tables · L26-L26 {#decl-zfir0110_doc-26-bsec} + +```abap +TABLES: + BSEC . +``` + +#### BSEG — tables · L27-L27 {#decl-zfir0110_doc-27-bseg} + +```abap +TABLES: + BSEG . +``` + +#### A003 — tables · L28-L28 {#decl-zfir0110_doc-28-a003} + +```abap +TABLES: + A003 . +``` + +#### ZDTV3S_DOC_HEAD — tables · L29-L29 {#decl-zfir0110_doc-29-zdtv3s_doc_head} + +```abap +TABLES: + ZDTV3S_DOC_HEAD. +``` + +#### ZDTV3S_DOC_LIFNR — tables · L30-L30 {#decl-zfir0110_doc-30-zdtv3s_doc_lifnr} + +```abap +TABLES: + ZDTV3S_DOC_LIFNR. +``` + +#### ZDTV3S_DOC_ITEM — tables · L31-L31 {#decl-zfir0110_doc-31-zdtv3s_doc_item} + +```abap +TABLES: + ZDTV3S_DOC_ITEM. +``` + +#### GT_MAIN — data · L35-L43 {#decl-zfir0110_doc-35-gt_main} + +```abap +DATA: BEGIN OF GT_MAIN OCCURS 0, + MARK LIKE ICON-STATUS, + ZICON(4). + INCLUDE STRUCTURE ZDTV3T_AP_HEAD. +DATA: BELNR LIKE BKPF-BELNR, + GJAHR LIKE BKPF-GJAHR. +DATA: CELLTAB TYPE LVC_T_STYL, + SCOL TYPE LVC_T_SCOL, + END OF GT_MAIN. +``` + +#### GT_TABLE — data · L45-L45 {#decl-zfir0110_doc-45-gt_table} + +```abap +DATA: GT_TABLE LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### GV_HKONT — data · L49-L49 {#decl-zfir0110_doc-49-gv_hkont} + +```abap +DATA: GV_HKONT LIKE BSEG-HKONT. +``` + +#### GT_ITEM — data · L53-L53 {#decl-zfir0110_doc-53-gt_item} + +```abap +DATA : GT_ITEM LIKE ZDTV3S_DOC_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_IMSI — data · L55-L55 {#decl-zfir0110_doc-55-gt_imsi} + +```abap +DATA : GT_IMSI LIKE ZDTV3S_DOC_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### TMP_ITEM — data · L57-L57 {#decl-zfir0110_doc-57-tmp_item} + +```abap +DATA : TMP_ITEM LIKE ZDTV3S_DOC_ITEM. +``` + +#### GS_ITEM_NVV — data · L58-L58 {#decl-zfir0110_doc-58-gs_item_nvv} + +```abap +DATA : GS_ITEM_NVV LIKE ZDTV3S_DOC_ITEM. +``` + +#### GS_SKLIN — data · L59-L59 {#decl-zfir0110_doc-59-gs_sklin} + +```abap +DATA: GS_SKLIN LIKE SKLIN. +``` + +#### TC_100 — controls · L61-L61 {#decl-zfir0110_doc-61-tc_100} + +```abap +CONTROLS TC_100 TYPE TABLEVIEW USING SCREEN '0100'. +``` + +#### IS_INVOICE — data · L63-L74 {#decl-zfir0110_doc-63-is_invoice} + +```abap +DATA : BEGIN OF IS_INVOICE. + INCLUDE STRUCTURE ZDTV3S_HEADKEY. + INCLUDE STRUCTURE ZDTV3S_HEAD_INV. + INCLUDE STRUCTURE ZDTV3S_HEAD_SU. + INCLUDE STRUCTURE ZDTV3S_HEAD_IP. + INCLUDE STRUCTURE ZDTV3S_HEAD_BP. + INCLUDE STRUCTURE ZDTV3S_HEAD_AMT. + INCLUDE STRUCTURE ZDTV3S_HEAD_CONT. + INCLUDE STRUCTURE ZDTV3S_EXT_AP_CUS. + INCLUDE STRUCTURE ZDTV3S_EXT_AP_USR. + INCLUDE STRUCTURE ZDTV3S_EXT_AP_ADD. +DATA: END OF IS_INVOICE. +``` + +#### IT_MSG — data · L77-L77 {#decl-zfir0110_doc-77-it_msg} + +```abap +DATA : IT_MSG TYPE BAPIRETTAB . +``` + +#### IS_MSG — data · L78-L78 {#decl-zfir0110_doc-78-is_msg} + +```abap +DATA: + IS_MSG LIKE BAPIRET2. +``` + +#### G_BUKRS — data · L80-L80 {#decl-zfir0110_doc-80-g_bukrs} + +```abap +DATA : G_BUKRS TYPE BUKRS . +``` + +#### G_BELNR — data · L81-L81 {#decl-zfir0110_doc-81-g_belnr} + +```abap +DATA: + G_BELNR TYPE BELNR_D. +``` + +#### G_GJAHR — data · L82-L82 {#decl-zfir0110_doc-82-g_gjahr} + +```abap +DATA: + G_GJAHR TYPE GJAHR . +``` + +#### G_INV_SEQ — data · L83-L83 {#decl-zfir0110_doc-83-g_inv_seq} + +```abap +DATA: + G_INV_SEQ TYPE ZDTV3E_INV_SEQ. +``` + +#### OK_CODE — data · L84-L84 {#decl-zfir0110_doc-84-ok_code} + +```abap +DATA: + OK_CODE LIKE SY-UCOMM. +``` + +#### G_LINE — data · L85-L85 {#decl-zfir0110_doc-85-g_line} + +```abap +DATA: + G_LINE TYPE I . +``` + +#### G_NVV — data · L86-L86 {#decl-zfir0110_doc-86-g_nvv} + +```abap +DATA: + G_NVV . +``` + +#### G_ZERO — data · L87-L87 {#decl-zfir0110_doc-87-g_zero} + +```abap +DATA: + G_ZERO . +``` + +#### G_HKONT — data · L88-L88 {#decl-zfir0110_doc-88-g_hkont} + +```abap +DATA: + G_HKONT TYPE HKONT. +``` + +#### G_STAT — data · L89-L89 {#decl-zfir0110_doc-89-g_stat} + +```abap +DATA: + G_STAT VALUE 'N'. +``` + +#### VRM — type-pool · L93-L93 {#decl-zfir0110_doc-93-vrm} + +```abap +TYPE-POOLS: VRM. +``` + +#### NAME — data · L94-L94 {#decl-zfir0110_doc-94-name} + +```abap +DATA: NAME TYPE VRM_ID. +``` + +#### LIST — data · L95-L95 {#decl-zfir0110_doc-95-list} + +```abap +DATA: + LIST TYPE VRM_VALUES. +``` + +#### VALUE — data · L96-L96 {#decl-zfir0110_doc-96-value} + +```abap +DATA: + VALUE LIKE LINE OF LIST. +``` + +#### — field-symbol · L100-L100 {#decl-zfir0110_doc-100--fs-} + +```abap +FIELD-SYMBOLS . +``` + +#### FIELD — data · L101-L101 {#decl-zfir0110_doc-101-field} + +```abap +DATA : FIELD(30). +``` + +#### D_ALPHA — macro · L103-L109 {#decl-zfir0110_doc-103-d_alpha} + +```abap +DEFINE D_ALPHA. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &1. +END-OF-DEFINITION. +``` + +#### L_CHAR — data · unit 로컬 · L275-L275 {#decl-zfir0110_doc-275-l_char} + +```abap + DATA : L_CHAR. +``` + +#### L_FIELD — data · unit 로컬 · L277-L277 {#decl-zfir0110_doc-277-l_field} + +```abap + DATA : L_FIELD(30) . +``` + +#### L_POS — data · unit 로컬 · L278-L278 {#decl-zfir0110_doc-278-l_pos} + +```abap +DATA: + L_POS TYPE I. +``` + +#### L_OK — data · unit 로컬 · L631-L631 {#decl-zfir0110_doc-631-l_ok} + +```abap + DATA : L_OK. +``` + +#### L_MODE — data · unit 로컬 · L632-L632 {#decl-zfir0110_doc-632-l_mode} + +```abap + DATA : L_MODE. +``` + +#### LT_BKPF — data · unit 로컬 · L633-L633 {#decl-zfir0110_doc-633-lt_bkpf} + +```abap + DATA : LT_BKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### LT_BSEG — data · unit 로컬 · L634-L634 {#decl-zfir0110_doc-634-lt_bseg} + +```abap + DATA : LT_BSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### LT_MSG — data · unit 로컬 · L635-L635 {#decl-zfir0110_doc-635-lt_msg} + +```abap + DATA : LT_MSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### T_BKPF — data · unit 로컬 · L637-L637 {#decl-zfir0110_doc-637-t_bkpf} + +```abap + DATA : T_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### T_BSEG — data · unit 로컬 · L638-L638 {#decl-zfir0110_doc-638-t_bseg} + +```abap + DATA : T_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### CN — data · unit 로컬 · L823-L823 {#decl-zfir0110_doc-823-cn} + +```abap + DATA: CN LIKE BSEG-BUZEI. +``` + +### `ZFIR0110_DOC_F01` (21건) + +#### HKOTAB — data · unit 로컬 · L26-L28 {#decl-zfir0110_doc_f01-26-hkotab} + +```abap + DATA: BEGIN OF HKOTAB OCCURS 2. + INCLUDE STRUCTURE THKON. + DATA: END OF HKOTAB. +``` + +#### FLDTAB — data · unit 로컬 · L32-L34 {#decl-zfir0110_doc_f01-32-fldtab} + +```abap + DATA: BEGIN OF FLDTAB OCCURS 2. + INCLUDE STRUCTURE HELP_VALUE. + DATA: END OF FLDTAB. +``` + +#### VALTAB — data · unit 로컬 · L38-L40 {#decl-zfir0110_doc_f01-38-valtab} + +```abap + DATA: BEGIN OF VALTAB OCCURS 10, + FELD(50) TYPE C, + END OF VALTAB. +``` + +#### F4RC — data · unit 로컬 · L50-L50 {#decl-zfir0110_doc_f01-50-f4rc} + +```abap +DATA: + F4RC LIKE SY-SUBRC. " Return-Code +``` + +#### F4HLP — data · unit 로컬 · L56-L58 {#decl-zfir0110_doc_f01-56-f4hlp} + +```abap + DATA: BEGIN OF F4HLP OCCURS 1. + INCLUDE STRUCTURE DYNPREAD. + DATA: END OF F4HLP. +``` + +#### HKONT — data · unit 로컬 · L62-L62 {#decl-zfir0110_doc_f01-62-hkont} + +```abap + DATA: HKONT LIKE BSEG-HKONT. +``` + +#### HSKAT — data · unit 로컬 · L63-L63 {#decl-zfir0110_doc_f01-63-hskat} + +```abap +DATA: + HSKAT LIKE SKAT. +``` + +#### XORIG — data · unit 로컬 · L65-L65 {#decl-zfir0110_doc_f01-65-xorig} + +```abap +DATA: + XORIG(1) TYPE C. +``` + +#### L_SAKNR — data · unit 로컬 · L66-L66 {#decl-zfir0110_doc_f01-66-l_saknr} + +```abap +DATA: + L_SAKNR LIKE BSEG-SAKNR. " Note1742955 +``` + +#### L_HKONT — data · unit 로컬 · L180-L180 {#decl-zfir0110_doc_f01-180-l_hkont} + +```abap + DATA: L_HKONT LIKE SKAT-SAKNR. +``` + +#### KOART — data · unit 로컬 · L291-L291 {#decl-zfir0110_doc_f01-291-koart} + +```abap + DATA: KOART LIKE BSEG-KOART. "Rel. acc. type for screen det. +``` + +#### L_ZTERM — data · unit 로컬 · L292-L292 {#decl-zfir0110_doc_f01-292-l_zterm} + +```abap + DATA: L_ZTERM LIKE T052-ZTERM. +``` + +#### L_XSHOW — data · unit 로컬 · L293-L293 {#decl-zfir0110_doc_f01-293-l_xshow} + +```abap + DATA: L_XSHOW LIKE RFCU4-FLAGX. +``` + +#### ZTERM — data · unit 로컬 · L294-L294 {#decl-zfir0110_doc_f01-294-zterm} + +```abap + DATA: ZTERM LIKE T052-ZTERM. +``` + +#### L_ZSTG1 — data · unit 로컬 · L345-L345 {#decl-zfir0110_doc_f01-345-l_zstg1} + +```abap + DATA: L_ZSTG1 LIKE T052-ZSTG1. +``` + +#### SELECTFIELD — data · unit 로컬 · L374-L374 {#decl-zfir0110_doc_f01-374-selectfield} + +```abap + DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### IT_FIELDS — data · unit 로컬 · L375-L375 {#decl-zfir0110_doc_f01-375-it_fields} + +```abap +DATA: + IT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE. +``` + +#### SELECT_VALUE — data · unit 로컬 · L376-L376 {#decl-zfir0110_doc_f01-376-select_value} + +```abap +DATA: + SELECT_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### LD_TABIX — data · unit 로컬 · L377-L377 {#decl-zfir0110_doc_f01-377-ld_tabix} + +```abap +DATA: + LD_TABIX LIKE SY-TABIX. +``` + +#### IT_J_1BBRANCH — data · unit 로컬 · L383-L386 {#decl-zfir0110_doc_f01-383-it_j_1bbranch} + +```abap + DATA : BEGIN OF IT_J_1BBRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF IT_J_1BBRANCH. +``` + +#### IT_VALUE — data · unit 로컬 · L388-L391 {#decl-zfir0110_doc_f01-388-it_value} + +```abap + DATA : BEGIN OF IT_VALUE OCCURS 0, + TEXT1(12), + TEXT2(80), + END OF IT_VALUE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| START-OF-SELECTION | EVENT | ZFIR0110_DOC L120-141 | 0 | 호출 파라미터로 세금계산서 데이터를 세팅(SET_DATA)하는 시작 이벤트다. | +| END-OF-SELECTION | EVENT | ZFIR0110_DOC L142-150 | 0 | 선택 처리 후 전표 입력 화면 0100 을 호출하는 이벤트다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0110_DOC L151-154 | 0 | 화면 0100 의 PF-STATUS 와 타이틀을 설정하는 PBO 모듈이다. | +| EXIT INPUT | MODULE | ZFIR0110_DOC L158-160 | 0 | 화면 0100 을 닫는 EXIT 모듈이다. | +| INIT_DATA OUTPUT | MODULE | ZFIR0110_DOC L164-237 | 2 | 화면 최초 표시 시 회사코드·세금계산서 번호를 검증하고 T001 과 세금계산서(ZDTV3T_AP_HEAD/EXT)를 읽어 화면 초기 데이터를 세팅하는 PBO 모듈이다. | +| MODIFY_DATA INPUT | MODULE | ZFIR0110_DOC L241-248 | 0 | 테이블컨트롤 현재 행의 입력값을 GT_ITEM 내부테이블에 반영하는 PAI 모듈이다. | +| GET_TEXT INPUT | MODULE | ZFIR0110_DOC L252-270 | 1 | 구매처 입력 시 LFB1 에서 조정계정·지급조건을, LFA1 에서 구매처명을 조회해 화면에 채우는 PAI 모듈이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0110_DOC L274-578 | 8 | 화면 0100 의 기능코드(점검·붙여넣기·엔터·1회성/직원 거래처·행 추가/삭제·시뮬레이션·저장)를 처리하는 메인 PAI 모듈이다. | +| CHECK_DATA | FORM | ZFIR0110_DOC L582-619 | 2 | 전표 입력값을 전기 전에 검증한다 — 불공제 세금코드 판정, 과세/영세 세금코드와 세액의 정합성 확인. | +| POST | FORM | ZFIR0110_DOC L623-795 | 4 | 전표 헤더·아이템을 구성한 뒤 시뮬레이션(ZFIR0130 호출) 또는 Z_FI_DOCUMENT_POSTING 실제 전기를 수행하고 성공 시 세금계산서 테이블에 전표번호를 기록하는 FORM 이다. | +| SET_BKPF | FORM | ZFIR0110_DOC L799-816 | 1 | 화면 헤더(ZDTV3S_DOC_HEAD)를 BBKPF 전표 헤더로 옮기고 자동세금계산 해제·세션 종료 플래그를 세팅하는 FORM 이다. | +| SET_BSEG | FORM | ZFIR0110_DOC L820-1047 | 4 | 세금계산서 매입전표의 구매처 항목과 비용 항목을 BBSEG(전기용)와 BSEG(시뮬레이션용) 두 가지 형식으로 구성하는 FORM 이다. | +| MESSAGE_POPUP | FORM | ZFIR0110_DOC L1051-1063 | 1 | FIMSG 구조의 전기 메시지를 BAPIRET 형식(IT_MSG)으로 변환해 팝업용 메시지 테이블을 만드는 FORM 이다. | +| MULTI_MSG_POPUPC | FORM | ZFIR0110_DOC L1067-1075 | 1 | BAPIRET 메시지 테이블을 OXT_MESSAGE_TO_POPUP 으로 팝업 표시하는 헬퍼 FORM 이다. | +| GET_HKONT_TEXT INPUT | MODULE | ZFIR0110_DOC L1079-1101 | 1 | 구매처 항목의 G/L 계정(조정계정)이 THKON 에 등록된 처리대상 계정인지 검증하고 SKAT 에서 계정명을 조회하는 PAI 모듈이다. | +| GET_HKONT_TEXT2 INPUT | MODULE | ZFIR0110_DOC L1105-1124 | 1 | 비용 아이템 G/L 계정(HKONT) 입력 시 SKAT 에서 계정명을 조회하고 없으면 오류로 막는 PAI 모듈이다. | +| SUM_AMT | FORM | ZFIR0110_DOC L1128-1166 | 2 | 구매처 항목과 비용 아이템의 차변·대변 합계를 계산해 전표 균형 여부를 신호등 아이콘으로 표시하는 FORM 이다. | +| INPUT_CHECK INPUT | MODULE | ZFIR0110_DOC L1170-1175 | 0 | 전표 항목 입력값 점검 로직을 INCLUDE ZFIR0110_102P 로 위임하는 PAI 모듈이다. | +| MODIFY_SCREEN OUTPUT | MODULE | ZFIR0110_DOC L1179-1184 | 0 | 화면 속성 변경 로직을 INCLUDE ZFIR0110_103P 로 위임하는 PBO 모듈이다. | +| SET_ZFBDT INPUT | MODULE | ZFIR0110_DOC L1188-1211 | 1 | 지급조건·증빙일·전기일로 FI_FIND_PAYMENT_CONDITIONS 를 호출해 지급기준일(ZFBDT)과 현금할인 조건을 결정하는 PAI 모듈이다. | +| SET_CURSOR OUTPUT | MODULE | ZFIR0110_DOC L1215-1220 | 0 | 커서 위치 설정 로직을 INCLUDE ZFIR0110_104P 로 위임하는 PBO 모듈이다. | +| SET_GTEXT INPUT | MODULE | ZFIR0110_DOC L1224-1234 | 1 | 사업영역(GSBER) 입력 시 TGSBT 에서 사업영역 텍스트를 조회해 화면에 표시하는 PAI 모듈이다. | +| SET_NAME INPUT | MODULE | ZFIR0110_DOC L1238-1248 | 1 | 사업장(BUPLA) 입력 시 J_1BBRANCH 에서 사업장명을 조회해 화면에 표시하는 PAI 모듈이다. | +| SET_ZTERM INPUT | MODULE | ZFIR0110_DOC L1253-1257 | 0 | 지급조건(ZTERM) 입력 시 ZTERM_PROCESS 를 호출해 지급조건 관련 값을 처리하는 PAI 모듈이다. | +| BSEC_CLEAR | FORM | ZFIR0110_DOC L1264-1273 | 0 | 직원 거래처(XZEMP) 해제 시 1회성 거래처 데이터(BSEC)를 지우고 화면 구조에 반영하는 FORM 이다. | +| SET_DATA | FORM | ZFIR0110_DOC_F01 L7-17 | 1 | 호출 프로그램이 ABAP 메모리(ID 'GT_TABLE')에 넘긴 전표 데이터를 IMPORT 하고 비어 있으면 화면을 종료하는 초기화 루틴이다. | +| SET_F4_HKONT INPUT | MODULE | ZFIR0110_DOC_F01 L23-224 | 4 | 공급업체 라인의 G/L 조정계정(HKONT) F4 도움말로 THKON 에 허용된 대체 조정계정(Alternative Reconciliation Account) 목록을 보여주고 선택 계정과 계정명(SKAT)을 화면에 반영하는 PAI 모듈이다. | +| DYNP_VALUES_READ | FORM | ZFIR0110_DOC_F01 L229-252 | 0 | 화면 0100 의 지정 필드 값을 DYNP_VALUES_READ 로 읽어 F4HLP 테이블에 담는 F4 보조 루틴이다. | +| SET_F4_BVTYP INPUT | MODULE | ZFIR0110_DOC_F01 L258-260 | 0 | 은행 유형(BVTYP) F4 용으로 선언된 빈 PAI 모듈(구현 없음)이다. | +| SET_F4_BSCHL INPUT | MODULE | ZFIR0110_DOC_F01 L266-280 | 0 | 전표 항목의 전기키(BSCHL) 드롭다운 목록을 40(차변)/50(대변)으로 VRM_SET_VALUES 에 설정하는 화면 모듈이다. | +| SET_F4_ZTERM INPUT | MODULE | ZFIR0110_DOC_F01 L286-339 | 2 | 공급업체 전표 입력 화면에서 지급조건(ZTERM) F4 도움말을 띄우고 선택값에 따른 지급기일(ZBD1T)을 화면 필드에 반영하는 PAI 모듈이다. | +| ZTERM_PROCESS | FORM | ZFIR0110_DOC_F01 L343-362 | 1 | 공급업체 라인의 지급조건(ZTERM)으로 T052 에서 지급일수(ZSTG1)를 읽어 ZBD1T 에 설정하는 루틴이다. | +| SET_F4_BUPLA INPUT | MODULE | ZFIR0110_DOC_F01 L368-458 | 2 | 전표 항목의 사업장(BUPLA, Business Place) F4 도움말로 J_1BBRANCH 목록을 보여주고 선택값을 ZDTV3S_DOC_ITEM-BUPLA 에 넣는 PAI 모듈이다. | diff --git a/wiki/programs/ZFIR0120.md b/wiki/programs/ZFIR0120.md new file mode 100644 index 0000000..a9eb820 --- /dev/null +++ b/wiki/programs/ZFIR0120.md @@ -0,0 +1,5091 @@ +--- +type: abap-program +title: "ZFIR0120 — 법인카드 청구 정산" +description: "법인카드 승인·매입·청구 내역(외부 연계 테이블 ZUNICT1001/1002/1003)을 SAP 전표와 대조해 정산하고 반제 전표를 생성하는 화면이다. 카드사 청구액과 기표된 비용 전표를 매칭해 헤더/아이템 2단 ALV 로 보여주고, 확정 건에 대해 FB05 BDC 로 반제 전표를 만든다. 정산 결과는 ZFIT0150/0151 에 이력으로 남긴다." +resource: "abap://ZFIR0120" +tags: ["법인카드", "정산", "반제", "대사작업", "경비처리", "채무관리", "FI", "반제전표", "전기", "반제선택", "전표생성", "반제결과", "반제전표번호", "상태아이콘", "오류메시지", "처리일시", "변경분갱신", "청구정산", "미결생성", "전기키"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["BKPF", "BSEG", "CSKT", "J_1BBRANCH", "LFA1", "LTDX", "SKAT", "T001", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0150", "ZFIT0151", "ZFIT0160", "ZUNICT1000", "ZUNICT1001", "ZUNICT1002", "ZUNICT1003"] +x-tables-write: ["GT_HEAD", "GT_ITEM", "ZFIT0150", "ZFIT0151"] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "a47be08b24931e5b2a0286dd36be92cc959d5169a4f8d768d1d810265421669b" +x-unit-count: 113 +x-chunk-count: 67 +x-declaration-count: 316 +--- + +## 업무 목적 + +법인카드 승인·매입·청구 내역(외부 연계 테이블 ZUNICT1001/1002/1003)을 SAP 전표와 대조해 정산하고 반제 전표를 생성하는 화면이다. 카드사 청구액과 기표된 비용 전표를 매칭해 헤더/아이템 2단 ALV 로 보여주고, 확정 건에 대해 FB05 BDC 로 반제 전표를 만든다. 정산 결과는 ZFIT0150/0151 에 이력으로 남긴다. + +## 주 흐름 + +1. ALV 설정을 준비하고 회사코드 권한을 검증한다 (ALV_SETTING → AUTHORITY_BUKRS) +2. 법인카드 승인·매입·청구 내역을 각각 추출한다 (GET_ZUNICT1001 / GET_ZUNICT1002 / GET_ZUNICT1003) +3. 기존 정산 저장내역과 전표 아이템을 읽어 대조 기준을 만든다 (GET_ZFIT0150 → GET_BSEG) +4. 청구액과 전표를 매칭해 헤더/아이템 표시 데이터를 만든다 (DISPLAY_DATA, 461줄) +5. 스플리터 2단 ALV 로 화면 0100 에 출력한다 (SPLITTER_CONTAINER) +6. 확정 건에 대해 반제전표 헤더·아이템을 구성해 FB05 BDC 로 전기한다 (DOCUMENT_POSTING → MAKE_BSELK / MAKE_BKPF / MAKE_BSEG → BDC_FB05) +7. 정산 이력은 별도 화면에서 조회한다 (DISPLAY_DATA_2) + +## 핵심 내부테이블 + +- `GT_HEAD` — 카드 청구 정산 헤더 (채움: DISPLAY_DATA / 소비: SET_FIELD_CATALOGS1) +- `GT_ITEM` — 대조 대상 전표 아이템 (채움: GET_BSEG, DISPLAY_DATA / 소비: SET_FIELD_CATALOGS2, DOCUMENT_POSTING) + +## 테이블 / 외부 호출 + +- read: BKPF, BSEG, CSKT, J_1BBRANCH, LFA1, LTDX, SKAT, T001, T007S, TKA02, USR01, V_USERNAME, ZFIT0150, ZFIT0151, ZFIT0160, ZUNICT1000, ZUNICT1001, ZUNICT1002, ZUNICT1003 +- write: GT_HEAD, GT_ITEM, ZFIT0150, ZFIT0151 +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (67건 / unit 50개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT INITIALIZATION — `ZFIR0120` L32-L54 (23줄) + +*INITIALIZATION 에서 ALV 설정을 준비하고 정산월(전월)·카드사(롯데카드 210)·전기일(당일) 기본값을 설정한다.* + +> 이 unit 의 조각 1개가 9/23줄(39%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 선택화면 기본값으로 정산월 P_SPMON 을 지난달, 카드사 P_COMP 를 '210'(롯데카드), 전표 전기일 P_BUDAT 을 당일로 설정한다. + +```abap + 37| GV_MONTH = SY-DATUM+4(2). + 38| GV_MONTH = GV_MONTH - 1. + 39| CONCATENATE SY-DATUM(4) GV_MONTH INTO P_SPMON. + 40| + 41| * 카드사는 Default 롯데카드 + 42| P_COMP = '210'. + 43| + 44| * 전표의 전기일 Default 현재일자 + 45| P_BUDAT = SY-DATUM. +``` + +- **EN**: Default the selection screen: settlement month to the previous month, card company to '210' (Lotte Card) and posting date to today. +- 업무 키워드: 기본값, 정산월, 카드사, 전기일 +- English: Default Value, Settlement Month, Card Company, Posting Date +- 정의부(복사 시 함께 필요): [`GV_MONTH`](#decl-zfir0120top-129-gv_month), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`P_BUDAT`](#decl-zfir0120top-189-p_budat) +- 위치: `abap://ZFIR0120/ZFIR0120#L37-L45` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#INITIALIZATION#C1` + +### EVENT START-OF-SELECTION — `ZFIR0120` L55-L63 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 57| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 58| + 59| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 위치: `abap://ZFIR0120/ZFIR0120#L57-L59` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0120#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_DATA — `ZFIR0120F01` L9-L49 (41줄) + +*정산월(P_SPMON)로 조회기간 범위를 만들고 전표 생성 모드면 이력·승인·매입·청구·전표 아이템을 읽어 대조 데이터를, 이력조회 모드면 저장 이력을 읽어 표시 데이터를 만든다.* + +> 이 unit 의 조각 2개가 34/41줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 정산월 P_SPMON 의 1일부터 말일(LAST_DAY 매크로)까지를 승인일 조회 범위 R_BUDAT 로 구성한다. + +```abap + 12| R_BUDAT-SIGN = C_I. + 13| R_BUDAT-OPTION = C_BT. + 14| CONCATENATE P_SPMON '01' INTO R_BUDAT-LOW. + 15| LAST_DAY R_BUDAT-LOW R_BUDAT-HIGH. + 16| APPEND R_BUDAT. +``` + +- **EN**: Build the approval date range R_BUDAT from the first to the last day of the settlement month P_SPMON using the LAST_DAY macro. +- 업무 키워드: 정산월, 조회기간, 월말일, 범위 테이블 +- English: Settlement Month, Date Range, Last Day of Month +- 정의부(복사 시 함께 필요): [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`C_I`](#decl-zficom-216-c_i), [`C_BT`](#decl-zficom-246-c_bt), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`LAST_DAY`](#decl-zficom-310-last_day) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L12-L16` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#GET_DATA#C1` + +#### [control_flow] 전표 생성(P_RC)이면 기존 이력(ZFIT0150)·승인(ZUNICT1001)·매입(ZUNICT1002)·청구(ZUNICT1003)·전표 아이템(BSEG)을 순서대로 읽어 DISPLAY_DATA 로 대조하고, 이력조회면 ZFIT0150 과 BSEG 만 읽어 DISPLAY_DATA_2 로 표시한다. + +```abap + 19| IF P_RC EQ C_X. + 20| * 기존 저장내역 추출 + 21| PERFORM GET_ZFIT0150. + 22| + 23| * 법인카드 승인내역 추출 + 24| PERFORM GET_ZUNICT1001. + 25| + 26| * 법인카드 매입내역 추출 + 27| PERFORM GET_ZUNICT1002. + 28| + 29| * 법인카드 청구내역 추출 + 30| PERFORM GET_ZUNICT1003. + 31| + 32| * 전표 아이템 추출 + 33| PERFORM GET_BSEG. + 34| + 35| * Display Data + 36| PERFORM DISPLAY_DATA. + 37| * 이력조회 + 38| ELSE. + 39| * 기존 저장내역 추출 + 40| PERFORM GET_ZFIT0150. + 41| + 42| * 전표 아이템 추출 + 43| PERFORM GET_BSEG. + 44| + 45| * Display Data + 46| PERFORM DISPLAY_DATA_2. + 47| ENDIF. +``` + +- **EN**: In posting mode read settlement history, card approvals, purchases, billing and document items and build the reconciliation display; in history mode read only the saved history and document items for DISPLAY_DATA_2. +- 호출(파서): GET_ZFIT0150, GET_ZUNICT1001, GET_ZUNICT1002, GET_ZUNICT1003, GET_BSEG, DISPLAY_DATA, GET_ZFIT0150, GET_BSEG, DISPLAY_DATA_2 +- SAP 객체: ZFIT0150, ZUNICT1001, ZUNICT1002, ZUNICT1003, BSEG +- 업무 키워드: 전표 생성 모드, 이력조회 모드, 법인카드 정산, 데이터 추출 흐름 +- English: Corporate Card Settlement, Data Retrieval, History Mode, Posting Mode +- 정의부(복사 시 함께 필요): [`P_RC`](#decl-zfir0120top-180-p_rc), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L19-L47` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#GET_DATA#C2` + +### FORM GET_ZFIT0150 — `ZFIR0120F01` L148-L226 (79줄) + +*정산 이력 테이블 ZFIT0150/ZFIT0151 에서 해당 월의 기존 저장내역과 관련 전표 헤더를 읽고, 전표 생성 모드에서 역분개되지 않은 반제전표가 이미 있으면 중복 처리를 막는다.* + +> 이 unit 의 조각 2개가 63/79줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·카드사·정산월 조건으로 정산 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 읽고, 헤더의 반제전표(AUGBL)와 상세의 원전표(BELNR)에 대한 BKPF 헤더를 조회한다. + +```abap + 158| SELECT * + 159| INTO TABLE GT_Z0150 + 160| FROM ZFIT0150 + 161| WHERE BUKRS EQ P_BUKRS + 162| AND COMP EQ P_COMP + 163| AND SPMON EQ P_SPMON. + 164| + 165| * DETAIL + 166| SELECT * + 167| INTO TABLE GT_Z0151 + 168| FROM ZFIT0151 + 169| WHERE BUKRS EQ P_BUKRS + 170| AND COMP EQ P_COMP + 171| AND SPMON EQ P_SPMON. + 172| + 173| CHECK GT_Z0150[] IS NOT INITIAL. + 174| + 175| * 전표 헤더내역 + 176| SELECT * + 177| INTO TABLE GT_BKPF + 178| FROM BKPF + 179| FOR ALL ENTRIES IN GT_Z0150 + 180| WHERE BUKRS EQ P_BUKRS + 181| AND GJAHR EQ GT_Z0150-AUGDT(4) + 182| AND BELNR EQ GT_Z0150-AUGBL. + 183| + 184| SELECT * + 185| INTO TABLE GT_BKPF + 186| FROM BKPF + 187| FOR ALL ENTRIES IN GT_Z0151 + 188| WHERE BUKRS EQ P_BUKRS + 189| AND GJAHR EQ GT_Z0151-GJAHR + 190| AND BELNR EQ GT_Z0151-BELNR. +``` + +- **EN**: Read settlement header ZFIT0150 and detail ZFIT0151 for company code, card company and month, then fetch BKPF headers for the clearing documents and the original documents. +- 테이블(파서): read [ZFIT0150](/tables/ZFIT0150.md), [ZFIT0151](/tables/ZFIT0151.md), [BKPF](/tables/BKPF.md) / write - +- SAP 객체: ZFIT0150, ZFIT0151, BKPF +- 업무 키워드: 정산 이력, 반제전표, 전표 헤더, 정산월 +- English: Settlement History, Clearing Document, BKPF, ZFIT0150 +- 정의부(복사 시 함께 필요): [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L158-L190` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZFIT0150#C1` + +#### [validation] 이력조회(P_RD)면 카드 마스터(ZUNICT1000)를 추가로 읽고, 전표 생성 모드면 기존 반제전표를 모아 BKPF 에서 역분개(STBLG)되지 않은 건이 하나라도 있으면 '기 처리한 이력이 존재합니다' 메시지로 중단해 중복 정산을 막는다. + +```abap + 193| IF P_RD EQ C_X. + 194| SELECT * + 195| APPENDING TABLE GT_Z1000 + 196| FROM ZUNICT1000 + 197| FOR ALL ENTRIES IN GT_Z0150 + 198| WHERE BUKRS EQ P_BUKRS + 199| AND CARDNO EQ GT_Z0150-CARDNO. + 200| * 생성일때 기존반제전표가 생성되어있으면 메시지 + 201| ELSE. + 202| LOOP AT GT_Z0150. + 203| IF GT_Z0150-AUGBL NE SPACE. + 204| LT_DOCU-AUGBL = GT_Z0150-AUGBL. + 205| LT_DOCU-AUGDT = GT_Z0150-AUGDT. + 206| COLLECT LT_DOCU. CLEAR LT_DOCU. + 207| ENDIF. + 208| ENDLOOP. + 209| * 모두 역분개되었을 경우엔 생성가능 + 210| LOOP AT LT_DOCU. + 211| READ TABLE GT_BKPF WITH KEY BELNR = LT_DOCU-AUGBL + 212| GJAHR = LT_DOCU-AUGDT(4). + 213| IF SY-SUBRC EQ 0. + 214| IF GT_BKPF-STBLG EQ SPACE. + 215| MESSAGE S000 WITH '기 처리한 이력이 존재합니다!!' + 216| DISPLAY LIKE C_E. + 217| LEAVE LIST-PROCESSING. + 218| ELSE. + 219| ENDIF. + 220| ENDIF. + 221| ENDLOOP. + 222| ENDIF. +``` + +- **EN**: In history mode read card master ZUNICT1000; in posting mode collect existing clearing documents and, if any is not reversed (BKPF-STBLG empty), stop with the message that a processed history already exists to prevent duplicate settlement. +- 테이블(파서): read [ZUNICT1000](/tables/ZUNICT1000.md) / write - +- SAP 객체: ZUNICT1000, BKPF +- 업무 키워드: 중복 정산 방지, 역분개 확인, 반제전표 존재, 이력조회, 카드 마스터 +- English: Duplicate Check, Reversal, Clearing Document, ZUNICT1000 +- 정의부(복사 시 함께 필요): [`P_RD`](#decl-zfir0120top-182-p_rd), [`C_X`](#decl-zficom-231-c_x), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`LT_DOCU`](#decl-zfir0120f01-149-lt_docu), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L193-L222` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZFIT0150#C2` + +### FORM GET_ZUNICT1001 — `ZFIR0120F01` L55-L83 (29줄) + +*법인카드 승인내역과 카드 마스터, 관련 전표 헤더를 조회한다.* + +> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·카드사·승인일자 범위로 법인카드 승인내역(ZUNICT1001)을 읽고, 해당 카드번호의 카드 마스터(ZUNICT1000)와 이미 기표된 전표 헤더(BKPF)를 FOR ALL ENTRIES 로 함께 읽어 정산 대조 기준을 만든다. + +```abap + 58| SELECT * + 59| INTO TABLE GT_Z1001 + 60| FROM ZUNICT1001 + 61| WHERE BUKRS EQ P_BUKRS + 62| AND COMP EQ P_COMP + 63| AND AP_DATE IN R_BUDAT. + 64| + 65| CHECK GT_Z1001[] IS NOT INITIAL. + 66| * 법인카드 마스터 내역 + 67| SELECT * + 68| APPENDING TABLE GT_Z1000 + 69| FROM ZUNICT1000 + 70| FOR ALL ENTRIES IN GT_Z1001 + 71| WHERE BUKRS EQ P_BUKRS + 72| AND CARDNO EQ GT_Z1001-CARDNO. + 73| + 74| * 전표 헤더내역 + 75| SELECT * + 76| APPENDING TABLE GT_BKPF + 77| FROM BKPF + 78| FOR ALL ENTRIES IN GT_Z1001 + 79| WHERE BUKRS EQ P_BUKRS + 80| AND GJAHR EQ GT_Z1001-GJAHR + 81| AND BELNR EQ GT_Z1001-BELNR. +``` + +- **EN**: Reads corporate-card authorizations (ZUNICT1001) plus the card master (ZUNICT1000) and already-posted document headers (BKPF) as the reconciliation basis. +- 테이블(파서): read [ZUNICT1001](/tables/ZUNICT1001.md), [ZUNICT1000](/tables/ZUNICT1000.md), [BKPF](/tables/BKPF.md) / write - +- SAP 객체: ZUNICT1001, ZUNICT1000, BKPF, CARDNO +- 업무 키워드: 법인카드, 카드승인내역, 승인일자, 카드마스터, 전표헤더, 정산대조 +- English: corporate card, card authorization, card master, document header, reconciliation +- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf) +- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L58-L81` · confidence 0.88 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1001#C1` + +### FORM GET_ZUNICT1002 — `ZFIR0120F01` L89-L117 (29줄) + +*회사코드·카드사·정산월 조건으로 법인카드 매입내역(ZUNICT1002)을 읽고 카드 마스터(ZUNICT1000)와 기표 전표 헤더(BKPF)를 추가 조회한다.* + +> 이 unit 의 조각 1개가 24/29줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·카드사·승인일 범위로 법인카드 매입내역 ZUNICT1002 를 읽은 뒤 해당 카드의 마스터 ZUNICT1000 과 매입건에 기표된 회계전표 헤더 BKPF(회사코드·연도·전표번호)를 FOR ALL ENTRIES 로 APPENDING 한다. + +```abap + 92| SELECT * + 93| INTO TABLE GT_Z1002 + 94| FROM ZUNICT1002 + 95| WHERE BUKRS EQ P_BUKRS + 96| AND COMP EQ P_COMP + 97| AND AP_DATE IN R_BUDAT. + 98| + 99| CHECK GT_Z1002[] IS NOT INITIAL. + 100| * 법인카드 마스터 내역 + 101| SELECT * + 102| APPENDING TABLE GT_Z1000 + 103| FROM ZUNICT1000 + 104| FOR ALL ENTRIES IN GT_Z1002 + 105| WHERE BUKRS EQ P_BUKRS + 106| AND CARDNO EQ GT_Z1002-CARDNO. + 107| + 108| * 전표 헤더내역 + 109| SELECT * + 110| APPENDING TABLE GT_BKPF + 111| FROM BKPF + 112| FOR ALL ENTRIES IN GT_Z1002 + 113| WHERE BUKRS EQ P_BUKRS + 114| AND GJAHR EQ GT_Z1002-GJAHR + 115| AND BELNR EQ GT_Z1002-BELNR. +``` + +- **EN**: Select corporate card purchase records from ZUNICT1002 by company code, card company and approval date range, then append the card master ZUNICT1000 and the posted FI document headers BKPF for those records. +- 테이블(파서): read [ZUNICT1002](/tables/ZUNICT1002.md), [ZUNICT1000](/tables/ZUNICT1000.md), [BKPF](/tables/BKPF.md) / write - +- SAP 객체: ZUNICT1002, ZUNICT1000, BKPF +- 업무 키워드: 법인카드 매입내역, 카드 마스터, 전표 헤더, 기표 전표 +- English: Corporate Card, Purchase Data, Card Master, BKPF +- 정의부(복사 시 함께 필요): [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf) +- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L92-L115` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1002#C1` + +### FORM GET_ZUNICT1003 — `ZFIR0120F01` L123-L142 (20줄) + +*회사코드·카드사·정산월 조건으로 법인카드 청구내역(ZUNICT1003)을 읽고 해당 카드의 카드 마스터(ZUNICT1000)를 추가 조회한다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·카드사(COMP)·승인일 범위(R_BUDAT)로 법인카드 청구내역 ZUNICT1003 을 GT_Z1003 에 읽고, 청구건의 카드번호로 법인카드 마스터 ZUNICT1000 을 GT_Z1000 에 APPENDING 한다. + +```abap + 126| SELECT * + 127| INTO TABLE GT_Z1003 + 128| FROM ZUNICT1003 + 129| WHERE BUKRS EQ P_BUKRS + 130| AND COMP EQ P_COMP + 131| AND AP_DATE IN R_BUDAT. + 132| + 133| CHECK GT_Z1003[] IS NOT INITIAL. + 134| * 법인카드 마스터 내역 + 135| SELECT * + 136| APPENDING TABLE GT_Z1000 + 137| FROM ZUNICT1000 + 138| FOR ALL ENTRIES IN GT_Z1003 + 139| WHERE BUKRS EQ P_BUKRS + 140| AND CARDNO EQ GT_Z1003-CARDNO. +``` + +- **EN**: Select corporate card billing records from ZUNICT1003 by company code, card company and approval date range, then append the matching card master records from ZUNICT1000 for all entries. +- 테이블(파서): read [ZUNICT1003](/tables/ZUNICT1003.md), [ZUNICT1000](/tables/ZUNICT1000.md) / write - +- SAP 객체: ZUNICT1003, ZUNICT1000 +- 업무 키워드: 법인카드 청구내역, 카드 마스터, 카드사, 승인일 +- English: Corporate Card, Billing Data, Card Master, FOR ALL ENTRIES +- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`GT_Z1003`](#decl-zfir0120top-94-gt_z1003), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`R_BUDAT`](#decl-zfir0120top-132-r_budat), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000) +- 선언을 못 찾은 이름: AP_DATE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L126-L140` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_ZUNICT1003#C1` + +### FORM GET_BSEG — `ZFIR0120F01` L232-L278 (47줄) + +*카드 마스터를 중복 제거한 뒤 카드사 공급업체(LFA1)·회사코드(T001)·관리회계영역(TKA02)·코스트센터 텍스트(CSKT)를 읽고, 전표 헤더 기준으로 전표 아이템(BSEG)을 조회한다.* + +> 이 unit 의 조각 2개가 38/47줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 카드 마스터(GT_Z1000)를 회사코드·카드번호로 중복 제거한 뒤 카드사 공급업체 정보(LFA1 사업자번호·이름), 회사코드 T001, 관리회계영역 TKA02 를 읽고 그 KOKRS 로 코스트센터 텍스트(CSKT)를 조회한다. + +```abap + 237| SORT GT_Z1000 BY BUKRS CARDNO. + 238| DELETE ADJACENT DUPLICATES FROM GT_Z1000 COMPARING BUKRS CARDNO. + 239| + 240| IF GT_Z1000[] IS NOT INITIAL. + 241| SELECT LIFNR STCD2 NAME1 + 242| INTO TABLE GT_LFA1 + 243| FROM LFA1 + 244| FOR ALL ENTRIES IN GT_Z1000 + 245| WHERE LIFNR EQ GT_Z1000-LIFNR. + 246| + 247| SELECT SINGLE * + 248| FROM T001 + 249| WHERE BUKRS EQ P_BUKRS. + 250| + 251| SELECT SINGLE * + 252| FROM TKA02 + 253| WHERE BUKRS EQ P_BUKRS. + 254| + 255| SELECT KOSTL LTEXT + 256| INTO TABLE GT_CSKT + 257| FROM CSKT + 258| FOR ALL ENTRIES IN GT_Z1000 + 259| WHERE SPRAS EQ SY-LANGU + 260| AND KOKRS EQ TKA02-KOKRS + 261| AND KOSTL EQ GT_Z1000-KOSTL. + 262| ENDIF. +``` + +- **EN**: Deduplicate the card master by company code and card number, then read vendor name/tax number from LFA1, company code T001, controlling area TKA02 and cost center texts from CSKT for the cards' cost centers. +- 테이블(파서): read [LFA1](/tables/LFA1.md), [T001](/tables/T001.md), [TKA02](/tables/TKA02.md), [CSKT](/tables/CSKT.md) / write - +- SAP 객체: LFA1, T001, TKA02, CSKT +- 업무 키워드: 카드사 공급업체, 코스트센터 텍스트, 관리회계영역, 회사코드, 중복 제거 +- English: Vendor Master, LFA1, Cost Center Text, CSKT, Controlling Area +- 정의부(복사 시 함께 필요): [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`GT_LFA1`](#decl-zfir0120top-110-gt_lfa1), [`LFA1`](#decl-zficom-36-lfa1), [`T001`](#decl-zficom-11-t001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`TKA02`](#decl-zfir0120top-11-tka02), [`GT_CSKT`](#decl-zfir0120top-117-gt_cskt) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L237-L262` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_BSEG#C1` + +#### [sql_select] 전표 헤더(GT_BKPF)를 중복 제거하고 그 전표들의 아이템(BSEG)을 회사코드·연도·전표번호로 읽어 반제 대상 채무 라인과 할인 계정 라인 대조에 사용한다. + +```abap + 265| SORT GT_BKPF BY BUKRS GJAHR BELNR. + 266| DELETE ADJACENT DUPLICATES FROM GT_BKPF COMPARING BUKRS GJAHR BELNR. + 267| + 268| CHECK GT_BKPF[] IS NOT INITIAL. + 269| + 270| SELECT * + 271| INTO TABLE GT_BSEG + 272| FROM BSEG + 273| FOR ALL ENTRIES IN GT_BKPF + 274| WHERE BUKRS EQ P_BUKRS + 275| AND GJAHR EQ GT_BKPF-GJAHR + 276| AND BELNR EQ GT_BKPF-BELNR. +``` + +- **EN**: Deduplicate the document headers and select all BSEG line items for those documents to identify vendor lines for clearing and G/L lines for discounts. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write - +- SAP 객체: BSEG, BKPF +- 업무 키워드: 전표 아이템, 반제 대상 라인, 전표 헤더 중복 제거 +- English: BSEG, Line Items, FOR ALL ENTRIES, Clearing +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L265-L276` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#GET_BSEG#C2` + +### FORM DISPLAY_DATA — `ZFIR0120F01` L284-L744 (461줄) + +*카드 매입내역(ZUNICT1002)을 기준으로 승인·청구 내역과 기표 전표(BKPF/BSEG)를 대조해 처리금액·대상금액·청구·할인·차액·미청구액을 계산하고 아이템(GT_ITEM)과 카드별 헤더(GT_HEAD)를 만든다(1/2 창).* + +> 이 unit 의 조각 8개가 424/461줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 승인번호가 있는 매입내역마다 취소(PU_STAT='0')면 음수 매입금액으로 GT_ITEM 을 만들고, 기표 전표가 있으면 처리금액(AMT_A)·역분개 여부(BKPF STBLG/STJAH)·반제용 채무 라인(BSEG KOART='K' BUZEI)을 확인하며 카드 마스터·카드사명(LFA1)·코스트센터명(CSKT)을 붙인다. + +```abap + 296| LOOP AT GT_Z1002. + 297| * 승인번호가 없는 경우 제외 + 298| CHECK GT_Z1002-AP_NUM NE SPACE. + 299| + 300| CLEAR GT_ITEM. + 301| GT_ITEM-BUKRS = GT_Z1002-BUKRS. + 302| GT_ITEM-COMP = GT_Z1002-COMP. + 303| GT_ITEM-CARDNO = GT_Z1002-CARDNO. + 304| GT_ITEM-AP_DATE = GT_Z1002-AP_DATE. + 305| GT_ITEM-AP_NUM = GT_Z1002-AP_NUM. + 306| GT_ITEM-PU_NUM = GT_Z1002-PU_NUM. + 307| IF GT_Z1002-PU_STAT EQ C_0. "취소 + 308| GT_ITEM-PU_AMT = 0 - GT_Z1002-PU_AMT. + 309| ELSE. + 310| GT_ITEM-PU_AMT = GT_Z1002-PU_AMT. + 311| ENDIF. + 312| GT_ITEM-BELNR = GT_Z1002-BELNR. + 313| GT_ITEM-GJAHR = GT_Z1002-GJAHR. + 314| * 처리금액 + 315| IF GT_ITEM-BELNR NE SPACE. + 316| GT_ITEM-AMT_A = GT_ITEM-PU_AMT. + 317| * 역분개 되었는지 체크 + 318| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS + 319| GJAHR = GT_Z1002-GJAHR + 320| BELNR = GT_Z1002-BELNR. + 321| IF SY-SUBRC EQ 0. + 322| GT_ITEM-STBLG = GT_BKPF-STBLG. + 323| GT_ITEM-STJAH = GT_BKPF-STJAH. + 324| ENDIF. + 325| * 반제위해 항목추출 + 326| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 327| GJAHR = GT_Z1002-GJAHR + 328| BELNR = GT_Z1002-BELNR + 329| KOART = C_K. + 330| IF SY-SUBRC EQ 0. + 331| GT_ITEM-BUZEI = GT_BSEG-BUZEI. + 332| ENDIF. + 333| + 334| ENDIF. + 335| + 336| * 카드정보 + 337| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS + 338| CARDNO = GT_Z1002-CARDNO. + 339| IF SY-SUBRC EQ 0. + 340| GT_ITEM-LIFNR = GT_Z1000-LIFNR. + 341| GT_ITEM-KOSTL = GT_Z1000-KOSTL. + 342| GT_ITEM-CUSER = GT_Z1000-CUSER. + 343| * 카드사명 + 344| IF GT_ITEM-LIFNR NE SPACE. + 345| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR. + 346| IF SY-SUBRC EQ 0. + 347| GT_ITEM-STCD2 = GT_LFA1-STCD2. + 348| GT_ITEM-LIFNR_T = GT_LFA1-NAME1. + 349| ENDIF. + 350| ENDIF. + 351| * 코스트센터명 + 352| IF GT_ITEM-KOSTL NE SPACE. + 353| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL. + 354| IF SY-SUBRC EQ 0. + 355| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT. + 356| ENDIF. + 357| ENDIF. + 358| ENDIF. +``` + +- **EN**: For each purchase record with an approval number build an item with sign-adjusted purchase amount; if an FI document exists set processed amount AMT_A, reversal status from BKPF and the vendor line (KOART='K') from BSEG for clearing, and enrich with card master, vendor name and cost center text. +- SAP 객체: ZUNICT1002, ZUNICT1000, BKPF, BSEG, LFA1, CSKT +- 업무 키워드: 법인카드 매입내역, 취소 매입, 처리금액, 역분개 확인, 반제 대상 라인, 카드 마스터 +- English: Corporate Card, Purchase Data, Reversal Check, Vendor Line Item, ZUNICT1002 +- 정의부(복사 시 함께 필요): [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`C_0`](#decl-zficom-234-c_0), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_K`](#decl-zficom-218-c_k), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000) 외 2건 +- 위치: `abap://ZFIR0120/ZFIR0120F01#L296-L358` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C1` + +#### [calculation] 매입건에 대응하는 승인내역(GT_Z1001)을 찾아 취소 반영 승인금액을 잡고 매입쪽 전표가 없으면 승인쪽 전표로 처리금액·역분개·채무 라인을 확인한 뒤 매칭된 승인건을 LT_Z1001 에서 제거하고, 청구내역(GT_Z1003)에서 청구금액(REQ_AMT)을 가져오며 매칭된 청구건을 LT_Z1003 에서 제거한다. + +```abap + 361| READ TABLE GT_Z1001 WITH KEY BUKRS = P_BUKRS + 362| COMP = P_COMP + 363| CARDNO = GT_Z1002-CARDNO + 364| AP_DATE = GT_Z1002-AP_DATE + 365| AP_NUM = GT_Z1002-AP_NUM. + 366| IF SY-SUBRC EQ 0. + 367| IF GT_Z1001-AP_STAT EQ C_0. "취소 + 368| GT_ITEM-AP_AMT = 0 - GT_Z1001-AP_AMT. + 369| ELSE. + 370| GT_ITEM-AP_AMT = GT_Z1001-AP_AMT. + 371| ENDIF. + 372| + 373| * 전표번호가 없는 경우 승인쪽 전표 + 374| IF GT_ITEM-BELNR IS INITIAL. + 375| GT_ITEM-BELNR = GT_Z1001-BELNR. + 376| GT_ITEM-GJAHR = GT_Z1001-GJAHR. + 377| * 처리금액 + 378| IF GT_ITEM-BELNR NE SPACE. + 379| GT_ITEM-AMT_A = GT_ITEM-AP_AMT. + 380| + 381| * 역분개 되었는지 체크 + 382| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS + 383| GJAHR = GT_Z1001-GJAHR + 384| BELNR = GT_Z1001-BELNR. + 385| IF SY-SUBRC EQ 0. + 386| GT_ITEM-STBLG = GT_BKPF-STBLG. + 387| GT_ITEM-STJAH = GT_BKPF-STJAH. + 388| ENDIF. + 389| * 반제위해 항목추출 + 390| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 391| GJAHR = GT_Z1001-GJAHR + 392| BELNR = GT_Z1001-BELNR + 393| KOART = C_K. + 394| IF SY-SUBRC EQ 0. + 395| GT_ITEM-BUZEI = GT_BSEG-BUZEI. + 396| ENDIF. + 397| + 398| ENDIF. + 399| ENDIF. + 400| + 401| DELETE LT_Z1001 WHERE BUKRS EQ P_BUKRS + 402| AND COMP EQ P_COMP + 403| AND CARDNO EQ GT_Z1002-CARDNO + 404| AND AP_DATE EQ GT_Z1002-AP_DATE + 405| AND AP_NUM EQ GT_Z1002-AP_NUM. + 406| ENDIF. + 407| + 408| * 청구데이터 추출 + 409| READ TABLE GT_Z1003 WITH KEY BUKRS = P_BUKRS + 410| COMP = P_COMP + 411| CARDNO = GT_Z1002-CARDNO + 412| AP_DATE = GT_Z1002-AP_DATE + 413| AP_NUM = GT_Z1002-AP_NUM + 414| PU_NUM = GT_Z1002-PU_NUM. + 415| IF SY-SUBRC EQ 0. + 416| GT_ITEM-REQ_AMT = GT_Z1003-REQ_AMT. + 417| + 418| DELETE LT_Z1003 WHERE BUKRS EQ P_BUKRS + 419| AND COMP EQ P_COMP + 420| AND CARDNO EQ GT_Z1002-CARDNO + 421| AND AP_DATE EQ GT_Z1002-AP_DATE + 422| AND AP_NUM EQ GT_Z1002-AP_NUM + 423| AND PU_NUM EQ GT_Z1002-PU_NUM. + 424| ENDIF. +``` + +- **EN**: Match the purchase to its approval record (sign-adjusted amount, fall back to the approval-side document for processed amount, reversal and vendor line) and remove it from LT_Z1001; then match the billing record to take the billed amount and remove it from LT_Z1003. +- SAP 객체: ZUNICT1001, ZUNICT1003, BKPF, BSEG +- 업무 키워드: 승인내역 매칭, 청구내역 매칭, 청구금액, 취소 승인, 매칭 제거 +- English: Approval Data, Billing Data, Matching, ZUNICT1001, ZUNICT1003 +- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`C_0`](#decl-zficom-234-c_0), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg) 외 5건 +- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L361-L424` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C2` + +#### [calculation] 대상금액(AMT_B=매입금액)과 기존 이력(ZFIT0151)의 기반제액(AMT_E)을 잡고 청구금액·할인(대상-청구)·잔액·차액(처리-청구-할인)·미청구액을 계산하며, 전표가 있고 할인이 있으면 BSEG G/L 라인(KOART='S')의 계정·코스트센터를 할인 전표용으로 저장한 뒤 차이자료 옵션에 따라 GT_ITEM 추가 및 카드별 GT_HEAD COLLECT 한다. + +```abap + 427| GT_ITEM-AMT_B = GT_ITEM-PU_AMT. + 428| * 기반제액 + 429| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS + 430| COMP = P_COMP + 431| CARDNO = GT_Z1002-CARDNO + 432| AP_DATE = GT_Z1002-AP_DATE + 433| AP_NUM = GT_Z1002-AP_NUM + 434| PU_NUM = GT_Z1002-PU_NUM. + 435| IF SY-SUBRC EQ 0. + 436| IF GT_Z0151-AUGBL NE SPACE. + 437| GT_ITEM-AMT_E = GT_ITEM-AMT_A. + 438| ENDIF. + 439| ENDIF. + 440| + 441| * 청구금액 + 442| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT. + 443| * 할인금액(대상금액 - 청구금액) + 444| IF GT_ITEM-REQ_AMT IS NOT INITIAL. + 445| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT. + 446| ENDIF. + 447| * 잔액(청구금액 - 할인금액) + 448| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G. + 449| * 차액(처리금액 - 청구금액 - 할인금액) + 450| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 451| * 미청구액(대상금액 - 청구금액 - 할인금액) + 452| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 453| + 454| * 전표번호가 있음서 할인금액 있는 경우 + 455| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-AMT_G IS NOT INITIAL. + 456| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 457| GJAHR = GT_ITEM-GJAHR + 458| BELNR = GT_ITEM-BELNR + 459| KOART = C_S. + 460| IF SY-SUBRC EQ 0. + 461| GT_ITEM-HKONT = GT_BSEG-HKONT. + 462| GT_ITEM-KOSTL2 = GT_BSEG-KOSTL. + 463| ENDIF. + 464| ENDIF. + 465| + 466| * 차이자료 + 467| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL. + 468| CONTINUE. + 469| ENDIF. + 470| + 471| APPEND GT_ITEM. + 472| + 473| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD. + 474| COLLECT GT_HEAD. CLEAR GT_HEAD. +``` + +- **EN**: Set target amount and already-cleared amount from ZFIT0151, compute billed, discount, remainder, difference and unbilled amounts, take G/L account and cost center from the BSEG G/L line (KOART='S') when a discount exists, then append to GT_ITEM (skipping zero-difference rows in difference mode) and COLLECT into the per-card header GT_HEAD. +- SAP 객체: ZFIT0151, BSEG +- 업무 키워드: 청구할인, 차액 계산, 미청구액, 기반제액, 할인 계정, 카드별 합계 +- English: Discount Amount, Difference, Unbilled Amount, G/L Line Item, COLLECT +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1002`](#decl-zfir0120top-9-zunict1002), [`GT_Z1002`](#decl-zfir0120top-93-gt_z1002), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_S`](#decl-zficom-226-c_s), [`P_RB`](#decl-zfir0120top-171-p_rb), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head) +- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L427-L474` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C3` + +#### [aggregation] 청구내역(LT_Z1003) 중 승인번호가 있는 건만 GT_ITEM 기본 필드(카드번호·승인일·승인번호·매입번호·청구금액)에 옮기고 카드 마스터(GT_Z1000)에서 카드사 공급업체·코스트센터·사용자를, LFA1 에서 카드사명·사업자번호를, CSKT 에서 코스트센터명을 붙인다. + +```abap + 479| LOOP AT LT_Z1003. + 480| + 481| * 승인번호가 없는 경우 제외 + 482| CHECK LT_Z1003-AP_NUM NE SPACE. + 483| + 484| CLEAR GT_ITEM. + 485| GT_ITEM-BUKRS = LT_Z1003-BUKRS. + 486| GT_ITEM-COMP = LT_Z1003-COMP. + 487| GT_ITEM-CARDNO = LT_Z1003-CARDNO. + 488| GT_ITEM-AP_DATE = LT_Z1003-AP_DATE. + 489| GT_ITEM-AP_NUM = LT_Z1003-AP_NUM. + 490| GT_ITEM-PU_NUM = LT_Z1003-PU_NUM. + 491| GT_ITEM-REQ_AMT = LT_Z1003-REQ_AMT. + 492| + 493| * 카드정보 + 494| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS + 495| CARDNO = LT_Z1003-CARDNO. + 496| IF SY-SUBRC EQ 0. + 497| GT_ITEM-LIFNR = GT_Z1000-LIFNR. + 498| GT_ITEM-KOSTL = GT_Z1000-KOSTL. + 499| GT_ITEM-CUSER = GT_Z1000-CUSER. + 500| * 카드사명 + 501| IF GT_ITEM-LIFNR NE SPACE. + 502| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR. + 503| IF SY-SUBRC EQ 0. + 504| GT_ITEM-STCD2 = GT_LFA1-STCD2. + 505| GT_ITEM-LIFNR_T = GT_LFA1-NAME1. + 506| ENDIF. + 507| ENDIF. + 508| * 코스트센터명 + 509| IF GT_ITEM-KOSTL NE SPACE. + 510| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL. + 511| IF SY-SUBRC EQ 0. + 512| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT. + 513| ENDIF. + 514| ENDIF. + 515| ENDIF. +``` + +- **EN**: For each billing record with an approval number fill the item key fields and enrich with card master data (vendor, cost center, user), vendor name/tax number from LFA1 and cost center text from CSKT. +- SAP 객체: ZUNICT1003, ZUNICT1000, LFA1, CSKT +- 업무 키워드: 법인카드 청구내역, 카드 마스터, 카드사, 코스트센터, 승인번호 +- English: Corporate Card, Billing Data, Vendor, Cost Center, ZUNICT1003 +- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`GT_LFA1`](#decl-zfir0120top-110-gt_lfa1), [`GT_CSKT`](#decl-zfir0120top-117-gt_cskt) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L479-L515` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C4` + +#### [calculation] 청구건에 대응하는 승인내역(GT_Z1001)을 찾아 취소(AP_STAT='0')면 음수 승인금액으로 하고, 전표가 기표된 건은 처리금액(AMT_A)과 역분개 여부(BKPF STBLG)·반제용 채무 라인(BSEG KOART='K')을 확인하며, 특정 가맹점 사업자번호(3개)를 제외하고 대상금액(AMT_B)을 설정한 뒤 매칭된 승인건을 LT_Z1001 에서 제거한다. + +```abap + 518| READ TABLE GT_Z1001 WITH KEY BUKRS = P_BUKRS + 519| COMP = P_COMP + 520| CARDNO = LT_Z1003-CARDNO + 521| AP_DATE = LT_Z1003-AP_DATE + 522| AP_NUM = LT_Z1003-AP_NUM. + 523| IF SY-SUBRC EQ 0. + 524| IF GT_Z1001-AP_STAT EQ C_0. "취소 + 525| GT_ITEM-AP_AMT = 0 - GT_Z1001-AP_AMT. + 526| ELSE. + 527| GT_ITEM-AP_AMT = GT_Z1001-AP_AMT. + 528| ENDIF. + 529| + 530| GT_ITEM-BELNR = GT_Z1001-BELNR. + 531| GT_ITEM-GJAHR = GT_Z1001-GJAHR. + 532| * 처리금액 + 533| IF GT_ITEM-BELNR NE SPACE. + 534| GT_ITEM-AMT_A = GT_ITEM-AP_AMT. + 535| + 536| * 역분개 되었는지 체크 + 537| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS + 538| GJAHR = GT_Z1001-GJAHR + 539| BELNR = GT_Z1001-BELNR. + 540| IF SY-SUBRC EQ 0. + 541| GT_ITEM-STBLG = GT_BKPF-STBLG. + 542| GT_ITEM-STJAH = GT_BKPF-STJAH. + 543| ENDIF. + 544| * 반제위해 항목추출 + 545| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 546| GJAHR = GT_Z1001-GJAHR + 547| BELNR = GT_Z1001-BELNR + 548| KOART = C_K. + 549| IF SY-SUBRC EQ 0. + 550| GT_ITEM-BUZEI = GT_BSEG-BUZEI. + 551| ENDIF. + 552| + 553| ENDIF. + 554| + 555| * 가맹점사업자번호가 '1048116860' '1238191439' '1088158902'인 경우 + 556| * 대상금액 무조건 매입금액 + 557| IF GT_Z1001-STREGNO EQ '1048116860' OR + 558| GT_Z1001-STREGNO EQ '1238191439' OR + 559| GT_Z1001-STREGNO EQ '1088158902'. + 560| ELSE. + 561| GT_ITEM-AMT_B = GT_ITEM-AP_AMT. + 562| ENDIF. + 563| + 564| DELETE LT_Z1001 WHERE BUKRS EQ P_BUKRS + 565| AND COMP EQ P_COMP + 566| AND CARDNO EQ LT_Z1003-CARDNO + 567| AND AP_DATE EQ LT_Z1003-AP_DATE + 568| AND AP_NUM EQ LT_Z1003-AP_NUM. + 569| ENDIF. +``` + +- **EN**: Match the billing record to its approval record: negate the amount for cancellations, set processed amount AMT_A when an FI document exists, look up reversal status in BKPF and the vendor line (KOART='K') in BSEG for clearing, set target amount AMT_B except for three excluded merchant registration numbers, and remove the matched approval from LT_Z1001. +- SAP 객체: ZUNICT1001, BKPF, BSEG +- 업무 키워드: 승인내역 매칭, 취소 승인, 처리금액, 역분개 확인, 반제 대상 라인, 가맹점 제외 +- English: Approval Data, Reversal Check, Vendor Line Item, Target Amount, ZUNICT1001 +- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`GT_Z1001`](#decl-zfir0120top-92-gt_z1001), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`C_0`](#decl-zficom-234-c_0), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg) 외 2건 +- 선언을 못 찾은 이름: AP_DATE, AP_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L518-L569` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C5` + +#### [calculation] 기존 정산 이력(ZFIT0151)에 반제전표가 있으면 기반제액(AMT_E)을 잡고, 청구금액(AMT_F)·할인금액(AMT_G=대상-청구)·잔액(AMT_H)·차액(AMT_C=처리-청구-할인)·미청구액(AMT_D)을 계산해 차이자료 옵션(P_RB)이면 차액 0 건을 제외하고 GT_ITEM 에 추가하며 카드별 GT_HEAD 로 COLLECT 합산한다. + +```abap + 573| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS + 574| COMP = P_COMP + 575| CARDNO = LT_Z1003-CARDNO + 576| AP_DATE = LT_Z1003-AP_DATE + 577| AP_NUM = LT_Z1003-AP_NUM + 578| PU_NUM = LT_Z1003-PU_NUM. + 579| IF SY-SUBRC EQ 0. + 580| IF GT_Z0151-AUGBL NE SPACE. + 581| GT_ITEM-AMT_E = GT_ITEM-AMT_A. + 582| ENDIF. + 583| ENDIF. + 584| + 585| * 청구금액 + 586| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT. + 587| * 할인금액(대상금액 - 청구금액) + 588| IF GT_ITEM-REQ_AMT IS NOT INITIAL. + 589| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT. + 590| ENDIF. + 591| * 잔액(청구금액 - 할인금액) + 592| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G. + 593| * 차액(처리금액 - 청구금액 - 할인금액) + 594| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 595| * 미청구액(대상금액 - 청구금액 - 할인금액) + 596| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 597| + 598| * 차이자료 + 599| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL. + 600| CONTINUE. + 601| ENDIF. + 602| + 603| APPEND GT_ITEM. + 604| + 605| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD. + 606| COLLECT GT_HEAD. CLEAR GT_HEAD. +``` + +- **EN**: Set already-cleared amount AMT_E from settlement history ZFIT0151, compute billed amount, discount (target minus billed), remainder, difference (processed minus billed minus discount) and unbilled amount, skip zero-difference rows in difference-only mode, append to GT_ITEM and COLLECT into the per-card header GT_HEAD. +- SAP 객체: ZFIT0151 +- 업무 키워드: 청구할인, 차액 계산, 미청구액, 기반제액, 카드별 합계, 차이자료 +- English: Discount Amount, Difference, Unbilled Amount, COLLECT, ZFIT0151 +- 정의부(복사 시 함께 필요): [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`LT_Z1003`](#decl-zfir0120f01-287-lt_z1003), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`P_RB`](#decl-zfir0120top-171-p_rb), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head) +- 선언을 못 찾은 이름: AP_DATE, AP_NUM, PU_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L573-L606` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C6` + +#### [aggregation] 청구내역과 매칭되지 않고 남은 승인내역(LT_Z1001)을 기준으로 취소 여부를 반영한 승인금액, 기표 전표의 처리금액·역분개 여부·채무 라인, 카드 마스터·카드사명·코스트센터명을 채워 GT_ITEM 을 구성한다. + +```abap + 612| LOOP AT LT_Z1001. + 613| * 승인번호가 없는 경우 제외 + 614| CHECK LT_Z1001-AP_NUM NE SPACE. + 615| + 616| CLEAR GT_ITEM. + 617| GT_ITEM-BUKRS = LT_Z1001-BUKRS. + 618| GT_ITEM-COMP = LT_Z1001-COMP. + 619| GT_ITEM-CARDNO = LT_Z1001-CARDNO. + 620| GT_ITEM-AP_DATE = LT_Z1001-AP_DATE. + 621| GT_ITEM-AP_NUM = LT_Z1001-AP_NUM. + 622| GT_ITEM-BELNR = LT_Z1001-BELNR. + 623| GT_ITEM-GJAHR = LT_Z1001-GJAHR. + 624| IF LT_Z1001-AP_STAT EQ C_0. "취소 + 625| GT_ITEM-AP_AMT = 0 - LT_Z1001-AP_AMT. + 626| ELSE. + 627| GT_ITEM-AP_AMT = LT_Z1001-AP_AMT. + 628| ENDIF. + 629| + 630| * 처리금액 + 631| IF GT_ITEM-BELNR NE SPACE. + 632| GT_ITEM-AMT_A = GT_ITEM-AP_AMT. + 633| * 역분개 되었는지 체크 + 634| READ TABLE GT_BKPF WITH KEY BUKRS = P_BUKRS + 635| GJAHR = LT_Z1001-GJAHR + 636| BELNR = LT_Z1001-BELNR. + 637| IF SY-SUBRC EQ 0. + 638| GT_ITEM-STBLG = GT_BKPF-STBLG. + 639| GT_ITEM-STJAH = GT_BKPF-STJAH. + 640| ENDIF. + 641| * 반제위해 항목추출 + 642| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 643| GJAHR = LT_Z1001-GJAHR + 644| BELNR = LT_Z1001-BELNR + 645| KOART = C_K. + 646| IF SY-SUBRC EQ 0. + 647| GT_ITEM-BUZEI = GT_BSEG-BUZEI. + 648| ENDIF. + 649| + 650| ENDIF. + 651| + 652| * 카드정보 + 653| READ TABLE GT_Z1000 WITH KEY BUKRS = P_BUKRS + 654| CARDNO = LT_Z1001-CARDNO. + 655| IF SY-SUBRC EQ 0. + 656| GT_ITEM-LIFNR = GT_Z1000-LIFNR. + 657| GT_ITEM-KOSTL = GT_Z1000-KOSTL. + 658| GT_ITEM-CUSER = GT_Z1000-CUSER. + 659| * 카드사명 + 660| IF GT_ITEM-LIFNR NE SPACE. + 661| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_ITEM-LIFNR. + 662| IF SY-SUBRC EQ 0. + 663| GT_ITEM-STCD2 = GT_LFA1-STCD2. + 664| GT_ITEM-LIFNR_T = GT_LFA1-NAME1. + 665| ENDIF. + 666| ENDIF. + 667| * 코스트센터명 + 668| IF GT_ITEM-KOSTL NE SPACE. + 669| READ TABLE GT_CSKT WITH KEY KOSTL = GT_ITEM-KOSTL. + 670| IF SY-SUBRC EQ 0. + 671| GT_ITEM-KOSTL_T = GT_CSKT-LTEXT. + 672| ENDIF. + 673| ENDIF. + 674| ENDIF. +``` + +- **EN**: For remaining unmatched approval records build items with sign-adjusted approval amount, processed amount plus reversal status and vendor line for posted documents, and card master / vendor / cost center texts. +- SAP 객체: ZUNICT1001, BKPF, BSEG, LFA1, CSKT +- 업무 키워드: 미청구 승인내역, 취소 승인, 처리금액, 역분개 확인, 카드 마스터 +- English: Approval Data, Unbilled, Reversal Check, Card Master, ZUNICT1001 +- 정의부(복사 시 함께 필요): [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`LT_Z1001`](#decl-zfir0120f01-285-lt_z1001), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`C_0`](#decl-zficom-234-c_0), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0120top-99-gt_bkpf), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_K`](#decl-zficom-218-c_k), [`ZUNICT1000`](#decl-zfir0120top-7-zunict1000), [`GT_Z1000`](#decl-zfir0120top-91-gt_z1000) 외 2건 +- 위치: `abap://ZFIR0120/ZFIR0120F01#L612-L674` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C7` + +#### [calculation] 승인 기준 건에 청구금액·대상금액(특정 가맹점 제외)·기반제액을 붙여 할인·잔액·차액·미청구액을 계산하고, 전표가 있고 할인금액이 있으면 BSEG G/L 라인(KOART='S')에서 계정·코스트센터를 가져와 할인 전표 생성용으로 저장한 뒤 GT_ITEM 추가 및 GT_HEAD COLLECT 한다. + +```abap + 677| READ TABLE GT_Z1003 WITH KEY BUKRS = P_BUKRS + 678| COMP = P_COMP + 679| CARDNO = LT_Z1001-CARDNO + 680| AP_DATE = LT_Z1001-AP_DATE + 681| AP_NUM = LT_Z1001-AP_NUM. + 682| IF SY-SUBRC EQ 0. + 683| GT_ITEM-REQ_AMT = GT_Z1003-REQ_AMT. + 684| ENDIF. + 685| + 686| * 가맹점사업자번호가 '1048116860' '1238191439' '1088158902'인 경우 + 687| * 대상금액 무조건 매입금액 + 688| IF LT_Z1001-STREGNO EQ '1048116860' OR + 689| LT_Z1001-STREGNO EQ '1238191439' OR + 690| LT_Z1001-STREGNO EQ '1088158902'. + 691| ELSE. + 692| GT_ITEM-AMT_B = GT_ITEM-AP_AMT. + 693| ENDIF. + 694| * 기반제액 + 695| READ TABLE GT_Z0151 WITH KEY BUKRS = P_BUKRS + 696| COMP = P_COMP + 697| CARDNO = LT_Z1001-CARDNO + 698| AP_DATE = LT_Z1001-AP_DATE + 699| AP_NUM = LT_Z1001-AP_NUM. + 700| IF SY-SUBRC EQ 0. + 701| IF GT_Z0151-AUGBL NE SPACE. + 702| GT_ITEM-AMT_E = GT_ITEM-AMT_A. + 703| ENDIF. + 704| ENDIF. + 705| + 706| * 청구금액 + 707| GT_ITEM-AMT_F = GT_ITEM-REQ_AMT. + 708| * 할인금액(대상금액 - 청구금액) + 709| IF GT_ITEM-REQ_AMT IS NOT INITIAL. + 710| GT_ITEM-AMT_G = GT_ITEM-AMT_B - GT_ITEM-REQ_AMT. + 711| ENDIF. + 712| * 잔액(청구금액 - 할인금액) + 713| GT_ITEM-AMT_H = GT_ITEM-REQ_AMT - GT_ITEM-AMT_G. + 714| * 차액(처리금액 - 청구금액 - 할인금액) + 715| GT_ITEM-AMT_C = GT_ITEM-AMT_A - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 716| * 미청구액(대상금액 - 청구금액 - 할인금액) + 717| GT_ITEM-AMT_D = GT_ITEM-AMT_B - GT_ITEM-AMT_F - GT_ITEM-AMT_G. + 718| + 719| * 전표번호가 있음서 할인금액 있는 경우 + 720| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-AMT_G IS NOT INITIAL. + 721| READ TABLE GT_BSEG WITH KEY BUKRS = P_BUKRS + 722| GJAHR = GT_ITEM-GJAHR + 723| BELNR = GT_ITEM-BELNR + 724| KOART = C_S. + 725| IF SY-SUBRC EQ 0. + 726| GT_ITEM-HKONT = GT_BSEG-HKONT. + 727| GT_ITEM-KOSTL2 = GT_BSEG-KOSTL. + 728| ENDIF. + 729| ENDIF. + 730| + 731| * 차이자료 + 732| IF P_RB EQ C_X AND GT_ITEM-AMT_C IS INITIAL. + 733| CONTINUE. + 734| ENDIF. + 735| + 736| APPEND GT_ITEM. + 737| + 738| MOVE-CORRESPONDING GT_ITEM TO GT_HEAD. + 739| COLLECT GT_HEAD. CLEAR GT_HEAD. +``` + +- **EN**: Attach billed, target and already-cleared amounts to approval-based items, compute discount, remainder, difference and unbilled amounts, and when a document with a discount exists take the G/L account and cost center from the BSEG G/L line (KOART='S') for the discount posting; append to GT_ITEM and COLLECT into GT_HEAD. +- SAP 객체: ZUNICT1003, ZFIT0151, BSEG +- 업무 키워드: 청구할인, 할인 계정, 차액 계산, G/L 라인, 카드별 합계 +- English: Discount Amount, G/L Line Item, Cost Center, COLLECT, ZFIT0151 +- 정의부(복사 시 함께 필요): [`ZUNICT1003`](#decl-zfir0120top-10-zunict1003), [`GT_Z1003`](#decl-zfir0120top-94-gt_z1003), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`P_COMP`](#decl-zfir0120top-163-p_comp), [`ZUNICT1001`](#decl-zfir0120top-8-zunict1001), [`LT_Z1001`](#decl-zfir0120f01-285-lt_z1001), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0120top-100-gt_bseg), [`C_S`](#decl-zficom-226-c_s), [`P_RB`](#decl-zfir0120top-171-p_rb) 외 2건 +- 선언을 못 찾은 이름: AP_DATE, AP_NUM (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L677-L739` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA#C8` + +### FORM DISPLAY_DATA_2 — `ZFIR0120F01` L750-L771 (22줄) + +*정산 이력 조회 모드에서 저장된 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 GT_HEAD/GT_ITEM 으로 옮기고 반제전표 유무에 따라 신호등 아이콘을 설정한다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] ZFIT0150 정산 헤더 이력을 GT_HEAD 로 옮기며 반제전표(AUGBL)가 없으면 빨간불, 있으면 초록불 아이콘을 붙이고 ZFIT0151 상세 이력을 GT_ITEM 으로 옮긴다. + +```abap + 754| LOOP AT GT_Z0150. + 755| MOVE-CORRESPONDING GT_Z0150 TO GT_HEAD. + 756| IF GT_Z0150-AUGBL EQ SPACE. + 757| GT_HEAD-CICON = ICON_RED_LIGHT. + 758| ELSE. + 759| GT_HEAD-CICON = ICON_GREEN_LIGHT. + 760| ENDIF. + 761| + 762| APPEND GT_HEAD. CLEAR GT_HEAD. + 763| ENDLOOP. + 764| + 765| * Detail + 766| LOOP AT GT_Z0151. + 767| MOVE-CORRESPONDING GT_Z0151 TO GT_ITEM. + 768| APPEND GT_ITEM. CLEAR GT_ITEM. + 769| ENDLOOP. +``` + +- **EN**: Copy settlement history headers from ZFIT0150 into GT_HEAD with a red/green light icon depending on whether a clearing document exists, and copy detail history ZFIT0151 into GT_ITEM. +- SAP 객체: ZFIT0150, ZFIT0151 +- 업무 키워드: 정산 이력, 반제전표 여부, 신호등 아이콘, 법인카드 정산 +- English: Settlement History, Clearing Document, Status Icon, ZFIT0150 +- 정의부(복사 시 함께 필요): [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_Z0151`](#decl-zfir0120top-96-gt_z0151), [`GT_ITEM`](#decl-zfir0120top-51-gt_item) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L754-L769` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DISPLAY_DATA_2#C1` + +### EVENT END-OF-SELECTION — `ZFIR0120` L64-L70 (7줄) + +*END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.* + +> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 수불 헤더 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 2단 ALV 화면 0100 을 호출한다. + +```abap + 65| IF GT_HEAD[] IS INITIAL. + 66| MESSAGE S003. + 67| LEAVE LIST-PROCESSING. + 68| ELSE. + 69| CALL SCREEN 0100. + 70| ENDIF. +``` + +- **EN**: If no header data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV. +- 호출(파서): 0100 +- 업무 키워드: 결과 없음, 화면 호출, 조회 결과 확인 +- English: no data, call screen +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head) +- 위치: `abap://ZFIR0120/ZFIR0120#L65-L70` · confidence 0.8 · `ZFIR0120#ZFIR0120#EVENT#END-OF-SELECTION#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0120/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0120/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0120/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0120/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0120/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0120/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0120/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0120/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0120/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0120/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0120/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0120/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0120/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0120/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0120/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0120/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0120/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0120/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0120/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0120/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0120#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0120/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0120/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0120/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0120/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 위치: `abap://ZFIR0120/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0120#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0120/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0120#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0120F01` L1179-L1210 (32줄) + +*헤더 ALV 핫스팟 클릭 시 카드번호(CARDNO)면 해당 카드의 상세 아이템을 GT_ITEM2 로 추려 상세 그리드를 갱신하고, 반제전표(AUGBL)면 FB03 으로 전표를 조회한다.* + +> 이 unit 의 조각 2개가 19/32줄(59%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 카드번호 컬럼 클릭 시 헤더 행의 회사코드·카드번호와 일치하는 GT_ITEM 을 GT_ITEM2 로 복사하고 OK 코드 ZUSER 를 발생시켜 PAI 에서 상세 그리드를 갱신한다. + +```abap + 1187| WHEN 'CARDNO'. + 1188| CLEAR : GT_ITEM2[], GT_ITEM2. + 1189| + 1190| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 1191| AND CARDNO EQ GT_HEAD-CARDNO. + 1192| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 1193| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 1194| ENDLOOP. + 1195| + 1196| * PAI로 호출 + 1197| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 1198| EXPORTING + 1199| NEW_CODE = 'ZUSER'. +``` + +- **EN**: On CARDNO hotspot copy matching items into GT_ITEM2 and raise OK code ZUSER via CL_GUI_CFW=>SET_NEW_OK_CODE to refresh the detail grid in PAI. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 카드번호, 헤더-아이템 연동, 상세 그리드 갱신, 핫스팟 +- English: Card Number, Hotspot, Drilldown, CL_GUI_CFW +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`GT_HEAD`](#decl-zfir0120top-17-gt_head) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1187-L1199` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK#C1` + +#### [interface] 반제전표 컬럼 클릭 시 반제전표번호·회사코드·반제연도(AUGDT 앞 4자리)로 파라미터 ID 를 설정하고 FB03 으로 반제전표를 조회한다. + +```abap + 1202| WHEN 'AUGBL'. + 1203| CHECK GT_HEAD-AUGBL IS NOT INITIAL. + 1204| SET PARAMETER ID 'BLN' FIELD GT_HEAD-AUGBL. + 1205| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1206| SET PARAMETER ID 'GJR' FIELD GT_HEAD-AUGDT(4). + 1207| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: On AUGBL hotspot set parameter IDs from clearing document, company code and clearing year and call FB03 to display the clearing document. +- 호출(파서): FB03 +- SAP 객체: FB03 +- 업무 키워드: 반제전표 조회, 핫스팟, 회계전표 +- English: Clearing Document, FB03, Hotspot +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1202-L1207` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK#C2` + +### FORM HOTSPOT_CLICK2 — `ZFIR0120F01` L1219-L1235 (17줄) + +*상세 ALV 에서 전표번호(BELNR) 핫스팟 클릭 시 파라미터 ID 를 설정하고 FB03 으로 회계전표를 조회한다.* + +> 이 unit 의 조각 1개가 12/17줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 클릭한 상세 행의 전표번호가 있으면 BLN/BUK/GJR 파라미터 ID 를 설정하고 FB03 트랜잭션을 호출해 전표를 조회한다. + +```abap + 1222| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX. + 1223| CHECK SY-SUBRC EQ 0. + 1224| + 1225| CASE P_COLUMN_ID. + 1226| * 전표번호 + 1227| WHEN 'BELNR'. + 1228| CHECK GT_ITEM2-BELNR IS NOT INITIAL. + 1229| SET PARAMETER ID 'BLN' FIELD GT_ITEM2-BELNR. + 1230| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1231| SET PARAMETER ID 'GJR' FIELD GT_ITEM2-GJAHR. + 1232| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 1233| ENDCASE. +``` + +- **EN**: For the clicked detail row with a document number set parameter IDs BLN/BUK/GJR and call transaction FB03 to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03 +- 업무 키워드: 전표 조회, 핫스팟, 회계전표, 파라미터 ID +- English: Hotspot, FB03, Display Document, SET PARAMETER +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1222-L1233` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#HOTSPOT_CLICK2#C1` + +### FORM DOUBLE_CLICK — `ZFIR0120F01` L1244-L1263 (20줄) + +*헤더 ALV 더블클릭 시 해당 회사코드·카드번호의 상세 아이템(GT_ITEM)을 GT_ITEM2 로 추려 상세 그리드 갱신용 OK 코드 ZUSER 를 발생시킨다.* + +> 이 unit 의 조각 1개가 13/20줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 더블클릭한 헤더 행의 회사코드·카드번호와 일치하는 아이템을 GT_ITEM 에서 GT_ITEM2 로 복사하고 CL_GUI_CFW=>SET_NEW_OK_CODE 로 OK 코드 ZUSER 를 발생시켜 PAI 에서 상세 그리드를 갱신하게 한다. + +```abap + 1249| READ TABLE GT_HEAD INDEX P_ROW-INDEX. + 1250| CHECK SY-SUBRC EQ 0. + 1251| + 1252| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 1253| AND CARDNO EQ GT_HEAD-CARDNO. + 1254| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 1255| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 1256| ENDLOOP. + 1257| + 1258| * PAI로 호출 + 1259| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 1260| EXPORTING + 1261| NEW_CODE = 'ZUSER'. +``` + +- **EN**: Copy the items matching the double-clicked header row's company code and card number into GT_ITEM2 and trigger OK code ZUSER via CL_GUI_CFW=>SET_NEW_OK_CODE so PAI refreshes the detail grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 더블클릭, 헤더-아이템 연동, 카드번호, 상세 그리드 갱신 +- English: Double Click, Header-Item Drilldown, Card Number, CL_GUI_CFW +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1249-L1261` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DOUBLE_CLICK#C1` + +### FORM ALV_GRID_DISPLAY1 — `ZFIR0120F01` L898-L913 (16줄) + +*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 임시전표 헤더 내부테이블 GT_HEAD를 상단 ALV 그리드에 출력한다. + +```abap + 901| GV_VARI1-REPORT = SY-REPID. + 902| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY + 903| EXPORTING + 904| I_STRUCTURE_NAME = 'GT_HEAD' + 905| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 906| IS_LAYOUT = GV_LAYO1 + 907| IS_VARIANT = GV_VARI1 + 908| I_BUFFER_ACTIVE = C_X + 909| I_SAVE = C_A + 910| CHANGING + 911| IT_OUTTAB = GT_HEAD[] + 912| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the parked document header list (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 헤더 ALV 출력, 임시전표 목록, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Parked Document +- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0120top-148-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0120top-142-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0120top-145-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L901-L912` · confidence 0.8 · `ZFIR0120#ZFIR0120F01#FORM#ALV_GRID_DISPLAY1#C1` + +### FORM ALV_GRID_DISPLAY2 — `ZFIR0120F01` L1041-L1056 (16줄) + +*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/16줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다. + +```abap + 1044| GV_VARI2-REPORT = SY-REPID. + 1045| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY + 1046| EXPORTING + 1047| I_STRUCTURE_NAME = 'GT_ITEM' + 1048| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 1049| IS_LAYOUT = GV_LAYO2 + 1050| IS_VARIANT = GV_VARI2 + 1051| I_BUFFER_ACTIVE = C_X + 1052| I_SAVE = C_A + 1053| CHANGING + 1054| IT_OUTTAB = GT_ITEM2[] + 1055| IT_FIELDCATALOG = GT_FCAT_ITEM[]. +``` + +- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY with layout, variant and toolbar exclusions. +- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 아이템 ALV 출력, 전표 아이템, 그리드 표시 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item +- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0120top-149-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0120top-143-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0120top-146-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_ITEM2`](#decl-zfir0120top-89-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1044-L1055` · confidence 0.8 · `ZFIR0120#ZFIR0120F01#FORM#ALV_GRID_DISPLAY2#C1` + +### FORM DOCUMENT_POSTING — `ZFIR0120F01` L1269-L1375 (107줄) + +*카드별 청구 정산 내역으로 반제/미결 전표 데이터를 만들고 카드 300건 단위로 전표를 생성한 뒤 정산 이력을 저장한다.* + +> 이 unit 의 조각 3개가 87/107줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 카드별로 아이템을 돌며, 이미 전표번호가 있고 역분개되지 않은 항목은 BSEG 기준 반제 선택항목(BSELP)으로 넣고, 전표가 없는 항목은 금액 부호에 따라 전기키 34/24 로 미결 항목을 생성하며 승인번호·구매번호·가맹점명을 참조필드에 남긴다. 할인금액은 계정·코스트센터별로 COLLECT 해 합산한다. + +```abap + 1283| LOOP AT GT_HEAD. + 1284| GT_HEAD-CHFLG = C_X. + 1285| MODIFY GT_HEAD. + 1286| + 1287| AT LAST. + 1288| LV_LAST = C_X. + 1289| ENDAT. + 1290| + 1291| LV_CNT = LV_CNT + 1. + 1292| MOVE-CORRESPONDING GT_HEAD TO GT_Z0150_S. + 1293| APPEND GT_Z0150_S. CLEAR GT_Z0150_S. + 1294| + 1295| * ITEM 내역 생성 + 1296| LOOP AT GT_ITEM WHERE CARDNO EQ GT_HEAD-CARDNO. + 1297| GT_ITEM-CHFLG = C_X. + 1298| MODIFY GT_ITEM. + 1299| + 1300| MOVE-CORRESPONDING GT_ITEM TO GT_Z0151_S. + 1301| APPEND GT_Z0151_S. CLEAR GT_Z0151_S. + 1302| + 1303| * 청구금액이 있는 데이터만.. + 1304| CHECK GT_ITEM-REQ_AMT IS NOT INITIAL. + 1305| + 1306| * 전표번호가 있는 경우 해당 항목 반제 처리 + 1307| IF GT_ITEM-BELNR NE SPACE AND GT_ITEM-STBLG EQ SPACE. + 1308| + 1309| GT_BSELP-STYPE = C_D. + 1310| GT_BSELP-TBNAM = 'BSEG'. + 1311| GT_BSELP-FELDN_1 = 'BELNR'. + 1312| CONCATENATE GT_ITEM-BELNR GT_ITEM-GJAHR GT_ITEM-BUZEI + 1313| INTO GT_BSELP-SLVON_1. + 1314| APPEND GT_BSELP. CLEAR GT_BSELP. + 1315| ELSE. + 1316| * 대상금액으로 미결항목 생성 + 1317| IF GT_ITEM-AMT_B GT 0. + 1318| GT_BBSEG-NEWBS = '34'. "전기키 + 1319| ELSE. + 1320| GT_BBSEG-NEWBS = '24'. "전기키 + 1321| GT_ITEM-AMT_B = 0 - GT_ITEM-AMT_B. + 1322| ENDIF. + 1323| + 1324| GT_BBSEG-NEWKO = GT_ITEM-LIFNR. "구매처코드 + 1325| CHANGE_CURRENCY GT_ITEM-AMT_B GT_BBSEG-WRBTR C_WAERS. + 1326| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산 미결생성' + 1327| INTO GT_BBSEG-SGTXT. + 1328| GT_BBSEG-XREF1 = GT_ITEM-AP_NUM. + 1329| GT_BBSEG-XREF2 = GT_ITEM-PU_NUM+22(12). + 1330| GT_BBSEG-XREF3 = GT_ITEM-STREGNM. + 1331| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 1332| ENDIF. + 1333| * 할인금액이 있는 경우 + 1334| IF GT_ITEM-AMT_G IS NOT INITIAL. + 1335| GT_AMT_G-HKONT = GT_ITEM-HKONT. + 1336| GT_AMT_G-KOSTL = GT_ITEM-KOSTL. + 1337| GT_AMT_G-DMBTR = GT_ITEM-AMT_G. + 1338| COLLECT GT_AMT_G. CLEAR GT_AMT_G. + 1339| ENDIF. + 1340| ENDLOOP. +``` + +- **EN**: Per card item: adds already-posted items as clearing selections (BSELP) or creates open items with posting key 34/24 by sign, stamping reference fields, and collects discount amounts by account/cost center. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [GT_ITEM](/tables/GT_ITEM.md) +- SAP 객체: BSELP, BBSEG, BSEG, NEWBS, XREF1, XREF2, XREF3, LIFNR +- 업무 키워드: 법인카드, 청구정산, 반제선택, 미결생성, 전기키, 할인금액, 참조필드, 가맹점 +- English: corporate card, billing settlement, clearing selection, open item, posting key, discount amount, reference field +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`C_X`](#decl-zficom-231-c_x), [`LV_LAST`](#decl-zfir0120f01-1271-lv_last), [`LV_CNT`](#decl-zfir0120f01-1270-lv_cnt), [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s), [`GT_BSELP`](#decl-zficom-113-gt_bselp), [`C_D`](#decl-zficom-211-c_d), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers) 외 2건 +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1283-L1340` · confidence 0.84 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C1` + +#### [control_flow] 카드 300건마다(또는 마지막 건에서) 반제전표 헤더·전표헤더·할인금액 아이템을 만들고, 청구금액 합계 부호에 따라 전기키 31/21 로 공급업체 AP 라인을 추가한 뒤 전표 생성 함수를 호출한다. + +```abap + 1343| IF LV_CNT EQ '300' OR LV_LAST EQ C_X. + 1344| * 반제전표 헤더 + 1345| PERFORM MAKE_BSELK. + 1346| * 전표헤더 + 1347| PERFORM MAKE_BKPF. + 1348| * 할인금액 아이템 + 1349| PERFORM MAKE_BSEG. + 1350| * 청구금액합계로 AP라인 + 1351| IF GT_HEAD-AMT_F GT 0. + 1352| GT_BBSEG-NEWBS = '31'. + 1353| ELSE. + 1354| GT_BBSEG-NEWBS = '21'. + 1355| GT_HEAD-AMT_F = 0 - GT_HEAD-AMT_F. + 1356| ENDIF. + 1357| GT_BBSEG-NEWKO = GT_HEAD-LIFNR. + 1358| CHANGE_CURRENCY GT_HEAD-AMT_F GT_BBSEG-WRBTR C_WAERS. + 1359| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산' + 1360| INTO GT_BBSEG-SGTXT. + 1361| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 1362| + 1363| * 전표생성펑션 CALL + 1364| PERFORM BDC_FB05. + 1365| + 1366| CLEAR: LV_CNT, GT_BBSEG[], GT_BBSEG, GT_BSELP[], GT_BSELP. + 1367| ENDIF. +``` + +- **EN**: Every 300 cards (or at the last record) builds the clearing header, document header and discount lines, appends the vendor AP line with posting key 31/21 by sign, and posts. +- 호출(파서): MAKE_BSELK, MAKE_BKPF, MAKE_BSEG, BDC_FB05 +- SAP 객체: BSELK, BBKPF, BBSEG, NEWBS, LIFNR +- 업무 키워드: 분할전기, 300건단위, 청구금액, 공급업체, AP라인, 전기키, 반제전표 +- English: batch posting, chunked posting, billing amount, vendor, AP line, posting key, clearing document +- 정의부(복사 시 함께 필요): [`LV_CNT`](#decl-zfir0120f01-1270-lv_cnt), [`LV_LAST`](#decl-zfir0120f01-1271-lv_last), [`C_X`](#decl-zficom-231-c_x), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers), [`P_SPMON`](#decl-zfir0120top-162-p_spmon), [`GT_BSELP`](#decl-zficom-113-gt_bselp) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1343-L1367` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C2` + +#### [db_write] 정산 헤더·아이템 이력을 CBO 테이블 ZFIT0150/ZFIT0151 에 저장한다. + +```abap + 1370| IF GT_Z0150_S[] IS NOT INITIAL. + 1371| MODIFY ZFIT0150 FROM TABLE GT_Z0150_S. + 1372| MODIFY ZFIT0151 FROM TABLE GT_Z0151_S. + 1373| ENDIF. +``` + +- **EN**: Persists settlement header and item history to ZFIT0150/ZFIT0151. +- 테이블(파서): read - / write [ZFIT0150](/tables/ZFIT0150.md), [ZFIT0151](/tables/ZFIT0151.md) +- SAP 객체: ZFIT0150, ZFIT0151 +- 업무 키워드: 정산이력, 이력저장, 카드정산 +- English: settlement history, persist, card settlement +- 정의부(복사 시 함께 필요): [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1370-L1373` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#DOCUMENT_POSTING#C3` + +### FORM MAKE_BSELK — `ZFIR0120F01` L1381-L1391 (11줄) + +*FB05 반제 전기를 위한 반제 계정 선택 헤더(BSELK)에 공급업체(LIFNR)·회사코드·계정유형 K·특별G/L 제외 지시자를 채운다.* + +> 이 unit 의 조각 1개가 6/11줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] FB05 반제 대상 계정 선택 헤더 GT_BSELK 에 카드사 공급업체(LIFNR)·회사코드·계정유형 'K'·특별G/L 제외(XNOPS) 를 설정해 미결 채무를 반제 대상으로 지정한다. + +```abap + 1384| GT_BSELK-AGKON = GT_HEAD-LIFNR. + 1385| GT_BSELK-AGBUK = P_BUKRS. + 1386| GT_BSELK-AGKOA = C_K. + 1387| GT_BSELK-XNOPS = C_X. "지시자: 특별 G/L이 아닌 미결항목만 선택합니까? + 1388| + 1389| APPEND GT_BSELK. CLEAR GT_BSELK. +``` + +- **EN**: Fill the FB05 clearing account selection header GT_BSELK with the card vendor, company code, account type K and the standard-open-items-only indicator XNOPS. +- SAP 객체: FB05, BSELK +- 업무 키워드: 반제 계정 선택, 공급업체, 미결 항목, 특별 G/L 제외, FB05 +- English: Clearing, BSELK, Vendor, Open Items, FB05 +- 정의부(복사 시 함께 필요): [`GT_BSELK`](#decl-zficom-112-gt_bselk), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`C_K`](#decl-zficom-218-c_k), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1384-L1389` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BSELK#C1` + +### FORM MAKE_BKPF — `ZFIR0120F01` L1397-L1410 (14줄) + +*FB05 반제 전기용 전표 헤더(BBKPF)를 전표유형 KZ, 전기일, 회사코드, 현지통화, 반제 트랜잭션 UMBUCHNG(대체전기)로 구성한다.* + +> 이 unit 의 조각 1개가 9/14줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 배치입력 전표 헤더 GT_BBKPF 에 T-Code FB05, 전표유형 KZ(지급), 전표일·전기일(P_BUDAT), 회사코드, 통화(T001-WAERS), 반제 트랜잭션 UMBUCHNG(반제 후 대체전기)을 설정한다. + +```abap + 1400| GT_BBKPF-TCODE = 'FB05'. + 1401| GT_BBKPF-BLDAT = P_BUDAT. + 1402| GT_BBKPF-BUDAT = P_BUDAT. + 1403| GT_BBKPF-BLART = 'KZ'. + 1404| GT_BBKPF-BUKRS = P_BUKRS. + 1405| GT_BBKPF-WAERS = T001-WAERS. + 1406| GT_BBKPF-AUGLV = 'UMBUCHNG'. "반제하여 대체전기 + 1407| + 1408| APPEND GT_BBKPF. +``` + +- **EN**: Prepare the batch-input document header GT_BBKPF for FB05 with document type KZ, document/posting date, company code, local currency and clearing transaction UMBUCHNG (transfer posting with clearing). +- SAP 객체: FB05, BBKPF, T001 +- 업무 키워드: 전표 헤더, 반제 전기, 대체전기, 전표유형 KZ, FB05 +- English: Document Header, BBKPF, Clearing Transaction, UMBUCHNG, FB05 +- 정의부(복사 시 함께 필요): [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`P_BUDAT`](#decl-zfir0120top-189-p_budat), [`P_BUKRS`](#decl-zfir0120top-161-p_bukrs), [`T001`](#decl-zficom-11-t001) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1400-L1408` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BKPF#C1` + +### FORM MAKE_BSEG — `ZFIR0120F01` L1416-L1435 (20줄) + +*코스트센터별 청구할인 금액(GT_AMT_G)을 G/L 계정 라인(BBSEG)으로 만들어 금액 부호에 따라 전기키 50/40 과 반대전기 지시자를 설정한다.* + +> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 코스트센터·G/L 계정별 청구할인 금액을 양수면 전기키 50(대변), 음수면 전기키 40(차변)+반대전기(XNEGP)로 BBSEG 라인에 만들고 통화 변환 매크로 CHANGE_CURRENCY 로 금액을 넣으며 '법인카드 청구정산 청구할인' 적요와 코스트센터를 설정한다. + +```abap + 1418| LOOP AT GT_AMT_G. + 1419| IF GT_AMT_G-DMBTR GT 0. + 1420| GT_BBSEG-NEWBS = '50'. + 1421| ELSE. + 1422| GT_BBSEG-NEWBS = '40'. + 1423| GT_BBSEG-XNEGP = C_X. + 1424| GT_AMT_G-DMBTR = 0 - GT_AMT_G-DMBTR. + 1425| ENDIF. + 1426| GT_BBSEG-NEWKO = GT_AMT_G-HKONT. + 1427| CHANGE_CURRENCY GT_AMT_G-DMBTR GT_BBSEG-WRBTR C_WAERS. + 1428| CONCATENATE P_SPMON(4) '년' P_SPMON+4(2) ' 법인카드 청구정산 청구할인' + 1429| INTO GT_BBSEG-SGTXT. + 1430| GT_BBSEG-KOSTL = GT_AMT_G-KOSTL. + 1431| + 1432| APPEND GT_BBSEG. CLEAR GT_BBSEG. + 1433| ENDLOOP. +``` + +- **EN**: Convert each cost-center/G-L account discount amount into a BBSEG line: posting key 50 for positive, 40 with negative-posting flag for negative amounts, converting the amount via CHANGE_CURRENCY and setting the text 'corporate card settlement discount' and cost center. +- SAP 객체: BBSEG +- 업무 키워드: 청구할인, 법인카드 정산, 전기키, 반대전기, 코스트센터, G/L 라인 +- English: Posting Key, Negative Posting, Cost Center, BBSEG, G/L Line Item +- 정의부(복사 시 함께 필요): [`GT_AMT_G`](#decl-zfir0120top-103-gt_amt_g), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`C_X`](#decl-zficom-231-c_x), [`CHANGE_CURRENCY`](#decl-zficom-333-change_currency), [`C_WAERS`](#decl-zficom-199-c_waers), [`P_SPMON`](#decl-zfir0120top-162-p_spmon) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1418-L1433` · confidence 0.85 · `ZFIR0120#ZFIR0120F01#FORM#MAKE_BSEG#C1` + +### FORM BDC_FB05 — `ZFIR0120F01` L1441-L1525 (85줄) + +*구성한 반제 데이터로 전표를 전기하고 결과를 화면 테이블·정산 이력에 반영한다.* + +> 이 unit 의 조각 2개가 75/85줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 커스텀 전기 함수에 전표 헤더·아이템과 반제 선택 테이블(BSELK/BSELP)을 함께 넘겨 반제 전표를 생성한다. + +```abap + 1448| CALL FUNCTION 'Z_FI_DOCUMENT_POSTING' + 1449| EXPORTING + 1450| I_BDC_MODE = GV_MODE + 1451| I_MESSAGE = SPACE + 1452| IMPORTING + 1453| E_BELNR = GV_BELNR + 1454| E_GJAHR = GV_GJAHR + 1455| E_BUKRS = GV_BUKRS + 1456| TABLES + 1457| T_BBKPF = GT_BBKPF + 1458| T_BBSEG = GT_BBSEG + 1459| T_BSELK = GT_BSELK + 1460| T_BSELP = GT_BSELP + 1461| T_MESSTAB = GT_FIMSG. +``` + +- **EN**: Posts the clearing document by passing header/items plus the clearing selection tables (BSELK/BSELP) to the custom posting FM. +- 호출(파서): Z_FI_DOCUMENT_POSTING +- SAP 객체: Z_FI_DOCUMENT_POSTING, BSELK, BSELP, BBKPF, BBSEG +- 업무 키워드: 반제전표, 전기, 반제선택, 전표생성 +- English: clearing document, posting, clearing selection, FB05 +- 정의부(복사 시 함께 필요): [`GV_MODE`](#decl-zficom-174-gv_mode), [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GV_GJAHR`](#decl-zficom-106-gv_gjahr), [`GV_BUKRS`](#decl-zficom-105-gv_bukrs), [`GT_BBKPF`](#decl-zficom-108-gt_bbkpf), [`GT_BBSEG`](#decl-zficom-109-gt_bbseg), [`GT_BSELK`](#decl-zficom-112-gt_bselk), [`GT_BSELP`](#decl-zficom-113-gt_bselp), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg) +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1448-L1461` · confidence 0.9 · `ZFIR0120#ZFIR0120F01#FORM#BDC_FB05#C1` + +#### [control_flow] 성공하면 반제전표번호·반제일을 정산 헤더/아이템과 화면 테이블에 채우고 상태 아이콘을 녹색으로, 실패하면 메시지 테이블에서 오류를 뽑아 문구를 만들고 아이콘을 빨간색으로 바꾼 뒤, 처리일시·처리자와 함께 변경분만 갱신한다. + +```abap + 1463| IF GV_BELNR NE SPACE. + 1464| GT_Z0150_S-AUGBL = GT_Z0151_S-AUGBL = GV_BELNR. + 1465| GT_Z0150_S-AUGDT = GT_Z0151_S-AUGDT = P_BUDAT. + 1466| + 1467| GT_HEAD-AUGBL = GT_ITEM-AUGBL = GV_BELNR. + 1468| GT_HEAD-AUGDT = GT_ITEM-AUGDT = P_BUDAT. + 1469| GT_HEAD-CICON = ICON_GREEN_LIGHT. + 1470| ELSE. + 1471| READ TABLE GT_FIMSG WITH KEY MSGTY = C_E. "에러 + 1472| IF SY-SUBRC <> 0. + 1473| READ TABLE GT_FIMSG WITH KEY MSGTY = C_A. "AVEND + 1474| ENDIF. + 1475| IF GT_FIMSG IS INITIAL. + 1476| * 메시지 타입이 정상이면서 에러인 건이 있는지 확인 + 1477| DESCRIBE TABLE GT_MESS LINES GV_INDEX. + 1478| READ TABLE GT_MESS INDEX GV_INDEX. + 1479| IF SY-SUBRC EQ 0. + 1480| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1481| EXPORTING + 1482| MSGID = GT_FIMSG-MSGID + 1483| MSGNR = GT_FIMSG-MSGNO + 1484| MSGV1 = GT_FIMSG-MSGV1 + 1485| MSGV2 = GT_FIMSG-MSGV2 + 1486| MSGV3 = GT_FIMSG-MSGV3 + 1487| MSGV4 = GT_FIMSG-MSGV4 + 1488| IMPORTING + 1489| MESSAGE_TEXT_OUTPUT = GT_Z0150-MESSG. + 1490| ENDIF. + 1491| ELSE. + 1492| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1493| EXPORTING + 1494| MSGID = GT_FIMSG-MSGID + 1495| MSGNR = GT_FIMSG-MSGNO + 1496| MSGV1 = GT_FIMSG-MSGV1 + 1497| MSGV2 = GT_FIMSG-MSGV2 + 1498| MSGV3 = GT_FIMSG-MSGV3 + 1499| MSGV4 = GT_FIMSG-MSGV4 + 1500| IMPORTING + 1501| MESSAGE_TEXT_OUTPUT = GT_Z0150_S-MESSG. + 1502| ENDIF. + 1503| GT_HEAD-CICON = ICON_RED_LIGHT. + 1504| ENDIF. + 1505| GT_Z0151_S-MESSG = GT_Z0150_S-MESSG. + 1506| GT_Z0150_S-CDATE = GT_Z0151_S-CDATE = SY-DATUM. + 1507| GT_Z0150_S-CTIME = GT_Z0151_S-CTIME = SY-UZEIT. + 1508| GT_Z0150_S-CNAME = GT_Z0151_S-CNAME = SY-UNAME. + 1509| + 1510| MODIFY GT_Z0150_S TRANSPORTING AUGBL AUGDT MESSG + 1511| CDATE CTIME CNAME + 1512| WHERE CDATE EQ SPACE. + 1513| + 1514| MODIFY GT_Z0151_S TRANSPORTING AUGBL AUGDT MESSG + 1515| CDATE CTIME CNAME + 1516| WHERE CDATE EQ SPACE. + 1517| + 1518| GT_HEAD-MESSG = GT_Z0150_S-MESSG. + 1519| CLEAR: GT_HEAD-CHFLG, GT_ITEM-CHFLG. + 1520| MODIFY GT_HEAD TRANSPORTING AUGBL AUGDT MESSG CHFLG CICON + 1521| WHERE CHFLG EQ C_X. + 1522| MODIFY GT_ITEM TRANSPORTING AUGBL AUGDT CHFLG + 1523| WHERE CHFLG EQ C_X. +``` + +- **EN**: On success stamps clearing document number/date and a green status icon; on failure builds an error text and sets a red icon, then updates only the changed rows with audit fields. +- 테이블(파서): read - / write [GT_HEAD](/tables/GT_HEAD.md), [GT_ITEM](/tables/GT_ITEM.md) +- 호출(파서): MESSAGE_TEXT_BUILD, MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, ZFIT0150, ZFIT0151, AUGBL, AUGDT +- 업무 키워드: 반제결과, 반제전표번호, 상태아이콘, 오류메시지, 처리일시, 변경분갱신 +- English: clearing result, clearing document number, status icon, error message, audit fields +- 정의부(복사 시 함께 필요): [`GV_BELNR`](#decl-zficom-104-gv_belnr), [`GT_Z0150_S`](#decl-zfir0120top-97-gt_z0150_s), [`GT_Z0151_S`](#decl-zfir0120top-98-gt_z0151_s), [`P_BUDAT`](#decl-zfir0120top-189-p_budat), [`GT_HEAD`](#decl-zfir0120top-17-gt_head), [`GT_ITEM`](#decl-zfir0120top-51-gt_item), [`GT_FIMSG`](#decl-zficom-115-gt_fimsg), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_MESS`](#decl-zficom-172-gt_mess), [`GV_INDEX`](#decl-zficom-82-gv_index), [`GT_Z0150`](#decl-zfir0120top-95-gt_z0150) 외 1건 +- 위치: `abap://ZFIR0120/ZFIR0120F01#L1463-L1523` · confidence 0.86 · `ZFIR0120#ZFIR0120F01#FORM#BDC_FB05#C2` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0120I01` L9-L17 (9줄) + +*화면 0100 PAI 에서 POST 기능코드일 때 DOCUMENT_POSTING 을 호출해 전표를 생성하는 사용자 명령 MODULE 이다.* + +> 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 사용자 명령이 POST(전표생성)이면 DOCUMENT_POSTING 을 수행해 법인카드 청구정산 전표를 전기한다. + +```abap + 11| GV_UCOMM = SY-UCOMM. + 12| CASE GV_UCOMM. + 13| * 전표생성 + 14| WHEN 'POST'. + 15| PERFORM DOCUMENT_POSTING. + 16| ENDCASE. +``` + +- **EN**: Dispatch the POST user command to DOCUMENT_POSTING, which posts the corporate card settlement document. +- 호출(파서): DOCUMENT_POSTING +- 업무 키워드: 전표생성, 사용자 명령, 전기 +- English: User Command, Document Posting, PAI +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zficom-71-gv_ucomm) +- 위치: `abap://ZFIR0120/ZFIR0120I01#L11-L16` · confidence 0.8 · `ZFIR0120#ZFIR0120I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (333건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0120CLS` (3건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0120cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK2 + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW E_COLUMN ES_ROW_NO . + + + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT1 — data · L48-L48 {#decl-zfir0120cls-48-gv_event1} + +```abap +DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +#### GV_EVENT2 — data · L49-L49 {#decl-zfir0120cls-49-gv_event2} + +```abap +DATA: + GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0120TOP` (48건) + +#### ZUNICT1000 — tables · L7-L7 {#decl-zfir0120top-7-zunict1000} + +```abap +TABLES: ZUNICT1000. " [ZUNIC] 법인카드 마스터 +``` + +#### ZUNICT1001 — tables · L8-L8 {#decl-zfir0120top-8-zunict1001} + +```abap +TABLES: + ZUNICT1001. " [ZUNIC] 법인카드 승인 데이타 +``` + +#### ZUNICT1002 — tables · L9-L9 {#decl-zfir0120top-9-zunict1002} + +```abap +TABLES: + ZUNICT1002. " [ZUNIC] 법인카드 매입 데이타 +``` + +#### ZUNICT1003 — tables · L10-L10 {#decl-zfir0120top-10-zunict1003} + +```abap +TABLES: + ZUNICT1003. " [ZUNIC] 법인카드 청구 데이타 +``` + +#### TKA02 — tables · L11-L11 {#decl-zfir0120top-11-tka02} + +```abap +TABLES: + TKA02. +``` + +#### GT_HEAD — data · L17-L49 {#decl-zfir0120top-17-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0, + CICON LIKE ICON-ID, + BUKRS LIKE ZUNICT1002-BUKRS, + COMP LIKE ZUNICT1000-COMP, + CARDNO LIKE ZUNICT1002-CARDNO, + CUSER LIKE ZUNICT1000-CUSER, + LIFNR LIKE ZUNICT1000-LIFNR, + STCD2 LIKE LFA1-STCD2, + LIFNR_T LIKE LFA1-NAME1, + AMT_A LIKE ZUNICT1002-PU_AMT, "처리금액 + AMT_B LIKE ZUNICT1002-PU_AMT, "대상금액 + AMT_C LIKE ZUNICT1002-PU_AMT, "차액 + AMT_D LIKE ZUNICT1002-PU_AMT, "미청구액 + AMT_E LIKE ZUNICT1002-PU_AMT, "기반제액 + AMT_F LIKE ZUNICT1002-PU_AMT, "청구금액 + AMT_G LIKE ZUNICT1002-PU_AMT, "할인금액 + AMT_H LIKE ZUNICT1002-PU_AMT, "잔액 + KOSTL LIKE ZUNICT1000-KOSTL, + KOSTL_T LIKE CSKT-LTEXT, + AUGBL LIKE BSEG-AUGBL, "반제전표 + AUAHR LIKE BKPF-GJAHR, "반제년도 + AUGDT LIKE BSEG-AUGDT, "반제일 + STBLG LIKE BKPF-STBLG, "역분개전표 + STJAH LIKE BKPF-STJAH, "역분개년도 + MESSG(100) TYPE C, "에러메시지 + CDATE LIKE ZFIS0050-CDATE, + CTIME LIKE ZFIS0050-CTIME, + CNAME LIKE ZFIS0050-CNAME, + UDATE LIKE ZFIS0050-UDATE, + UTIME LIKE ZFIS0050-UTIME, + UNAME LIKE ZFIS0050-UNAME, + CHFLG(1) TYPE C, + END OF GT_HEAD. +``` + +#### GT_ITEM — data · L51-L87 {#decl-zfir0120top-51-gt_item} + +```abap +DATA: BEGIN OF GT_ITEM OCCURS 0, + BUKRS LIKE ZUNICT1002-BUKRS, + COMP LIKE ZUNICT1000-COMP, + CARDNO LIKE ZUNICT1002-CARDNO, + CUSER LIKE ZUNICT1000-CUSER, + LIFNR LIKE ZUNICT1000-LIFNR, + STCD2 LIKE LFA1-STCD2, + LIFNR_T LIKE LFA1-NAME1, + KOSTL LIKE ZUNICT1000-KOSTL, + KOSTL_T LIKE CSKT-LTEXT, + AP_DATE LIKE ZUNICT1002-AP_DATE, + AP_NUM LIKE ZUNICT1002-AP_NUM, + PU_NUM LIKE ZUNICT1002-PU_NUM, + BELNR LIKE ZUNICT1002-BELNR, + GJAHR LIKE ZUNICT1002-GJAHR, + AP_AMT LIKE ZUNICT1001-AP_AMT, + PU_AMT LIKE ZUNICT1002-PU_AMT, + REQ_AMT LIKE ZUNICT1003-REQ_AMT, + STREGNM LIKE ZUNICT1002-STREGNM, + AMT_A LIKE ZUNICT1002-PU_AMT, "처리금액 + AMT_B LIKE ZUNICT1002-PU_AMT, "대상금액 + AMT_C LIKE ZUNICT1002-PU_AMT, "차액 + AMT_D LIKE ZUNICT1002-PU_AMT, "미청구액 + AMT_E LIKE ZUNICT1002-PU_AMT, "기반제액 + AMT_F LIKE ZUNICT1002-PU_AMT, "청구금액 + AMT_G LIKE ZUNICT1002-PU_AMT, "할인금액 + AMT_H LIKE ZUNICT1002-PU_AMT, "잔액 + STBLG LIKE BKPF-STBLG, "역분개전표 + STJAH LIKE BKPF-STJAH, "역분개년도 + BUZEI LIKE BSEG-BUZEI, + HKONT LIKE BSEG-HKONT, + KOSTL2 LIKE BSEG-KOSTL, + AUGBL LIKE BSEG-AUGBL, + AUAHR LIKE BKPF-GJAHR, + AUGDT LIKE BSEG-AUGDT, + CHFLG(1) TYPE C, + END OF GT_ITEM. +``` + +#### GT_ITEM2 — data · L89-L89 {#decl-zfir0120top-89-gt_item2} + +```abap +DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z1000 — data · L91-L91 {#decl-zfir0120top-91-gt_z1000} + +```abap +DATA: GT_Z1000 LIKE ZUNICT1000 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z1001 — data · L92-L92 {#decl-zfir0120top-92-gt_z1001} + +```abap +DATA: + GT_Z1001 LIKE ZUNICT1001 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z1002 — data · L93-L93 {#decl-zfir0120top-93-gt_z1002} + +```abap +DATA: + GT_Z1002 LIKE ZUNICT1002 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z1003 — data · L94-L94 {#decl-zfir0120top-94-gt_z1003} + +```abap +DATA: + GT_Z1003 LIKE ZUNICT1003 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0150 — data · L95-L95 {#decl-zfir0120top-95-gt_z0150} + +```abap +DATA: + GT_Z0150 LIKE ZFIT0150 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0151 — data · L96-L96 {#decl-zfir0120top-96-gt_z0151} + +```abap +DATA: + GT_Z0151 LIKE ZFIT0151 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0150_S — data · L97-L97 {#decl-zfir0120top-97-gt_z0150_s} + +```abap +DATA: + GT_Z0150_S LIKE ZFIT0150 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0151_S — data · L98-L98 {#decl-zfir0120top-98-gt_z0151_s} + +```abap +DATA: + GT_Z0151_S LIKE ZFIT0151 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BKPF — data · L99-L99 {#decl-zfir0120top-99-gt_bkpf} + +```abap +DATA: + GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSEG — data · L100-L100 {#decl-zfir0120top-100-gt_bseg} + +```abap +DATA: + GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_AMT_G — data · L103-L107 {#decl-zfir0120top-103-gt_amt_g} + +```abap +DATA: BEGIN OF GT_AMT_G OCCURS 0, + HKONT LIKE BSEG-HKONT, + KOSTL LIKE BSEG-KOSTL, + DMBTR LIKE BSEG-DMBTR, + END OF GT_AMT_G. +``` + +#### GT_LFA1 — data · L110-L114 {#decl-zfir0120top-110-gt_lfa1} + +```abap +DATA: BEGIN OF GT_LFA1 OCCURS 0, + LIFNR LIKE LFA1-LIFNR, + STCD2 LIKE LFA1-STCD2, + NAME1 LIKE LFA1-NAME1, + END OF GT_LFA1. +``` + +#### GT_CSKT — data · L117-L120 {#decl-zfir0120top-117-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + LTEXT LIKE CSKT-LTEXT, + END OF GT_CSKT. +``` + +#### GT_DOMAIN — data · L123-L127 {#decl-zfir0120top-123-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### GV_MONTH — data · L129-L129 {#decl-zfir0120top-129-gv_month} + +```abap +DATA: GV_MONTH(2) TYPE N. +``` + +#### GV_HIDE — data · L130-L130 {#decl-zfir0120top-130-gv_hide} + +```abap +DATA: + GV_HIDE(1) TYPE C. " 포스팅 가능 여부 +``` + +#### R_BUDAT — ranges · L132-L132 {#decl-zfir0120top-132-r_budat} + +```abap +RANGES: R_BUDAT FOR BKPF-BUDAT. +``` + +#### GT_FCAT_ITEM2 — data · L135-L135 {#decl-zfir0120top-135-gt_fcat_item2} + +```abap +DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT. +``` + +#### GS_STABLE — data · L137-L137 {#decl-zfir0120top-137-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GC_SPLITTER — data · L138-L138 {#decl-zfir0120top-138-gc_splitter} + +```abap +DATA: + GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GC_CONTAINER1 — data · L139-L139 {#decl-zfir0120top-139-gc_container1} + +```abap +DATA: + GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GC_CONTAINER2 — data · L140-L140 {#decl-zfir0120top-140-gc_container2} + +```abap +DATA: + GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GV_ALV_GRID — data · L141-L141 {#decl-zfir0120top-141-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID1 — data · L142-L142 {#decl-zfir0120top-142-gv_alv_grid1} + +```abap +DATA: + GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID2 — data · L143-L143 {#decl-zfir0120top-143-gv_alv_grid2} + +```abap +DATA: + GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L144-L144 {#decl-zfir0120top-144-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_LAYO1 — data · L145-L145 {#decl-zfir0120top-145-gv_layo1} + +```abap +DATA: + GV_LAYO1 TYPE LVC_S_LAYO. +``` + +#### GV_LAYO2 — data · L146-L146 {#decl-zfir0120top-146-gv_layo2} + +```abap +DATA: + GV_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L147-L147 {#decl-zfir0120top-147-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### GV_VARI1 — data · L148-L148 {#decl-zfir0120top-148-gv_vari1} + +```abap +DATA: + GV_VARI1 TYPE DISVARIANT. +``` + +#### GV_VARI2 — data · L149-L149 {#decl-zfir0120top-149-gv_vari2} + +```abap +DATA: + GV_VARI2 TYPE DISVARIANT. +``` + +#### C_BLART — constants · L154-L154 {#decl-zfir0120top-154-c_blart} + +```abap +CONSTANTS: C_BLART LIKE BKPF-BLART VALUE 'KZ'. "공급업체 지급 +``` + +#### P_BUKRS — parameter · L161-L161 {#decl-zfir0120top-161-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_SPMON — parameter · L162-L162 {#decl-zfir0120top-162-p_spmon} + +```abap +PARAMETERS: + P_SPMON LIKE S001-SPMON OBLIGATORY. +``` + +#### P_COMP — parameter · L163-L163 {#decl-zfir0120top-163-p_comp} + +```abap +PARAMETERS: + P_COMP LIKE ZUNICT1000-COMP OBLIGATORY. +``` + +#### P_RA — parameter · L169-L169 {#decl-zfir0120top-169-p_ra} + +```abap +PARAMETERS : P_RA RADIOBUTTON GROUP G1. "전체 +``` + +#### P_RB — parameter · L171-L171 {#decl-zfir0120top-171-p_rb} + +```abap +PARAMETERS : P_RB RADIOBUTTON GROUP G1. "차이자료 +``` + +#### P_RC — parameter · L180-L180 {#decl-zfir0120top-180-p_rc} + +```abap +PARAMETERS : P_RC RADIOBUTTON GROUP G2. "전표생성 +``` + +#### P_RD — parameter · L182-L182 {#decl-zfir0120top-182-p_rd} + +```abap +PARAMETERS : P_RD RADIOBUTTON GROUP G2. "이력조회 +``` + +#### P_BUDAT — parameter · L189-L189 {#decl-zfir0120top-189-p_budat} + +```abap +PARAMETERS: P_BUDAT LIKE BKPF-BUDAT OBLIGATORY. +``` + +### `ZFIR0120F01` (5건) + +#### LT_DOCU — data · unit 로컬 · L149-L152 {#decl-zfir0120f01-149-lt_docu} + +```abap + DATA: BEGIN OF LT_DOCU OCCURS 0, + AUGBL LIKE BSEG-AUGBL, + AUGDT LIKE BSEG-AUGDT, + END OF LT_DOCU. +``` + +#### LT_Z1001 — data · unit 로컬 · L285-L285 {#decl-zfir0120f01-285-lt_z1001} + +```abap + DATA: LT_Z1001 LIKE ZUNICT1001 OCCURS 0 WITH HEADER LINE. +``` + +#### LT_Z1003 — data · unit 로컬 · L287-L287 {#decl-zfir0120f01-287-lt_z1003} + +```abap +DATA: + LT_Z1003 LIKE ZUNICT1003 OCCURS 0 WITH HEADER LINE. +``` + +#### LV_CNT — data · unit 로컬 · L1270-L1270 {#decl-zfir0120f01-1270-lv_cnt} + +```abap + DATA: LV_CNT(3) TYPE N. +``` + +#### LV_LAST — data · unit 로컬 · L1271-L1271 {#decl-zfir0120f01-1271-lv_last} + +```abap +DATA: + LV_LAST(1) TYPE C. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0120 L32-54 | 1 | INITIALIZATION 에서 ALV 설정을 준비하고 정산월(전월)·카드사(롯데카드 210)·전기일(당일) 기본값을 설정한다. | +| START-OF-SELECTION | EVENT | ZFIR0120 L55-63 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0120 L64-70 | 1 | END-OF-SELECTION 에서 조회 결과 GT_HEAD 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0120CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0120CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0120CLS L41-43 | 0 | ALV 그리드 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| GET_DATA | FORM | ZFIR0120F01 L9-49 | 2 | 정산월(P_SPMON)로 조회기간 범위를 만들고 전표 생성 모드면 이력·승인·매입·청구·전표 아이템을 읽어 대조 데이터를, 이력조회 모드면 저장 이력을 읽어 표시 데이터를 만든다. | +| GET_ZUNICT1001 | FORM | ZFIR0120F01 L55-83 | 1 | 법인카드 승인내역과 카드 마스터, 관련 전표 헤더를 조회한다. | +| GET_ZUNICT1002 | FORM | ZFIR0120F01 L89-117 | 1 | 회사코드·카드사·정산월 조건으로 법인카드 매입내역(ZUNICT1002)을 읽고 카드 마스터(ZUNICT1000)와 기표 전표 헤더(BKPF)를 추가 조회한다. | +| GET_ZUNICT1003 | FORM | ZFIR0120F01 L123-142 | 1 | 회사코드·카드사·정산월 조건으로 법인카드 청구내역(ZUNICT1003)을 읽고 해당 카드의 카드 마스터(ZUNICT1000)를 추가 조회한다. | +| GET_ZFIT0150 | FORM | ZFIR0120F01 L148-226 | 2 | 정산 이력 테이블 ZFIT0150/ZFIT0151 에서 해당 월의 기존 저장내역과 관련 전표 헤더를 읽고, 전표 생성 모드에서 역분개되지 않은 반제전표가 이미 있으면 중복 처리를 막는다. | +| GET_BSEG | FORM | ZFIR0120F01 L232-278 | 2 | 카드 마스터를 중복 제거한 뒤 카드사 공급업체(LFA1)·회사코드(T001)·관리회계영역(TKA02)·코스트센터 텍스트(CSKT)를 읽고, 전표 헤더 기준으로 전표 아이템(BSEG)을 조회한다. | +| DISPLAY_DATA | FORM | ZFIR0120F01 L284-744 | 8 | 카드 매입내역(ZUNICT1002)을 기준으로 승인·청구 내역과 기표 전표(BKPF/BSEG)를 대조해 처리금액·대상금액·청구·할인·차액·미청구액을 계산하고 아이템(GT_ITEM)과 카드별 헤더(GT_HEAD)를 만든다(1/2 창). | +| DISPLAY_DATA_2 | FORM | ZFIR0120F01 L750-771 | 1 | 정산 이력 조회 모드에서 저장된 헤더(ZFIT0150)와 상세(ZFIT0151) 이력을 GT_HEAD/GT_ITEM 으로 옮기고 반제전표 유무에 따라 신호등 아이콘을 설정한다. | +| SPLITTER_CONTAINER | FORM | ZFIR0120F01 L777-829 | 0 | 화면 0100 의 커스텀 컨테이너에 2행 스플리터를 만들어 헤더/상세 ALV 그리드 객체 두 개를 생성하는 컨트롤 플러밍 FORM 이다. | +| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0120F01 L838-865 | 0 | 두 ALV 그리드에 핫스팟·더블클릭 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·필드카탈로그를 설정해 그리드를 표시하는 ALV 초기화 플러밍 FORM 이다. | +| SET_GRID_LAYOUT1 | FORM | ZFIR0120F01 L874-889 | 0 | 헤더/상세 두 ALV 그리드의 레이아웃(제목, 열 최적화, 선택모드, 줄무늬)을 설정하는 ALV 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY1 | FORM | ZFIR0120F01 L898-913 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 임시전표 헤더 목록(GT_HEAD)을 상단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS1 | FORM | ZFIR0120F01 L922-1032 | 0 | 헤더 ALV(GT_HEAD)의 필드카탈로그를 생성하고 상태 아이콘·카드번호·금액·코스트센터·반제전표(핫스팟)·오류메시지 컬럼 속성을 설정하는 ALV 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY2 | FORM | ZFIR0120F01 L1041-1056 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 선택 전표의 아이템 목록(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS2 | FORM | ZFIR0120F01 L1065-1169 | 0 | 아이템 ALV(GT_ITEM)의 필드카탈로그를 생성하고 카드번호·사용자·공급업체·승인/매입번호·전표번호(핫스팟)·금액 컬럼의 텍스트·정렬·통화 속성을 설정하는 ALV 플러밍 FORM 이다. | +| HOTSPOT_CLICK | FORM | ZFIR0120F01 L1179-1210 | 2 | 헤더 ALV 핫스팟 클릭 시 카드번호(CARDNO)면 해당 카드의 상세 아이템을 GT_ITEM2 로 추려 상세 그리드를 갱신하고, 반제전표(AUGBL)면 FB03 으로 전표를 조회한다. | +| HOTSPOT_CLICK2 | FORM | ZFIR0120F01 L1219-1235 | 1 | 상세 ALV 에서 전표번호(BELNR) 핫스팟 클릭 시 파라미터 ID 를 설정하고 FB03 으로 회계전표를 조회한다. | +| DOUBLE_CLICK | FORM | ZFIR0120F01 L1244-1263 | 1 | 헤더 ALV 더블클릭 시 해당 회사코드·카드번호의 상세 아이템(GT_ITEM)을 GT_ITEM2 로 추려 상세 그리드 갱신용 OK 코드 ZUSER 를 발생시킨다. | +| DOCUMENT_POSTING | FORM | ZFIR0120F01 L1269-1375 | 3 | 카드별 청구 정산 내역으로 반제/미결 전표 데이터를 만들고 카드 300건 단위로 전표를 생성한 뒤 정산 이력을 저장한다. | +| MAKE_BSELK | FORM | ZFIR0120F01 L1381-1391 | 1 | FB05 반제 전기를 위한 반제 계정 선택 헤더(BSELK)에 공급업체(LIFNR)·회사코드·계정유형 K·특별G/L 제외 지시자를 채운다. | +| MAKE_BKPF | FORM | ZFIR0120F01 L1397-1410 | 1 | FB05 반제 전기용 전표 헤더(BBKPF)를 전표유형 KZ, 전기일, 회사코드, 현지통화, 반제 트랜잭션 UMBUCHNG(대체전기)로 구성한다. | +| MAKE_BSEG | FORM | ZFIR0120F01 L1416-1435 | 1 | 코스트센터별 청구할인 금액(GT_AMT_G)을 G/L 계정 라인(BBSEG)으로 만들어 금액 부호에 따라 전기키 50/40 과 반대전기 지시자를 설정한다. | +| BDC_FB05 | FORM | ZFIR0120F01 L1441-1525 | 2 | 구성한 반제 데이터로 전표를 전기하고 결과를 화면 테이블·정산 이력에 반영한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0120I01 L9-17 | 1 | 화면 0100 PAI 에서 POST 기능코드일 때 DOCUMENT_POSTING 을 호출해 전표를 생성하는 사용자 명령 MODULE 이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0120O01 L10-20 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0120O01 L26-49 | 0 | | diff --git a/wiki/programs/ZFIR0130.md b/wiki/programs/ZFIR0130.md new file mode 100644 index 0000000..387804b --- /dev/null +++ b/wiki/programs/ZFIR0130.md @@ -0,0 +1,4248 @@ +--- +type: abap-program +title: "ZFIR0130 — 시뮬레이션" +description: "ZFIR0090(전자결재 승인 자동기표)의 전기 결과를 실제로 전표를 만들지 않고 미리 확인하는 시뮬레이션 화면이다. ZIFT0010 을 읽어 BSEG_PROCESS(286줄)로 전표 아이템을 구성해 헤더/아이템 2단 ALV 로 보여주며, 계정 결정과 금액 배분이 의도대로 되는지 검증하는 용도다. 선택화면이 없고 ZFIR0110_DOC 에서 호출된다." +resource: "abap://ZFIR0130" +tags: ["전자결재", "시뮬레이션", "자동기표", "경비처리", "FI", "행선택", "단건조회", "결재문서", "선택검증", "문서조회", "인터페이스로그", "공통로그", "순번", "호출이력", "요청자", "감사로그", "URL", "브라우저호출", "RFC", "외부시스템연계"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["ANLA", "CSKT", "J_1BBRANCH", "KNA1", "LFA1", "LTDX", "MAKT", "SKAT", "T001", "T003T", "T007S", "T052U", "TBSLT", "TKA02", "USR01", "V_USERNAME", "ZFIT0160", "ZIFT0010"] +x-tables-write: ["ZIFT0010"] +x-calls: ["AS03", "BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CALL_BROWSER", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FD03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "MM03", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR"] +x-code-hash: "f6db1face2853c032fed7901b66647143351edecdee832f800c21a4ec83371a2" +x-unit-count: 105 +x-chunk-count: 47 +x-declaration-count: 312 +--- + +## 업무 목적 + +ZFIR0090(전자결재 승인 자동기표)의 전기 결과를 실제로 전표를 만들지 않고 미리 확인하는 시뮬레이션 화면이다. ZIFT0010 을 읽어 BSEG_PROCESS(286줄)로 전표 아이템을 구성해 헤더/아이템 2단 ALV 로 보여주며, 계정 결정과 금액 배분이 의도대로 되는지 검증하는 용도다. 선택화면이 없고 ZFIR0110_DOC 에서 호출된다. + +## 주 흐름 + +1. ALV 설정을 준비한다 (ALV_SETTING) +2. ZIFT0010 에서 대상 결재 문서를 읽는다 (START-OF-SELECTION 에서 직접 처리) +3. 전표 아이템을 구성한다 — 계정 결정, 금액 배분, 세금 처리 (BSEG_PROCESS) +4. 결재상신 중인 문서를 별도로 조회한다 (DISPLAY_PROCESSING_DATA) +5. 스플리터 2단 ALV 로 헤더/아이템을 화면에 출력한다 (SPLITTER_CONTAINER) + +## 핵심 내부테이블 + +- `GT_ITEM` — 시뮬레이션된 전표 아이템 (채움: BSEG_PROCESS / 소비: SET_FIELD_CATALOGS2) + +## 테이블 / 외부 호출 + +- read: ANLA, CSKT, J_1BBRANCH, KNA1, LFA1, LTDX, MAKT, SKAT, T001, T003T, T007S, T052U, TBSLT, TKA02, USR01, V_USERNAME, ZFIT0160, ZIFT0010 +- write: ZIFT0010 +- 외부 호출: AS03, BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CALL_BROWSER, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FD03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, MM03, NUMBER_GET_NEXT, NUMERIC_CHECK + +## 로직 조각 (47건 / unit 36개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT START-OF-SELECTION — `ZFIR0130` L46-L68 (23줄) + +*ZFIR0110_DOC 이 ABAP 메모리로 넘긴 T_BKPF/T_BSEG 를 IMPORT 해 GT_BKPF/GT_BSEG 로 받고 회사코드 정보를 읽은 뒤 BSEG_PROCESS 로 시뮬레이션 아이템을 구성한다.* + +> 이 unit 의 조각 1개가 17/23줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 메모리 ID T_BKPF/T_BSEG 에서 호출 프로그램이 넘긴 전표 헤더·아이템을 IMPORT 해 GT_BKPF/GT_BSEG 에 담고, 헤더가 없으면 화면을 닫으며 T001 회사코드 정보를 읽은 후 BSEG_PROCESS 를 수행한다. + +```abap + 48| IMPORT T_BKPF FROM MEMORY ID 'T_BKPF'. + 49| IMPORT T_BSEG FROM MEMORY ID 'T_BSEG'. + 50| + 51| GT_BKPF[] = T_BKPF[]. + 52| GT_BSEG[] = T_BSEG[]. + 53| + 54| + 55| READ TABLE GT_BKPF INDEX 1. + 56| IF SY-SUBRC <> 0. + 57| LEAVE TO SCREEN 0. + 58| ENDIF. + 59| + 60| SELECT SINGLE * FROM T001 + 61| WHERE BUKRS = GT_BKPF-BUKRS. + 62| + 63| + 64| PERFORM BSEG_PROCESS. +``` + +- **EN**: Imports the caller's document header/items from ABAP memory IDs T_BKPF/T_BSEG into GT_BKPF/GT_BSEG, leaves when no header exists, reads T001 for the company code and runs BSEG_PROCESS. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- 호출(파서): BSEG_PROCESS +- SAP 객체: T001, BKPF, BSEG +- 업무 키워드: 메모리 IMPORT, 전표 시뮬레이션, 전표 헤더, 회사코드 +- English: IMPORT FROM MEMORY, Document Simulation, T001 +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zficom-13-bkpf), [`T_BKPF`](#decl-zfir0130top-18-t_bkpf), [`BSEG`](#decl-zficom-14-bseg), [`T_BSEG`](#decl-zfir0130top-19-t_bseg), [`GT_BKPF`](#decl-zfir0130top-15-gt_bkpf), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`T001`](#decl-zficom-11-t001) +- 위치: `abap://ZFIR0130/ZFIR0130#L48-L64` · confidence 0.9 · `ZFIR0130#ZFIR0130#EVENT#START-OF-SELECTION#C1` + +### FORM BSEG_PROCESS — `ZFIR0130F01` L617-L902 (286줄) + +*메모리로 받은 시뮬레이션 BSEG 아이템에 전표유형·코스트센터·사업장·전기키·고객/구매처/자산/자재·G/L 계정·지급조건·세금코드 텍스트를 붙여 표시용 GT_ITEM/GT_ITEM2 를 만드는 FORM 이다.* + +> 이 unit 의 조각 7개가 251/286줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 입력자명(V_USERNAME)·전표유형명(T003T)을 조회하고 회사코드의 관리회계영역(TKA02)을 읽어 후속 코스트센터 조회에 사용한다. + +```abap + 625| CLEAR : GT_UNAME[], GT_UNAME. + 626| SELECT BNAME + 627| NAME_TEXT AS NAMET + 628| INTO TABLE GT_UNAME + 629| FROM V_USERNAME + 630| WHERE BNAME EQ SY-UNAME. + 631| + 632| + 633| + 634| * 전표유형명 + 635| CLEAR : GT_T003T[], GT_T003T. + 636| SELECT BLART LTEXT + 637| INTO TABLE GT_T003T + 638| FROM T003T + 639| WHERE SPRAS EQ SY-LANGU + 640| AND BLART EQ GT_BKPF-BLART. + 641| + 642| + 643| + 644| * 코스트센터명 + 645| CLEAR : GT_CSKT[], GT_CSKT, TKA02. + 646| SELECT SINGLE * + 647| FROM TKA02 + 648| WHERE BUKRS EQ GT_BKPF-BUKRS. +``` + +- **EN**: Reads the user name from V_USERNAME, the document type text from T003T, and the controlling area of the company code from TKA02. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md), [T003T](/tables/T003T.md), [TKA02](/tables/TKA02.md) / write - +- SAP 객체: V_USERNAME, T003T, TKA02 +- 업무 키워드: 입력자명, 전표유형명, 관리회계영역 +- English: User Name, Document Type, Controlling Area, TKA02 +- 정의부(복사 시 함께 필요): [`GT_UNAME`](#decl-zfir0130top-107-gt_uname), [`GT_T003T`](#decl-zfir0130top-112-gt_t003t), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0130top-15-gt_bkpf), [`GT_CSKT`](#decl-zfir0130top-117-gt_cskt), [`TKA02`](#decl-zfir0130top-9-tka02) +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L625-L648` · confidence 0.85 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C1` + +#### [sql_select] GT_BSEG 기준 FOR ALL ENTRIES 로 코스트센터명(CSKT)·사업장명(J_1BBRANCH)·전기키명(TBSLT, 특별G/L지시자 포함)을 일괄 조회한다. + +```abap + 651| SELECT KOSTL KTEXT + 652| INTO TABLE GT_CSKT + 653| FROM CSKT + 654| FOR ALL ENTRIES IN GT_BSEG + 655| WHERE SPRAS EQ SY-LANGU + 656| AND KOKRS EQ TKA02-KOKRS + 657| AND KOSTL EQ GT_BSEG-KOSTL. + 658| + 659| + 660| * 사업장명 + 661| CLEAR : GT_BRANCH[], GT_BRANCH. + 662| SELECT BRANCH NAME + 663| INTO TABLE GT_BRANCH + 664| FROM J_1BBRANCH + 665| FOR ALL ENTRIES IN GT_BSEG + 666| WHERE BUKRS EQ GT_BSEG-BUKRS + 667| AND BRANCH EQ GT_BSEG-BUPLA. + 668| + 669| + 670| * 전기키명 + 671| CLEAR : GT_TBSLT[], GT_TBSLT. + 672| SELECT BSCHL UMSKZ LTEXT + 673| INTO TABLE GT_TBSLT + 674| FROM TBSLT + 675| FOR ALL ENTRIES IN GT_BSEG + 676| WHERE SPRAS EQ SY-LANGU + 677| AND BSCHL EQ GT_BSEG-BSCHL + 678| AND UMSKZ EQ GT_BSEG-UMSKZ. +``` + +- **EN**: Mass-reads cost center texts (CSKT), business place names (J_1BBRANCH) and posting key texts (TBSLT incl. special G/L indicator) for all BSEG lines. +- 테이블(파서): read [CSKT](/tables/CSKT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [TBSLT](/tables/TBSLT.md) / write - +- SAP 객체: CSKT, J_1BBRANCH, TBSLT +- 업무 키워드: 코스트센터명, 사업장명, 전기키명, 특별 G/L +- English: Cost Center, Business Place, Posting Key, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`GT_CSKT`](#decl-zfir0130top-117-gt_cskt), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`TKA02`](#decl-zfir0130top-9-tka02), [`GT_BRANCH`](#decl-zfir0130top-122-gt_branch), [`GT_TBSLT`](#decl-zfir0130top-127-gt_tbslt) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L651-L678` · confidence 0.9 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C2` + +#### [sql_select] 고객명(KNA1)·구매처명(LFA1)과 G/L 계정명(SKAT, HKONT 및 SAKNR 양쪽)을 FOR ALL ENTRIES 로 조회하고 SKAT 결과를 계정번호 기준 중복 제거한다. + +```abap + 681| CLEAR : GT_KNA1[], GT_KNA1. + 682| SELECT KUNNR NAME1 + 683| INTO TABLE GT_KNA1 + 684| FROM KNA1 + 685| FOR ALL ENTRIES IN GT_BSEG + 686| WHERE KUNNR EQ GT_BSEG-KUNNR. + 687| + 688| * 구매처명 + 689| CLEAR : GT_LFA1[], GT_LFA1. + 690| SELECT LIFNR NAME1 + 691| INTO TABLE GT_LFA1 + 692| FROM LFA1 + 693| FOR ALL ENTRIES IN GT_BSEG + 694| WHERE LIFNR EQ GT_BSEG-LIFNR. + 695| + 696| * G/L 계정명 + 697| CLEAR : GT_SKAT[], GT_SKAT. + 698| SELECT SAKNR TXT50 + 699| INTO TABLE GT_SKAT + 700| FROM SKAT + 701| FOR ALL ENTRIES IN GT_BSEG + 702| WHERE KTOPL EQ T001-KTOPL + 703| AND SPRAS EQ SY-LANGU + 704| AND SAKNR EQ GT_BSEG-HKONT. + 705| + 706| + 707| SELECT SAKNR TXT50 + 708| APPENDING TABLE GT_SKAT + 709| FROM SKAT + 710| FOR ALL ENTRIES IN GT_BSEG + 711| WHERE KTOPL EQ T001-KTOPL + 712| AND SPRAS EQ SY-LANGU + 713| AND SAKNR EQ GT_BSEG-SAKNR. + 714| SORT GT_SKAT BY SAKNR. + 715| DELETE ADJACENT DUPLICATES FROM GT_SKAT COMPARING SAKNR. +``` + +- **EN**: Reads customer names (KNA1), vendor names (LFA1) and G/L account texts (SKAT for both HKONT and SAKNR) for all BSEG lines, de-duplicating SKAT by account. +- 테이블(파서): read [KNA1](/tables/KNA1.md), [LFA1](/tables/LFA1.md), [SKAT](/tables/SKAT.md) / write - +- SAP 객체: KNA1, LFA1, SKAT +- 업무 키워드: 고객명, 구매처명, G/L 계정명, 중복 제거 +- English: Customer, Vendor, G/L Account Text, KNA1, LFA1, SKAT +- 정의부(복사 시 함께 필요): [`GT_KNA1`](#decl-zfir0130top-133-gt_kna1), [`KNA1`](#decl-zficom-38-kna1), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`GT_LFA1`](#decl-zfir0130top-138-gt_lfa1), [`LFA1`](#decl-zficom-36-lfa1), [`GT_SKAT`](#decl-zfir0130top-143-gt_skat), [`T001`](#decl-zficom-11-t001) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L681-L715` · confidence 0.9 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C3` + +#### [sql_select] 지급조건명(T052U)과 세금절차(T005-KALSM) 기준 세금코드명(T007S)을 FOR ALL ENTRIES 로 조회한다. + +```abap + 719| CLEAR : GT_T052U[], GT_T052U. + 720| SELECT ZTERM TEXT1 + 721| INTO TABLE GT_T052U + 722| FROM T052U + 723| FOR ALL ENTRIES IN GT_BSEG + 724| WHERE SPRAS EQ SY-LANGU + 725| AND ZTERM EQ GT_BSEG-ZTERM. + 726| + 727| * 세금코드명 + 728| CLEAR : GT_T007S[], GT_T007S. + 729| SELECT MWSKZ TEXT1 + 730| INTO TABLE GT_T007S + 731| FROM T007S + 732| FOR ALL ENTRIES IN GT_BSEG + 733| WHERE SPRAS EQ SY-LANGU + 734| AND KALSM EQ T005-KALSM + 735| AND MWSKZ EQ GT_BSEG-MWSKZ. +``` + +- **EN**: Reads payment term texts (T052U) and tax code texts (T007S for the country tax procedure) for all BSEG lines. +- 테이블(파서): read [T052U](/tables/T052U.md), [T007S](/tables/T007S.md) / write - +- SAP 객체: T052U, T007S, T005 +- 업무 키워드: 지급조건명, 세금코드명, 세금계산절차 +- English: Payment Terms, Tax Code, T052U, T007S +- 정의부(복사 시 함께 필요): [`GT_T052U`](#decl-zfir0130top-148-gt_t052u), [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`GT_T007S`](#decl-zfir0130top-153-gt_t007s), [`T005`](#decl-zficom-12-t005) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L719-L735` · confidence 0.9 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C4` + +#### [calculation] BSEG 행을 GT_ITEM 으로 옮기며 사업장명을 붙이고, 역전기 지시자(XNEGP)면 금액 부호를 뒤집고 차대지시자(SHKZG)를 S↔H 로 바꾼다. + +```abap + 740| LOOP AT GT_BSEG. + 741| MOVE-CORRESPONDING GT_BSEG TO GT_ITEM. + 742| + 743| * 사업장명 + 744| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_BSEG-BUPLA. + 745| IF SY-SUBRC EQ 0. + 746| GT_ITEM-BUPLA_T = GT_BRANCH-NAME. + 747| ENDIF. + 748| + 749| * 차대지시자 + 750| IF GT_BSEG-XNEGP = C_X. "마이너스 + 751| GT_ITEM-WRBTR = 0 - GT_ITEM-WRBTR. + 752| GT_ITEM-DMBTR = 0 - GT_ITEM-DMBTR. + 753| CASE GT_BSEG-SHKZG. + 754| WHEN C_S. + 755| GT_ITEM-SHKZG = C_H. + 756| WHEN C_H. + 757| GT_ITEM-SHKZG = C_S. + 758| ENDCASE. + 759| ENDIF. +``` + +- **EN**: Copies each BSEG line into GT_ITEM with the business place name and, for negative postings (XNEGP), negates the amounts and swaps the debit/credit indicator. +- SAP 객체: BSEG +- 업무 키워드: 역전기, 차대지시자, 금액 부호, 사업장 +- English: Negative Posting, Debit/Credit Indicator, XNEGP +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_BRANCH`](#decl-zfir0130top-122-gt_branch), [`C_X`](#decl-zficom-231-c_x), [`C_S`](#decl-zficom-226-c_s), [`C_H`](#decl-zficom-215-c_h) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L740-L759` · confidence 0.85 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C5` + +#### [calculation] 계정유형(KOART D/K/A/M/S)에 따라 보조부 계정(고객·구매처·자산 ANLN1·자재 MATNR)과 그 명칭(KNA1/LFA1/ANLA/MAKT)을 세팅하고, 계정유형이 없는 임시전표는 LIFNR/KUNNR/ANLN1 존재 여부로 유형과 명칭을 보완한다. + +```abap + 762| CASE GT_BSEG-KOART. + 763| WHEN C_D. + 764| GT_ITEM-KOART_T = '고객'. + 765| IF NOT GT_BSEG-KUNNR IS INITIAL. + 766| GT_ITEM-SUBAC = GT_BSEG-KUNNR. + 767| * 고객명 + 768| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_BSEG-KUNNR. + 769| IF SY-SUBRC EQ 0. + 770| GT_ITEM-SUBNM = GT_KNA1-NAME1. + 771| ENDIF. + 772| ENDIF. + 773| WHEN C_K. + 774| GT_ITEM-KOART_T = '구매처'. + 775| * 보조부계정 + 776| IF NOT GT_BSEG-LIFNR IS INITIAL. + 777| GT_ITEM-SUBAC = GT_BSEG-LIFNR. + 778| * 구매처명 + 779| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_BSEG-LIFNR. + 780| IF SY-SUBRC EQ 0. + 781| GT_ITEM-SUBNM = GT_LFA1-NAME1. + 782| ENDIF. + 783| ENDIF. + 784| WHEN C_A. + 785| GT_ITEM-KOART_T = '자산'. + 786| IF NOT GT_BSEG-ANLN1 IS INITIAL. + 787| GT_ITEM-SUBAC = GT_BSEG-ANLN1+2(10). + 788| * 자산코드명 + 789| SELECT SINGLE TXT50 + 790| INTO GT_ITEM-SUBNM + 791| FROM ANLA + 792| WHERE ANLA~BUKRS EQ GT_BSEG-BUKRS + 793| AND ANLA~ANLN1 EQ GT_BSEG-ANLN1. "자산 + 794| ENDIF. + 795| WHEN C_M. + 796| GT_ITEM-KOART_T = '자재'. + 797| IF NOT GT_BSEG-MATNR IS INITIAL. + 798| GT_ITEM-SUBAC = GT_BSEG-MATNR+8(10). + 799| * 자재코드명 + 800| SELECT SINGLE MAKTX + 801| INTO GT_ITEM-SUBNM + 802| FROM MAKT + 803| WHERE MAKT~SPRAS EQ SY-LANGU + 804| AND MAKT~MATNR EQ GT_BSEG-MATNR. + 805| ENDIF. + 806| WHEN C_S. + 807| GT_ITEM-KOART_T = 'G/L 계정'. + 808| ENDCASE. + 809| + 810| * 임시전표일 경우 계정유형이 없음 + 811| * 보조부계정 + 812| IF NOT GT_BSEG-LIFNR IS INITIAL. + 813| GT_ITEM-KOART = C_K. + 814| GT_ITEM-SUBAC = GT_BSEG-LIFNR. + 815| * 구매처명 + 816| READ TABLE GT_LFA1 WITH KEY LIFNR = GT_BSEG-LIFNR. + 817| IF SY-SUBRC EQ 0. + 818| GT_ITEM-SUBNM = GT_LFA1-NAME1. + 819| ENDIF. + 820| ENDIF. + 821| IF NOT GT_BSEG-KUNNR IS INITIAL. + 822| GT_ITEM-KOART = C_D. + 823| GT_ITEM-SUBAC = GT_BSEG-KUNNR. + 824| * 고객명 + 825| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_BSEG-KUNNR. + 826| IF SY-SUBRC EQ 0. + 827| GT_ITEM-SUBNM = GT_KNA1-NAME1. + 828| ENDIF. + 829| ENDIF. + 830| IF NOT GT_BSEG-ANLN1 IS INITIAL. + 831| GT_ITEM-SUBAC = GT_BSEG-ANLN1+2(10). + 832| * 자산코드명 + 833| SELECT SINGLE TXT50 + 834| INTO GT_ITEM-SUBNM + 835| FROM ANLA + 836| WHERE ANLA~BUKRS EQ GT_BSEG-BUKRS + 837| AND ANLA~ANLN1 EQ GT_BSEG-ANLN1. "자산 + 838| ENDIF. +``` + +- **EN**: Sets the sub-ledger account and its name by account type (customer/vendor/asset via ANLA/material via MAKT) and, for temporary documents without KOART, derives them from LIFNR/KUNNR/ANLN1. +- 테이블(파서): read [ANLA](/tables/ANLA.md), [MAKT](/tables/MAKT.md) / write - +- SAP 객체: ANLA, MAKT, KNA1, LFA1 +- 업무 키워드: 계정유형, 보조부 계정, 고객, 구매처, 자산, 자재, 임시전표 +- English: Account Type, Sub-ledger Account, Asset Master, Material, ANLA, MAKT +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`C_D`](#decl-zficom-211-c_d), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_KNA1`](#decl-zfir0130top-133-gt_kna1), [`C_K`](#decl-zficom-218-c_k), [`GT_LFA1`](#decl-zfir0130top-138-gt_lfa1), [`C_A`](#decl-zficom-208-c_a), [`C_M`](#decl-zficom-220-c_m), [`C_S`](#decl-zficom-226-c_s) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L762-L838` · confidence 0.85 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C6` + +#### [calculation] G/L 계정명(HKONT 없으면 SAKNR 사용)·전기키명·지급조건명·코스트센터명·세금코드명을 조회 결과에서 붙이고 헤더(GT_BKPF)의 통화를 아이템에 넣어 GT_ITEM 에 추가한다. + +```abap + 841| IF NOT GT_BSEG-HKONT IS INITIAL. + 842| READ TABLE GT_SKAT WITH KEY SAKNR = GT_BSEG-HKONT. + 843| IF SY-SUBRC EQ 0. + 844| GT_ITEM-TXT50 = GT_SKAT-TXT50. + 845| ENDIF. + 846| ELSE. + 847| IF NOT GT_BSEG-SAKNR IS INITIAL. + 848| GT_ITEM-HKONT = GT_BSEG-SAKNR. + 849| READ TABLE GT_SKAT WITH KEY SAKNR = GT_BSEG-SAKNR. + 850| IF SY-SUBRC EQ 0. + 851| GT_ITEM-TXT50 = GT_SKAT-TXT50. + 852| ENDIF. + 853| ENDIF. + 854| ENDIF. + 855| + 856| * 전기키명 + 857| IF NOT GT_BSEG-BSCHL IS INITIAL. + 858| READ TABLE GT_TBSLT WITH KEY BSCHL = GT_BSEG-BSCHL + 859| UMSKZ = GT_BSEG-UMSKZ. + 860| IF SY-SUBRC EQ 0. + 861| GT_ITEM-BSCHL_T = GT_TBSLT-LTEXT. + 862| ENDIF. + 863| ENDIF. + 864| + 865| * 지급조건명 + 866| IF NOT GT_BSEG-ZTERM IS INITIAL. + 867| READ TABLE GT_T052U WITH KEY ZTERM = GT_BSEG-ZTERM. + 868| IF SY-SUBRC EQ 0. + 869| GT_ITEM-ZTERM_T = GT_T052U-TEXT1. + 870| ENDIF. + 871| ENDIF. + 872| + 873| * 코스트센터명 + 874| READ TABLE GT_CSKT WITH KEY KOSTL = GT_BSEG-KOSTL. + 875| IF SY-SUBRC EQ 0. + 876| GT_ITEM-KOSTL_T = GT_CSKT-KTEXT. + 877| ENDIF. + 878| + 879| * 세금코드명 + 880| READ TABLE GT_T007S WITH KEY MWSKZ = GT_BSEG-MWSKZ. + 881| IF SY-SUBRC EQ 0. + 882| GT_ITEM-MWSKZ_T = GT_T007S-TEXT1. + 883| ENDIF. + 884| + 885| READ TABLE GT_BKPF WITH KEY BELNR = GT_ITEM-BELNR + 886| GJAHR = GT_ITEM-GJAHR. + 887| IF SY-SUBRC EQ 0. + 888| GT_ITEM-WAERS = GT_BKPF-WAERS. + 889| ENDIF. + 890| APPEND GT_ITEM. CLEAR GT_ITEM. +``` + +- **EN**: Attaches G/L account (falling back to SAKNR), posting key, payment term, cost center and tax code texts from the lookup tables, sets the document currency from GT_BKPF and appends the item. +- SAP 객체: SKAT, TBSLT, T052U, CSKT, T007S +- 업무 키워드: G/L 계정명, 전기키명, 지급조건명, 코스트센터명, 세금코드명, 전표통화 +- English: G/L Account, Posting Key, Payment Terms, Cost Center, Tax Code, Currency +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zficom-14-bseg), [`GT_BSEG`](#decl-zfir0130top-16-gt_bseg), [`GT_SKAT`](#decl-zfir0130top-143-gt_skat), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_TBSLT`](#decl-zfir0130top-127-gt_tbslt), [`GT_T052U`](#decl-zfir0130top-148-gt_t052u), [`GT_CSKT`](#decl-zfir0130top-117-gt_cskt), [`GT_T007S`](#decl-zfir0130top-153-gt_t007s), [`BKPF`](#decl-zficom-13-bkpf), [`GT_BKPF`](#decl-zfir0130top-15-gt_bkpf) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L841-L890` · confidence 0.85 · `ZFIR0130#ZFIR0130F01#FORM#BSEG_PROCESS#C7` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0130/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0130/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0130/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0130/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0130/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0130/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0130/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0130#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0130/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0130/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0130/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0130/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0130/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0130/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0130/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0130/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0130/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0130/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0130/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0130/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0130/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0130/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0130/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0130/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0130/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0130/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0130#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0130/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0130/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0130/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0130/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 위치: `abap://ZFIR0130/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0130#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0130/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0130#ZFICOM#FORM#STATUS_BAR#C1` + +### FORM HOTSPOT_CLICK — `ZFIR0130F01` L414-L435 (22줄) + +*헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 17/22줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 헤더 행을 읽어 전표번호 컬럼이면 BSEG_PROCESS로 해당 경비 문서의 전표 아이템(GT_ITEM2)을 만들어 전표번호·항목 순으로 정렬하고 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다. + +```abap + 417| READ TABLE GT_HEAD INDEX P_ROW_ID-INDEX. + 418| CHECK SY-SUBRC EQ 0. + 419| + 420| CASE P_COLUMN_ID. + 421| * 전표번호 + 422| WHEN 'BELNR'. + 423| + 424| PERFORM BSEG_PROCESS. + 425| + 426| SORT GT_ITEM2 BY BELNR BUZEI. + 427| * PAI로 호출 + 428| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 429| EXPORTING + 430| NEW_CODE = 'ZUSER'. + 431| + 432| + 433| ENDCASE. +``` + +- **EN**: On document-number hotspot, builds the line items for the selected expense document via BSEG_PROCESS, sorts them and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): BSEG_PROCESS, CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 핫스팟 클릭, 전표 아이템 구성, 화면 갱신 +- English: Hotspot Click, Line Item, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0130top-29-gt_head), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_ITEM2`](#decl-zfir0130top-103-gt_item2) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L417-L433` · confidence 0.8 · `ZFIR0130#ZFIR0130F01#FORM#HOTSPOT_CLICK#C1` + +### FORM HOTSPOT_CLICK2 — `ZFIR0130F01` L444-L475 (32줄) + +*아이템 ALV 의 보조부계정(SUBAC) 핫스팟 클릭 시 계정유형별로 FD03/FK03/AS03/MM03 마스터 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 27/32줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 클릭한 아이템의 계정유형이 고객(D)이면 FD03, 구매처(K)면 FK03, 자산(A)이면 AS03, 자재(M)면 MM03 을 파라미터 ID 로 키를 넘겨 호출해 마스터를 조회한다. + +```abap + 447| READ TABLE GT_ITEM2 INDEX P_ROW_ID-INDEX. + 448| CHECK SY-SUBRC EQ 0. + 449| + 450| CASE P_COLUMN_ID. + 451| WHEN 'SUBAC'. + 452| CHECK GT_ITEM2-SUBAC IS NOT INITIAL. + 453| * 고객 + 454| IF GT_ITEM2-KOART EQ C_D. + 455| SET PARAMETER ID 'KUN' FIELD GT_ITEM2-SUBAC. + 456| SET PARAMETER ID 'BUK' FIELD GT_ITEM2-BUKRS. + 457| CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN. + 458| * 구매처 + 459| ELSEIF GT_ITEM2-KOART EQ C_K. + 460| SET PARAMETER ID 'LIF' FIELD GT_ITEM2-SUBAC. + 461| SET PARAMETER ID 'BUK' FIELD GT_ITEM2-BUKRS. + 462| CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN. + 463| * 자산 + 464| ELSEIF GT_ITEM2-KOART EQ C_A. + 465| SET PARAMETER ID 'AN1' FIELD GT_ITEM2-ANLN1. + 466| SET PARAMETER ID 'BUK' FIELD GT_ITEM2-BUKRS. + 467| CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN. + 468| * 자재 + 469| ELSEIF GT_ITEM2-KOART EQ C_M. + 470| SET PARAMETER ID 'MAT' FIELD GT_ITEM2-MATNR. + 471| CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. + 472| ENDIF. + 473| ENDCASE. +``` + +- **EN**: Depending on the clicked item's account type calls FD03 (customer), FK03 (vendor), AS03 (asset) or MM03 (material) with parameter IDs to display the master record. +- 호출(파서): FD03, FK03, AS03, MM03 +- SAP 객체: FD03, FK03, AS03, MM03 +- 업무 키워드: 핫스팟, 보조부계정 조회, 고객 마스터, 구매처 마스터, 자산 마스터, 자재 마스터 +- English: Hotspot, Customer Master, Vendor Master, Asset Master, Material Master +- 정의부(복사 시 함께 필요): [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_ITEM2`](#decl-zfir0130top-103-gt_item2), [`C_D`](#decl-zficom-211-c_d), [`C_K`](#decl-zficom-218-c_k), [`C_A`](#decl-zficom-208-c_a), [`C_M`](#decl-zficom-220-c_m) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L447-L473` · confidence 0.9 · `ZFIR0130#ZFIR0130F01#FORM#HOTSPOT_CLICK2#C1` + +### FORM DOUBLE_CLICK — `ZFIR0130F01` L484-L505 (22줄) + +*헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 더블클릭한 헤더 행의 회사코드·연도·전표번호와 일치하는 아이템을 GT_ITEM에서 추려 GT_ITEM2에 담고 전표번호·항목 순으로 정렬한 뒤 CL_GUI_CFW=>SET_NEW_OK_CODE로 화면 재표시를 유도한다. + +```abap + 489| READ TABLE GT_HEAD INDEX P_ROW-INDEX. + 490| CHECK SY-SUBRC EQ 0. + 491| + 492| LOOP AT GT_ITEM WHERE BUKRS EQ GT_HEAD-BUKRS + 493| AND GJAHR EQ GT_HEAD-GJAHR + 494| AND BELNR EQ GT_HEAD-BELNR. + 495| MOVE-CORRESPONDING GT_ITEM TO GT_ITEM2. + 496| APPEND GT_ITEM2. CLEAR GT_ITEM2. + 497| ENDLOOP. + 498| + 499| SORT GT_ITEM2 BY BELNR BUZEI. + 500| * PAI로 호출 + 501| CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE + 502| EXPORTING + 503| NEW_CODE = 'ZUSER'. +``` + +- **EN**: Filters the line items of the double-clicked document header into GT_ITEM2, sorts by document and line number, and triggers PAI with OK-code ZUSER to refresh the item grid. +- 호출(파서): CL_GUI_CFW=>SET_NEW_OK_CODE +- SAP 객체: CL_GUI_CFW +- 업무 키워드: 더블클릭, 전표 아이템 필터, 헤더 아이템 연동, 화면 갱신 +- English: Double Click, Line Item, Header-Item Link, SET_NEW_OK_CODE +- 정의부(복사 시 함께 필요): [`GT_HEAD`](#decl-zfir0130top-29-gt_head), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_ITEM2`](#decl-zfir0130top-103-gt_item2) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L489-L503` · confidence 0.85 · `ZFIR0130#ZFIR0130F01#FORM#DOUBLE_CLICK#C1` + +### FORM ALV_GRID_DISPLAY2 — `ZFIR0130F01` L259-L278 (20줄) + +*아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전표 아이템 내부테이블 GT_ITEM2를 하단 ALV 그리드에 출력한다. + +```abap + 264| GV_VARI2-REPORT = SY-REPID. + 265| CALL METHOD GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY + 266| EXPORTING + 267| I_STRUCTURE_NAME = 'GT_ITEM' + 268| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 269| IS_LAYOUT = GV_LAYO2 + 270| IS_VARIANT = GV_VARI2 + 271| I_BUFFER_ACTIVE = C_X + 272| I_SAVE = C_A + 273| CHANGING + 274| IT_OUTTAB = GT_ITEM2[] + 275| IT_FIELDCATALOG = GT_FCAT_ITEM[]. +``` + +- **EN**: Displays the document line items (GT_ITEM2) in the lower ALV grid via SET_TABLE_FOR_FIRST_DISPLAY. +- 호출(파서): GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 아이템 ALV 출력, 전표 아이템 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Line Item +- 정의부(복사 시 함께 필요): [`GV_VARI2`](#decl-zfir0130top-188-gv_vari2), [`GV_ALV_GRID2`](#decl-zfir0130top-182-gv_alv_grid2), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO2`](#decl-zfir0130top-185-gv_layo2), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_ITEM`](#decl-zfir0130top-50-gt_item), [`GT_ITEM2`](#decl-zfir0130top-103-gt_item2), [`GT_FCAT_ITEM`](#decl-zfialv-82-gt_fcat_item) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L264-L275` · confidence 0.8 · `ZFIR0130#ZFIR0130F01#FORM#ALV_GRID_DISPLAY2#C1` + +### FORM ALV_GRID_DISPLAY1 — `ZFIR0130F01` L135-L152 (18줄) + +*헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다.* + +> 이 unit 의 조각 1개가 12/18줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 레이아웃·변형·툴바 제외 목록과 함께 SET_TABLE_FOR_FIRST_DISPLAY를 호출해 전자결재 승인 경비 헤더 GT_HEAD를 상단 ALV 그리드에 출력한다. + +```abap + 140| GV_VARI1-REPORT = SY-REPID. + 141| CALL METHOD GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY + 142| EXPORTING + 143| I_STRUCTURE_NAME = 'GT_HEAD' + 144| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 145| IS_LAYOUT = GV_LAYO1 + 146| IS_VARIANT = GV_VARI1 + 147| I_BUFFER_ACTIVE = C_X + 148| I_SAVE = C_A + 149| CHANGING + 150| IT_OUTTAB = GT_HEAD[] + 151| IT_FIELDCATALOG = GT_FCAT_HEAD[]. +``` + +- **EN**: Displays the approved expense document headers (GT_HEAD) in the upper ALV grid via SET_TABLE_FOR_FIRST_DISPLAY. +- 호출(파서): GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 헤더 ALV 출력, 승인 경비 문서 +- English: ALV Grid, SET_TABLE_FOR_FIRST_DISPLAY, Expense Document +- 정의부(복사 시 함께 필요): [`GV_VARI1`](#decl-zfir0130top-187-gv_vari1), [`GV_ALV_GRID1`](#decl-zfir0130top-181-gv_alv_grid1), [`GT_EXCLUDE`](#decl-zfialv-102-gt_exclude), [`GV_LAYO1`](#decl-zfir0130top-184-gv_layo1), [`C_X`](#decl-zficom-231-c_x), [`C_A`](#decl-zficom-208-c_a), [`GT_HEAD`](#decl-zfir0130top-29-gt_head), [`GT_FCAT_HEAD`](#decl-zfialv-81-gt_fcat_head) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L140-L151` · confidence 0.8 · `ZFIR0130#ZFIR0130F01#FORM#ALV_GRID_DISPLAY1#C1` + +### FORM DISPLAY_PROCESSING_DATA — `ZFIR0130F01` L511-L613 (103줄) + +*선택한 결재 문서의 전자결재 원문을 외부 시스템에서 URL 로 받아 브라우저로 띄운다.* + +> 이 unit 의 조각 3개가 80/103줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ALV 에서 선택된 행을 가져와 선택이 없으면 중단하고, 문서조회는 한 건씩만 가능하므로 두 건 이상이면 안내 후 중단한다. 선택한 행에 결재문서 ID(APPID)가 없으면 조회할 수 없다고 알린다. + +```abap + 522| CALL METHOD GV_ALV_GRID1->GET_SELECTED_ROWS + 523| IMPORTING + 524| ET_INDEX_ROWS = GT_ROWS[]. + 525| + 526| IF GT_ROWS[] IS INITIAL. + 527| MESSAGE S004. "선택된 데이터가 없습니다. + 528| EXIT. + 529| ELSE. + 530| CLEAR: LV_CNT. + 531| * 문서조회는 한건씩 + 532| DESCRIBE TABLE GT_ROWS LINES LV_CNT. + 533| + 534| IF LV_CNT GT 1. + 535| MESSAGE S000 WITH '문서조회는 한건씩 조회 가능합니다' + 536| DISPLAY LIKE C_E. + 537| EXIT. + 538| ENDIF. + 539| + 540| LOOP AT GT_ROWS INTO GS_ROWS. + 541| READ TABLE GT_HEAD INDEX GS_ROWS-INDEX. + 542| CHECK SY-SUBRC EQ 0. + 543| + 544| IF GT_HEAD-APPID IS INITIAL. + 545| MESSAGE S000 WITH '해당 데이터의 문서조회를 할 수 없습니다.' + 546| DISPLAY LIKE C_E. + 547| EXIT. + 548| ENDIF. +``` + +- **EN**: Validates the ALV selection — exactly one row, and it must carry an approval document ID (APPID). +- 호출(파서): GV_ALV_GRID1->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID, GET_SELECTED_ROWS, APPID +- 업무 키워드: 행선택, 단건조회, 결재문서, 선택검증, 문서조회 +- English: row selection, single record, approval document, selection validation +- 정의부(복사 시 함께 필요): [`GV_ALV_GRID1`](#decl-zfir0130top-181-gv_alv_grid1), [`GT_ROWS`](#decl-zficom-121-gt_rows), [`LV_CNT`](#decl-zfir0130f01-512-lv_cnt), [`C_E`](#decl-zficom-212-c_e), [`GS_ROWS`](#decl-zficom-122-gs_rows), [`GT_HEAD`](#decl-zfir0130top-29-gt_head) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L522-L548` · confidence 0.88 · `ZFIR0130#ZFIR0130F01#FORM#DISPLAY_PROCESSING_DATA#C1` + +#### [db_write] 인터페이스 공통 로그 테이블 ZIFT0010 에서 해당 결재 ID 의 마지막 순번을 찾아 +1 한 새 로그 행을 만들고, 호스트·프로그램·요청자·요청시각·모듈(FI)을 기록해 저장한다 — 외부 호출 이력을 남기는 단계다. + +```abap + 553| SELECT MAX( SEQ ) + 554| INTO LV_MAX + 555| FROM ZIFT0010 + 556| WHERE UNQID EQ GT_HEAD-APPID. + 557| + 558| CLEAR ZIFT0010. + 559| ZIFT0010-UNQID = GT_HEAD-APPID. + 560| ZIFT0010-SEQ = LV_MAX + 1. + 561| ZIFT0010-HOST = SY-HOST. + 562| ZIFT0010-PGMID = SY-REPID. + 563| ZIFT0010-REQID = SY-UNAME. + 564| ZIFT0010-REQTM = SY-UZEIT. + 565| * CBO TABLE 저장 + 566| ZIFT0010-MODUL = 'FI'. + 567| MODIFY ZIFT0010. + 568| + 569| CLEAR: LT_CMLOG. + 570| MOVE-CORRESPONDING ZIFT0010 TO LT_CMLOG. + 571| APPEND LT_CMLOG. +``` + +- **EN**: Creates the next sequence row in the interface common-log table ZIFT0010 with host, program, requester and timestamp before calling out. +- 테이블(파서): read [ZIFT0010](/tables/ZIFT0010.md) / write [ZIFT0010](/tables/ZIFT0010.md) +- SAP 객체: ZIFT0010, ZIFS0010, UNQID, SEQ +- 업무 키워드: 인터페이스로그, 공통로그, 순번, 호출이력, 요청자, 감사로그 +- English: interface log, common log, sequence, call history, requester, audit log +- 정의부(복사 시 함께 필요): [`LV_MAX`](#decl-zfir0130f01-516-lv_max), [`ZIFT0010`](#decl-zfir0130top-8-zift0010), [`GT_HEAD`](#decl-zfir0130top-29-gt_head), [`LT_CMLOG`](#decl-zfir0130f01-517-lt_cmlog) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L553-L571` · confidence 0.86 · `ZFIR0130#ZFIR0130F01#FORM#DISPLAY_PROCESSING_DATA#C2` + +#### [interface] RFC destination 'ZFI01' 의 Z_FI_CONFIRM_DISPLAY 를 호출해 결재 문서의 조회 URL 을 받아오고, URL 이 없으면 안내 후 중단, 있으면 표준 FM CALL_BROWSER 로 웹 브라우저를 띄운다. 브라우저 호출 실패도 사용자에게 알린다. + +```abap + 576| CLEAR: LV_STATS, LV_MESSG, LV_URL. + 577| CALL FUNCTION 'Z_FI_CONFIRM_DISPLAY' + 578| DESTINATION 'ZFI01' + 579| EXPORTING + 580| I_UNQID = GT_HEAD-APPID + 581| IMPORTING + 582| E_STATS = LV_STATS + 583| E_MESSG = LV_MESSG + 584| E_URL = LV_URL + 585| TABLES + 586| IT_CMLOG = LT_CMLOG. + 587| + 588| IF LV_URL EQ SPACE. + 589| MESSAGE S000 WITH '문서조회할 URL 주소가 없습니다.' + 590| DISPLAY LIKE C_E. + 591| EXIT. + 592| ELSE. + 593| * 브라우져 호출 + 594| CALL FUNCTION 'CALL_BROWSER' + 595| EXPORTING + 596| URL = LV_URL + 597| EXCEPTIONS + 598| FRONTEND_NOT_SUPPORTED = 1 + 599| FRONTEND_ERROR = 2 + 600| PROG_NOT_FOUND = 3 + 601| NO_BATCH = 4 + 602| UNSPECIFIED_ERROR = 5 + 603| OTHERS = 6. + 604| IF SY-SUBRC NE 0. + 605| MESSAGE S000 WITH '웹 브라우저 호출 시 에러가 발생하였습니다.' + 606| DISPLAY LIKE C_E. + 607| EXIT. + 608| ENDIF. + 609| ENDIF. +``` + +- **EN**: Calls Z_FI_CONFIRM_DISPLAY over RFC to obtain the approval document URL and opens it via CALL_BROWSER, reporting missing URL or browser errors. +- 호출(파서): Z_FI_CONFIRM_DISPLAY, CALL_BROWSER +- SAP 객체: Z_FI_CONFIRM_DISPLAY, CALL_BROWSER, ZFI01, ZIFT0010 +- 업무 키워드: 전자결재, 문서조회, URL, 브라우저호출, RFC, 외부시스템연계 +- English: electronic approval, document display, URL, browser, RFC destination, external system +- 정의부(복사 시 함께 필요): [`LV_STATS`](#decl-zfir0130f01-513-lv_stats), [`LV_MESSG`](#decl-zfir0130f01-514-lv_messg), [`LV_URL`](#decl-zfir0130f01-515-lv_url), [`GT_HEAD`](#decl-zfir0130top-29-gt_head), [`LT_CMLOG`](#decl-zfir0130f01-517-lt_cmlog), [`C_E`](#decl-zficom-212-c_e) +- 위치: `abap://ZFIR0130/ZFIR0130F01#L576-L609` · confidence 0.89 · `ZFIR0130#ZFIR0130F01#FORM#DISPLAY_PROCESSING_DATA#C3` + +## 정의부 (330건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0130CLS` (3건) + +#### LCL_EVENT_RECEIVER_GRID — class · L7-L27 {#decl-zfir0130cls-7-lcl_event_receiver_grid} + +```abap +CLASS LCL_EVENT_RECEIVER_GRID DEFINITION. + + PUBLIC SECTION. + + METHODS : + + HANDLE_HOTSPOT_CLICK + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_HOTSPOT_CLICK2 + FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, + + HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING E_ROW E_COLUMN ES_ROW_NO . + + + +ENDCLASS. "LCL_EVENT_RECEIVER_GRID DEFINITION +``` + +#### GV_EVENT1 — data · L48-L48 {#decl-zfir0130cls-48-gv_event1} + +```abap +DATA : GV_EVENT1 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +#### GV_EVENT2 — data · L49-L49 {#decl-zfir0130cls-49-gv_event2} + +```abap +DATA: + GV_EVENT2 TYPE REF TO LCL_EVENT_RECEIVER_GRID. +``` + +### `ZFIR0130TOP` (44건) + +#### ZFIT0100 — tables · L7-L7 {#decl-zfir0130top-7-zfit0100} + +```abap +TABLES: ZFIT0100. " 임시전표 상신 관리 +``` + +#### ZIFT0010 — tables · L8-L8 {#decl-zfir0130top-8-zift0010} + +```abap +TABLES: + ZIFT0010. " IF 공통 Log +``` + +#### TKA02 — tables · L9-L9 {#decl-zfir0130top-9-tka02} + +```abap +TABLES: + TKA02. " 관리회계 영역 지정 +``` + +#### GT_BKPF — data · L15-L15 {#decl-zfir0130top-15-gt_bkpf} + +```abap +DATA: GT_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSEG — data · L16-L16 {#decl-zfir0130top-16-gt_bseg} + +```abap +DATA: + GT_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### T_BKPF — data · L18-L18 {#decl-zfir0130top-18-t_bkpf} + +```abap +DATA: T_BKPF LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### T_BSEG — data · L19-L19 {#decl-zfir0130top-19-t_bseg} + +```abap +DATA: + T_BSEG LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### IT_ZFIT0140 — data · L22-L24 {#decl-zfir0130top-22-it_zfit0140} + +```abap +DATA: BEGIN OF IT_ZFIT0140 OCCURS 0. + INCLUDE STRUCTURE ZFIT0140. +DATA END OF IT_ZFIT0140. +``` + +#### GT_HEAD — data · L29-L47 {#decl-zfir0130top-29-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0, + BUKRS LIKE ZFIT0140-BUKRS, + LIFNR LIKE ZFIT0140-LIFNR, + GUBUN LIKE ZFIT0140-GUBUN, + BELNR LIKE ZFIT0140-BELNR, + GJAHR LIKE ZFIT0140-GJAHR, + AMT LIKE ZFIT0140-AMT, + DRAFT_DATE LIKE ZFIT0140-DRAFT_DATE, + APPROVAL_DATE LIKE ZFIT0140-APPROVAL_DATE, + BUDAT LIKE ZFIT0140-BUDAT, + GSBER2 LIKE ZFIT0140-GSBER2, + APPID LIKE ZFIT0140-APPID, + KOSTL LIKE BSEG-KOSTL, + GUBUN_N(10), + NAME1(20), + TEXT1(20), + +* CELLTAB TYPE LVC_T_STYL, + END OF GT_HEAD. +``` + +#### GT_ITEM — data · L50-L101 {#decl-zfir0130top-50-gt_item} + +```abap +DATA: BEGIN OF GT_ITEM OCCURS 0, + BUKRS LIKE BSEG-BUKRS, + GJAHR LIKE BSEG-GJAHR, "회계년도 + BELNR LIKE BSEG-BELNR, "전표번호 + BUZEI LIKE BSEG-BUZEI, "개별항목id + SHKZG LIKE BSEG-SHKZG, "차대(S,H) + BSCHL LIKE BSEG-BSCHL, "전기키 + UMSKZ LIKE BSEG-UMSKZ, "SpGl + BSCHL_T LIKE TBSLT-LTEXT, "전기키이름 + HKONT LIKE BSEG-HKONT, "G/L 계정 + TXT50 LIKE SKAT-TXT50, "G/L 계정명 + MWSKZ LIKE BSEG-MWSKZ, "세금코드(Tx) + MWSKZ_T LIKE T007S-TEXT1, "세금코드명 + DMBTR LIKE BSEG-DMBTR, "원화금액 + WRBTR LIKE BSEG-WRBTR, "전표통화금액 + MWSTS LIKE BSEG-MWSTS, "세액(현지 통화) + WMWST LIKE BSEG-WMWST, "세액(전표 통화) + GSBER LIKE BSEG-GSBER, "BA(사업영역) + SGTXT LIKE BSEG-SGTXT, "적요 + KOART LIKE BSEG-KOART, "계정유형 + KOART_T(8) TYPE C, "계정유형명 + SUBAC LIKE BSEG-LIFNR, "보조부계정(구매처,고객) + SUBNM LIKE LFA1-NAME1, "보조부계정명 + ZLSPR LIKE BSEG-ZLSPR, "지급보류 + ZLSPR_T LIKE T008T-TEXTL, "지급보류명 + ZTERM LIKE /DSD/HH_RACOLPAY-ZTERM, "지급조건 + ZTERM_T LIKE T052U-TEXT1, "지급조건명 + FDTAG LIKE BSEG-FDTAG, "계획일(지급만기일) + ZLSCH LIKE BSEG-ZLSCH, "지급방법 + ZLSCH_T LIKE T042Z-TEXT1, "지급방법명 + KOSTL LIKE BSEG-KOSTL, "코스트센터 + KOSTL_T LIKE CSKT-LTEXT, "코스트센터명 + AUFNR LIKE BSEG-AUFNR, "오더 + FISTL LIKE BSEG-FISTL, "FUND CENTER + FISTL_T LIKE FMFCTRT-BESCHR, "FUND CENTER Description + PICON LIKE ICON-ID, "PA 아이콘 + PRCTR LIKE BSEG-PRCTR, "손익센터 + ANBWA LIKE BSEG-ANBWA, "자산거래유형 + WAERS LIKE BKPF-WAERS, "통화 + FKBER LIKE BSEG-FKBER, "기능영역 + XREF1 LIKE BSEG-XREF1, "신고사업자 + XNEGP LIKE BSEG-XNEGP, "마이너스 + EBELN LIKE BSEG-EBELN, "구매문서 + ZUONR LIKE BSEG-ZUONR, "지정 + BUPLA LIKE BSEG-BUPLA, "사업장 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + MATNR LIKE BSEG-MATNR, "자재번호 + ANLN1 LIKE BSEG-ANLN1, "자산번호 + AUGBL LIKE BSEG-AUGBL, + AUGDT LIKE BSEG-AUGDT, + KIDNO LIKE BSEG-KIDNO, + END OF GT_ITEM. +``` + +#### GT_ITEM2 — data · L103-L103 {#decl-zfir0130top-103-gt_item2} + +```abap +DATA: GT_ITEM2 LIKE GT_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_UNAME — data · L107-L110 {#decl-zfir0130top-107-gt_uname} + +```abap +DATA: BEGIN OF GT_UNAME OCCURS 0, + BNAME LIKE V_USERNAME-BNAME, + NAMET LIKE V_USERNAME-NAME_TEXT, + END OF GT_UNAME. +``` + +#### GT_T003T — data · L112-L115 {#decl-zfir0130top-112-gt_t003t} + +```abap +DATA: BEGIN OF GT_T003T OCCURS 0, + BLART LIKE T003T-BLART, + LTEXT LIKE T003T-LTEXT, + END OF GT_T003T. +``` + +#### GT_CSKT — data · L117-L120 {#decl-zfir0130top-117-gt_cskt} + +```abap +DATA: BEGIN OF GT_CSKT OCCURS 0, + KOSTL LIKE CSKT-KOSTL, + KTEXT LIKE CSKT-KTEXT, + END OF GT_CSKT. +``` + +#### GT_BRANCH — data · L122-L125 {#decl-zfir0130top-122-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_TBSLT — data · L127-L131 {#decl-zfir0130top-127-gt_tbslt} + +```abap +DATA: BEGIN OF GT_TBSLT OCCURS 0, + BSCHL LIKE TBSLT-BSCHL, + UMSKZ LIKE TBSLT-UMSKZ, + LTEXT LIKE TBSLT-LTEXT, + END OF GT_TBSLT. +``` + +#### GT_KNA1 — data · L133-L136 {#decl-zfir0130top-133-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_LFA1 — data · L138-L141 {#decl-zfir0130top-138-gt_lfa1} + +```abap +DATA: BEGIN OF GT_LFA1 OCCURS 0, + LIFNR LIKE LFA1-LIFNR, + NAME1 LIKE LFA1-NAME1, + END OF GT_LFA1. +``` + +#### GT_SKAT — data · L143-L146 {#decl-zfir0130top-143-gt_skat} + +```abap +DATA: BEGIN OF GT_SKAT OCCURS 0, + SAKNR LIKE SKAT-SAKNR, + TXT50 LIKE SKAT-TXT50 , + END OF GT_SKAT. +``` + +#### GT_T052U — data · L148-L151 {#decl-zfir0130top-148-gt_t052u} + +```abap +DATA: BEGIN OF GT_T052U OCCURS 0, + ZTERM LIKE T052U-ZTERM, + TEXT1 LIKE T052U-TEXT1, + END OF GT_T052U. +``` + +#### GT_T007S — data · L153-L156 {#decl-zfir0130top-153-gt_t007s} + +```abap +DATA: BEGIN OF GT_T007S OCCURS 0, + MWSKZ LIKE T007S-MWSKZ, + TEXT1 LIKE T007S-TEXT1, + END OF GT_T007S. +``` + +#### GT_DOMAIN — data · L158-L162 {#decl-zfir0130top-158-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L164-L164 {#decl-zfir0130top-164-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0100-STATS. +``` + +#### R_BLART — ranges · L165-L165 {#decl-zfir0130top-165-r_blart} + +```abap +RANGES: + R_BLART FOR BKPF-BLART. +``` + +#### GV_SUPER — data · L167-L167 {#decl-zfir0130top-167-gv_super} + +```abap +DATA: GV_SUPER TYPE C. " 회계팀장권한 +``` + +#### GV_CON — data · L168-L168 {#decl-zfir0130top-168-gv_con} + +```abap +DATA: + GV_CON TYPE C. " 임원권한 +``` + +#### GV_SABUN — data · L169-L169 {#decl-zfir0130top-169-gv_sabun} + +```abap +DATA: + GV_SABUN LIKE ZFIT0100-SABUN VALUE 'xclick'. " 사번(입력) +``` + +#### G_NAME1 — data · L171-L171 {#decl-zfir0130top-171-g_name1} + +```abap +DATA: G_NAME1(20). +``` + +#### GT_FCAT_ITEM2 — data · L174-L174 {#decl-zfir0130top-174-gt_fcat_item2} + +```abap +DATA : GT_FCAT_ITEM2 TYPE LVC_T_FCAT. +``` + +#### GS_STABLE — data · L176-L176 {#decl-zfir0130top-176-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GC_SPLITTER — data · L177-L177 {#decl-zfir0130top-177-gc_splitter} + +```abap +DATA: + GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GC_CONTAINER1 — data · L178-L178 {#decl-zfir0130top-178-gc_container1} + +```abap +DATA: + GC_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GC_CONTAINER2 — data · L179-L179 {#decl-zfir0130top-179-gc_container2} + +```abap +DATA: + GC_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GV_ALV_GRID — data · L180-L180 {#decl-zfir0130top-180-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID1 — data · L181-L181 {#decl-zfir0130top-181-gv_alv_grid1} + +```abap +DATA: + GV_ALV_GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_ALV_GRID2 — data · L182-L182 {#decl-zfir0130top-182-gv_alv_grid2} + +```abap +DATA: + GV_ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L183-L183 {#decl-zfir0130top-183-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_LAYO1 — data · L184-L184 {#decl-zfir0130top-184-gv_layo1} + +```abap +DATA: + GV_LAYO1 TYPE LVC_S_LAYO. +``` + +#### GV_LAYO2 — data · L185-L185 {#decl-zfir0130top-185-gv_layo2} + +```abap +DATA: + GV_LAYO2 TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L186-L186 {#decl-zfir0130top-186-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### GV_VARI1 — data · L187-L187 {#decl-zfir0130top-187-gv_vari1} + +```abap +DATA: + GV_VARI1 TYPE DISVARIANT. +``` + +#### GV_VARI2 — data · L188-L188 {#decl-zfir0130top-188-gv_vari2} + +```abap +DATA: + GV_VARI2 TYPE DISVARIANT. +``` + +#### C_USNAM — constants · L193-L193 {#decl-zfir0130top-193-c_usnam} + +```abap +CONSTANTS: C_USNAM TYPE SY-UNAME VALUE 'FI07'. " 회계팀장ID +``` + +#### C_USNAM_2 — constants · L194-L194 {#decl-zfir0130top-194-c_usnam_2} + +```abap +CONSTANTS: + C_USNAM_2 TYPE SY-UNAME VALUE 'FI03'. " 임원ID +``` + +### `ZFIR0130F01` (6건) + +#### LV_CNT — data · unit 로컬 · L512-L512 {#decl-zfir0130f01-512-lv_cnt} + +```abap + DATA: LV_CNT TYPE N. +``` + +#### LV_STATS — data · unit 로컬 · L513-L513 {#decl-zfir0130f01-513-lv_stats} + +```abap +DATA: + LV_STATS TYPE CHAR1. +``` + +#### LV_MESSG — data · unit 로컬 · L514-L514 {#decl-zfir0130f01-514-lv_messg} + +```abap +DATA: + LV_MESSG TYPE CHAR100. +``` + +#### LV_URL — data · unit 로컬 · L515-L515 {#decl-zfir0130f01-515-lv_url} + +```abap +DATA: + LV_URL TYPE CHAR1024. +``` + +#### LV_MAX — data · unit 로컬 · L516-L516 {#decl-zfir0130f01-516-lv_max} + +```abap +DATA: + LV_MAX LIKE ZIFT0010-SEQ. +``` + +#### LT_CMLOG — data · unit 로컬 · L517-L517 {#decl-zfir0130f01-517-lt_cmlog} + +```abap + DATA: LT_CMLOG LIKE ZIFS0010 OCCURS 0 WITH HEADER LINE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0130 L32-39 | 0 | 프로그램 초기화 시 ALV_SETTING 으로 ALV 기본 설정을 수행하는 이벤트다. | +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0130 L40-45 | 0 | 선택화면 출력 이벤트이며 내용이 없다. | +| START-OF-SELECTION | EVENT | ZFIR0130 L46-68 | 1 | ZFIR0110_DOC 이 ABAP 메모리로 넘긴 T_BKPF/T_BSEG 를 IMPORT 해 GT_BKPF/GT_BSEG 로 받고 회사코드 정보를 읽은 뒤 BSEG_PROCESS 로 시뮬레이션 아이템을 구성한다. | +| END-OF-SELECTION | EVENT | ZFIR0130 L69-71 | 0 | 선택 처리 후 시뮬레이션 결과 화면 0100 을 호출하는 이벤트다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK | METHOD | ZFIR0130CLS L33-35 | 0 | ALV 그리드 핫스팟 클릭 이벤트를 받아 HOTSPOT_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_HOTSPOT_CLICK2 | METHOD | ZFIR0130CLS L37-39 | 0 | 두 번째 ALV 그리드의 핫스팟 클릭 이벤트를 HOTSPOT_CLICK2 서브루틴으로 위임하는 이벤트 핸들러다. | +| LCL_EVENT_RECEIVER_GRID~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0130CLS L41-43 | 0 | ALV 그리드 더블클릭 이벤트를 받아 DOUBLE_CLICK 서브루틴으로 위임하는 이벤트 핸들러다. | +| SPLITTER_CONTAINER | FORM | ZFIR0130F01 L9-63 | 0 | 화면 0100 의 커스텀 컨테이너에 2행 스플리터를 만들고 아이템 ALV 그리드(GV_ALV_GRID2)를 생성하는 플러밍 FORM 이다. | +| CREATE_AND_INIT_CONTROLS_CON | FORM | ZFIR0130F01 L72-100 | 0 | 아이템 ALV(GV_ALV_GRID2)의 핫스팟 이벤트 핸들러를 등록하고 레이아웃·툴바 제외·표시를 초기화하는 플러밍 FORM 이다. | +| SET_GRID_LAYOUT1 | FORM | ZFIR0130F01 L109-126 | 0 | 헤더/상세 ALV 두 그리드의 레이아웃(제목·열 최적화·선택모드·지브라·셀스타일)을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY1 | FORM | ZFIR0130F01 L135-152 | 1 | 헤더 필드카탈로그를 만든 뒤 GV_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY로 승인 경비 문서 헤더(GT_HEAD)를 상단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS1 | FORM | ZFIR0130F01 L161-250 | 0 | GT_HEAD 구조로 헤더 ALV 필드카탈로그를 만들고 사번·구분·전표번호(핫스팟)·금액·기안일자·결재일자 등 컬럼을 설정하는 플러밍 FORM 이다. | +| ALV_GRID_DISPLAY2 | FORM | ZFIR0130F01 L259-278 | 1 | 아이템 필드카탈로그를 만든 뒤 GV_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY로 생성할 전표 아이템(GT_ITEM2)을 하단 ALV에 표시하는 FORM이다. | +| SET_FIELD_CATALOGS2 | FORM | ZFIR0130F01 L287-404 | 0 | GT_ITEM 구조로 아이템 ALV 필드카탈로그를 만들고 전표 아이템 컬럼별 헤더텍스트·통화참조·순서를 설정하는 플러밍 FORM 이다. | +| HOTSPOT_CLICK | FORM | ZFIR0130F01 L414-435 | 1 | 헤더 ALV 핫스팟 클릭 시 선택 문서에 대해 BSEG_PROCESS로 전표 아이템을 구성하고 정렬한 뒤 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. | +| HOTSPOT_CLICK2 | FORM | ZFIR0130F01 L444-475 | 1 | 아이템 ALV 의 보조부계정(SUBAC) 핫스팟 클릭 시 계정유형별로 FD03/FK03/AS03/MM03 마스터 조회 화면을 호출한다. | +| DOUBLE_CLICK | FORM | ZFIR0130F01 L484-505 | 1 | 헤더 ALV 더블클릭 시 해당 전표(BUKRS/GJAHR/BELNR)의 아이템을 GT_ITEM에서 골라 GT_ITEM2를 채우고 OK코드 ZUSER로 PAI를 트리거해 하단 ALV를 갱신하는 FORM이다. | +| DISPLAY_PROCESSING_DATA | FORM | ZFIR0130F01 L511-613 | 3 | 선택한 결재 문서의 전자결재 원문을 외부 시스템에서 URL 로 받아 브라우저로 띄운다. | +| BSEG_PROCESS | FORM | ZFIR0130F01 L617-902 | 7 | 메모리로 받은 시뮬레이션 BSEG 아이템에 전표유형·코스트센터·사업장·전기키·고객/구매처/자산/자재·G/L 계정·지급조건·세금코드 텍스트를 붙여 표시용 GT_ITEM/GT_ITEM2 를 만드는 FORM 이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0130I01 L9-18 | 0 | 화면 0100 에서 조회(SERCH) 기능코드 시 DISPLAY_PROCESSING_DATA 로 결재상신 중 문서를 조회하는 PAI 모듈이다. | +| USER_COMMAND_0200 INPUT | MODULE | ZFIR0130I01 L24-32 | 0 | 화면 0200 에서 엔터(ENTR) 시 화면을 닫는 PAI 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0130O01 L9-14 | 0 | | +| CREATE_INSTANCE_CONTROLS OUTPUT | MODULE | ZFIR0130O01 L20-43 | 0 | | +| STATUS_0200 OUTPUT | MODULE | ZFIR0130O01 L49-54 | 0 | | diff --git a/wiki/programs/ZFIR0140.md b/wiki/programs/ZFIR0140.md new file mode 100644 index 0000000..3a6f90b --- /dev/null +++ b/wiki/programs/ZFIR0140.md @@ -0,0 +1,3058 @@ +--- +type: abap-program +title: "ZFIR0140 — [FI] 매출 세금계산서 발행" +description: "매출채권(BSID/BSAD)과 매출 전표(BKPF/BSEG/BSET), SD 청구(VBRK)를 논리DB(GET BSID/BKPF/BSEG)로 읽어 매출 세금계산서 발행 대상을 선별하는 프로그램이다. 합산계산서(COLLECTIVE)와 개별계산서(INDIVIDUAL) 방식을 지원하고, 세금 데이터와 고객 주소를 붙여 ALV 로 보여준 뒤 실제 출력·전송은 ZFIR0141 에 위임한다. 전자세금계산서 전환(2006) 이후 ZDTI_* 상태 테이블로 발행 상태를 관리한다." +resource: "abap://ZFIR0140" +tags: ["세금계산서", "전자세금계산서", "매출", "부가세", "채권관리", "FI", "세액", "공급가액", "차대구분", "순액", "부호반전", "고객수집", "세금라인", "임시전표", "매출전표", "전표헤더", "회사코드", "전표유형", "자동세금계산", "세금코드"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["BKPF", "BSAD", "BSEC", "BSEG", "BSET", "J_1BBRANCH", "KNA1", "RBKP", "T001", "T003", "T074U", "VBKPF", "VBRK", "VBSEGD", "VBSEGS", "ZDTI_SAPP", "ZDTI_STATUS"] +x-tables-write: ["AUSGLOP_ITAB", "GT_AUSGLOP", "GT_KUNDE", "SEL_AUSGLOP_ITAB"] +x-calls: ["DYNP_VALUES_UPDATE", "FB03", "FI_PERIOD_DETERMINE", "HELP_VALUES_GET_WITH_TABLE_EXT", "KR_USER_EXIT_ROUNDOFF", "KR_USER_EXIT_TAX_CODE", "NUMBER_GET_NEXT", "REUSE_ALV_COMMENTARY_WRITE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "REUSE_ALV_VARIANT_DEFAULT_GET", "REUSE_ALV_VARIANT_EXISTENCE", "REUSE_ALV_VARIANT_F4", "ZFIR0141", "Z_SB_TAX_CAL"] +x-code-hash: "ef875a229ba3c4a355668341b70f07c0fcb07bce602483bc6f97c13e45519f94" +x-unit-count: 47 +x-chunk-count: 51 +x-declaration-count: 127 +--- + +## 업무 목적 + +매출채권(BSID/BSAD)과 매출 전표(BKPF/BSEG/BSET), SD 청구(VBRK)를 논리DB(GET BSID/BKPF/BSEG)로 읽어 매출 세금계산서 발행 대상을 선별하는 프로그램이다. 합산계산서(COLLECTIVE)와 개별계산서(INDIVIDUAL) 방식을 지원하고, 세금 데이터와 고객 주소를 붙여 ALV 로 보여준 뒤 실제 출력·전송은 ZFIR0141 에 위임한다. 전자세금계산서 전환(2006) 이후 ZDTI_* 상태 테이블로 발행 상태를 관리한다. + +## 주 흐름 + +1. ALV 변형을 초기화하고 선택화면을 준비한다 (VARIANT_INIT → F4_FOR_VARIANT) +2. 회사코드와 전표유형 입력값을 검증한다 (CHECK_BUKRS → CHECK_DOC_TYPE) +3. 논리DB 로 매출채권(GET BSID)·전표헤더(GET BKPF)·아이템(GET BSEG)을 순차 읽는다 +4. 세금코드 유효성을 확인하고 아이템 선택을 정리한다 (CHECK_MWSKZ → CLEAR_ITEM_SELECTION) +5. 전자세금계산서 발행 상태를 확인한다 (DTI_CHECK) +6. 세금 데이터와 고객 주소를 보강한다 (GET_TAX_DATA → GET_CUSTOMER_ADDRESS) +7. 합산/개별 계산서 방식으로 발행 번호를 부여한다 (COLLECTIVE_INVOICES / INDIVIDUAL_INVOICES → GET_TAX_INVOICE_NUMBER) +8. ALV 레이아웃을 구성해 출력하고 사용자 액션을 처리한다 (BUILD_UP_ALV_LAYOUT → USER_COMMAND, 400줄) +9. 실제 세금계산서 출력·전송은 ZFIR0141 을 호출한다 + +## 핵심 내부테이블 + +- `AUSGLOP_ITAB` — 세금계산서 발행 대상 미결/반제 항목 (채움: GET BSID, GET BKPF / 소비: CLEAR_ITEM_SELECTION, GET_TAX_DATA) +- `GT_KUNDE` — 고객 주소·사업자정보 (채움: GET_CUSTOMER_ADDRESS / 소비: BUILD_UP_ALV_LAYOUT) + +## 테이블 / 외부 호출 + +- read: BKPF, BSAD, BSEC, BSEG, BSET, J_1BBRANCH, KNA1, RBKP, T001, T003, T074U, VBKPF, VBRK, VBSEGD, VBSEGS, ZDTI_SAPP, ZDTI_STATUS +- write: AUSGLOP_ITAB, GT_AUSGLOP, GT_KUNDE, SEL_AUSGLOP_ITAB +- 외부 호출: DYNP_VALUES_UPDATE, FB03, FI_PERIOD_DETERMINE, HELP_VALUES_GET_WITH_TABLE_EXT, KR_USER_EXIT_ROUNDOFF, KR_USER_EXIT_TAX_CODE, NUMBER_GET_NEXT, REUSE_ALV_COMMENTARY_WRITE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_HIERSEQ_LIST_DISPLAY, REUSE_ALV_VARIANT_DEFAULT_GET, REUSE_ALV_VARIANT_EXISTENCE, REUSE_ALV_VARIANT_F4, ZFIR0141, Z_SB_TAX_CAL + +## 로직 조각 (51건 / unit 26개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT INITIALIZATION — `ZFIR0140` L167-L218 (52줄) + +*INITIALIZATION 에서 계층 ALV 의 헤더/아이템 테이블명과 키정보(KUNNR/BELNR)를 정의하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 기본 변형을 P_VARI 에 제안한다.* + +> 이 unit 의 조각 1개가 28/52줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 계층 ALV 의 헤더(GT_KUNDE)-아이템(GT_AUSGLOP) 테이블명과 연결 키(KUNNR, BELNR)를 GS_KEYINFO 에 정의하고 변형 저장 옵션(G_SAVE='A')을 둔 뒤 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형을 P_VARI 에 제안한다. + +```abap + 189| G_REPID = SY-REPID. + 190| G_TABNAME_HEADER = 'GT_KUNDE'. + 191| G_TABNAME_ITEM = 'GT_AUSGLOP'. + 192| + 193| * define keyinfo + 194| CLEAR GS_KEYINFO. + 195| GS_KEYINFO-HEADER01 = 'KUNNR'. + 196| GS_KEYINFO-ITEM01 = 'KUNNR'. + 197| + 198| GS_KEYINFO-HEADER02 = SPACE. + 199| GS_KEYINFO-ITEM02 = 'BELNR'. + 200| + 201| * set Options: save variants userspecific or general + 202| G_SAVE = 'A'. + 203| PERFORM VARIANT_INIT. + 204| + 205| * get default variant + 206| GX_VARIANT = G_VARIANT. + 207| CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' + 208| EXPORTING + 209| I_SAVE = G_SAVE + 210| CHANGING + 211| CS_VARIANT = GX_VARIANT + 212| EXCEPTIONS + 213| NOT_FOUND = 2. + 214| IF SY-SUBRC = 0. + 215| P_VARI = GX_VARIANT-VARIANT. + 216| ENDIF. +``` + +- **EN**: Define the hierarchical ALV header/item table names and key linkage (KUNNR, BELNR) in GS_KEYINFO, set the variant save mode, and propose the user's default ALV layout variant via REUSE_ALV_VARIANT_DEFAULT_GET. +- 호출(파서): VARIANT_INIT, REUSE_ALV_VARIANT_DEFAULT_GET +- SAP 객체: REUSE_ALV_VARIANT_DEFAULT_GET +- 업무 키워드: 계층 ALV 키정보, 고객-전표 연결, ALV 기본 변형, 초기화 +- English: Hierarchical ALV, Key Info, ALV Variant, REUSE_ALV_VARIANT_DEFAULT_GET +- 정의부(복사 시 함께 필요): [`G_REPID`](#decl-zfir0140top-276-g_repid), [`G_TABNAME_HEADER`](#decl-zfir0140-133-g_tabname_header), [`G_TABNAME_ITEM`](#decl-zfir0140-134-g_tabname_item), [`GS_KEYINFO`](#decl-zfir0140top-248-gs_keyinfo), [`G_SAVE`](#decl-zfir0140-132-g_save), [`GX_VARIANT`](#decl-zfir0140-137-gx_variant), [`G_VARIANT`](#decl-zfir0140-138-g_variant), [`P_VARI`](#decl-zfir0140-115-p_vari) +- 위치: `abap://ZFIR0140/ZFIR0140#L189-L216` · confidence 0.7 · `ZFIR0140#ZFIR0140#EVENT#INITIALIZATION#C1` + +### FORM CHECK_BUKRS — `ZFIR0140` L1661-L1667 (7줄) + +*회사코드(DD_BUKRS-LOW)가 비어 있으면 오류 메시지 E501 을 내는 필수 입력 검증 FORM 이다.* + +> 이 unit 의 조각 1개가 3/7줄(43%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 선택화면의 회사코드가 입력되지 않았으면 오류 메시지 E501 로 실행을 막는다. + +```abap + 1663| IF DD_BUKRS-LOW IS INITIAL. + 1664| MESSAGE E501. + 1665| ENDIF. +``` + +- **EN**: Raise error message E501 when no company code has been entered on the selection screen. +- 업무 키워드: 회사코드, 필수 입력 검증, 오류 메시지 +- English: Company Code, Mandatory Check, Error Message +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L1663-L1665` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CHECK_BUKRS#C1` + +### EVENT AT SELECTION-SCREEN ON SBLART — `ZFIR0140` L239-L316 (78줄) + +*전표유형 입력 시 유효성을 검증하고 세금코드·전표유형·사업장·회사코드 선택값을 KR_USER_EXIT_TAX_CODE 에 넘긴 뒤 SD/FI 선택 조건 입력 여부로 SD_SELECTION/FI_SELECTION 플래그를 결정한다.* + +> 이 unit 의 조각 2개가 59/78줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 전표유형(T003) 검증 후 세금코드·전표유형·사업장·회사코드 선택옵션을 작업 테이블로 옮겨 한국 세금계산서 User-Exit KR_USER_EXIT_TAX_CODE 로 사용자·상태별 세금코드 보정을 수행한다. + +```abap + 240| PERFORM CHECK_DOC_TYPE. + 241| + 242| LOOP AT SMWSKZ. + 243| MOVE-CORRESPONDING SMWSKZ TO TAX_CODE. + 244| ENDLOOP. + 245| + 246| LOOP AT PBLART. + 247| MOVE-CORRESPONDING PBLART TO BLART. + 248| ENDLOOP. + 249| + 250| LOOP AT SBUPLA. + 251| MOVE-CORRESPONDING SBUPLA TO BUPLA. + 252| ENDLOOP. + 253| + 254| LOOP AT DD_BUKRS. + 255| MOVE-CORRESPONDING DD_BUKRS TO BUKRS. + 256| ENDLOOP. + 257| + 258| CALL FUNCTION 'KR_USER_EXIT_TAX_CODE' + 259| EXPORTING + 260| YUSNAM = SY-UNAME + 261| YSTA1 = STA1 + 262| TABLES + 263| YTAXCODE = TAX_CODE + 264| YPBLART = BLART + 265| YBUPLA = BUPLA + 266| YBUKRS = BUKRS. +``` + +- **EN**: Validate the document type, copy the tax code, document type, business place and company code select-options into work tables and call the Korean user exit KR_USER_EXIT_TAX_CODE to adjust tax codes by user and status. +- 호출(파서): CHECK_DOC_TYPE, KR_USER_EXIT_TAX_CODE +- SAP 객체: KR_USER_EXIT_TAX_CODE, T003 +- 업무 키워드: 전표유형 검증, 세금코드, User-Exit, 사업장, 선택옵션 +- English: Document Type, Tax Code, User Exit, Business Place +- 정의부(복사 시 함께 필요): [`SMWSKZ`](#decl-zfir0140-47-smwskz), [`CODE`](#decl-zfir0140top-281-code), [`TAX_CODE`](#decl-zfir0140top-288-tax_code), [`PBLART`](#decl-zfir0140-49-pblart), [`BLART`](#decl-zfir0140top-289-blart), [`SBUPLA`](#decl-zfir0140-46-sbupla), [`BUPLA`](#decl-zfir0140top-290-bupla), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`STA1`](#decl-zfir0140-88-sta1) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L240-L266` · confidence 0.85 · `ZFIR0140#ZFIR0140#EVENT#AT_SELECTION-SCREEN_ON_SBLART#C1` + +#### [control_flow] 청구번호(SVBELN)·청구유형(SFKART)·청구일(SFKDAT) 조건이 입력되면 SD_SELECTION 을, 회계전표번호(SBELNR)·전표일(SBDAT) 조건이 입력되면 FI_SELECTION 을 설정해 이후 선별 방식(SD/FI)을 결정한다. + +```abap + 271| CLEAR SD_SELECTION. + 272| CLEAR FI_SELECTION. + 273| + 274| DESCRIBE TABLE SVBELN LINES LINE_COUNT_SD. "billing document + 275| IF LINE_COUNT_SD > 0. "selection internal + 276| SD_SELECTION = 'X'. "table not empty + 277| ENDIF. + 278| + 279| DESCRIBE TABLE SFKART LINES LINE_COUNT_SD. "billing document type + 280| IF LINE_COUNT_SD > 0. "selection internal + 281| SD_SELECTION = 'X'. "table not empty + 282| ENDIF. + 283| + 284| DESCRIBE TABLE SFKDAT LINES + 285| LINE_COUNT_SD. "billing date selection + 286| IF LINE_COUNT_SD > 0. "internal table not + 287| SD_SELECTION = 'X'. "empty + 288| ENDIF. + 289| + 290| * set fi_selection flag if fi-document or accounting document + 291| * date selection cases not empty. + 292| + 293| DESCRIBE TABLE SBELNR LINES + 294| LINE_COUNT_FI. "accounting document + 295| IF LINE_COUNT_FI > 0. "selection internal + 296| FI_SELECTION = 'X'. "table not empty + 297| ENDIF. + 298| + 299| DESCRIBE TABLE SBDAT LINES LINE_COUNT_FI. "accounting document date + 300| IF LINE_COUNT_FI > 0. "selection internal + 301| FI_SELECTION = 'X'. "table not empty + 302| ENDIF. +``` + +- **EN**: Set SD_SELECTION when billing document, billing type or billing date selections are filled, and FI_SELECTION when accounting document number or document date selections are filled, to steer the later item selection. +- 업무 키워드: SD 선택조건, FI 선택조건, 청구전표, 회계전표, 선별 방식 +- English: Billing Document, Accounting Document, Selection Flag, Select-Option +- 정의부(복사 시 함께 필요): [`SD_SELECTION`](#decl-zfir0140top-45-sd_selection), [`FI_SELECTION`](#decl-zfir0140top-47-fi_selection), [`SVBELN`](#decl-zfir0140-64-svbeln), [`LINE_COUNT_SD`](#decl-zfir0140top-41-line_count_sd), [`SFKART`](#decl-zfir0140-65-sfkart), [`SFKDAT`](#decl-zfir0140-66-sfkdat), [`SBELNR`](#decl-zfir0140-57-sbelnr), [`LINE_COUNT_FI`](#decl-zfir0140top-42-line_count_fi), [`SBDAT`](#decl-zfir0140-58-sbdat) +- 위치: `abap://ZFIR0140/ZFIR0140#L271-L302` · confidence 0.85 · `ZFIR0140#ZFIR0140#EVENT#AT_SELECTION-SCREEN_ON_SBLART#C2` + +### FORM CHECK_DOC_TYPE — `ZFIR0140` L2123-L2130 (8줄) + +*세금계산서 전표유형(SBLART)이 T003 에 존재하고 번호범위(NUMKR)가 지정되어 있는지 검증해 없으면 E098 오류를 낸다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력된 전표유형이 T003 에 없거나 번호범위(NUMKR)가 비어 있으면 세금계산서 채번이 불가능하므로 오류 메시지 E098 을 낸다. + +```abap + 2125| SELECT SINGLE * FROM T003 WHERE BLART = SBLART. + 2126| IF SY-SUBRC NE 0 OR T003-NUMKR = ' ' . + 2127| MESSAGE E098. + 2128| ENDIF. +``` + +- **EN**: Check that the entered document type exists in T003 with a number range (NUMKR) assigned, since it is used for tax invoice numbering; otherwise raise E098. +- 테이블(파서): read [T003](/tables/T003.md) / write - +- SAP 객체: T003 +- 업무 키워드: 전표유형 검증, 번호범위, 세금계산서 채번, 오류 메시지 +- English: Document Type, T003, Number Range, Validation +- 정의부(복사 시 함께 필요): [`T003`](#decl-zfir0140top-23-t003), [`CODE`](#decl-zfir0140top-281-code), [`BLART`](#decl-zfir0140top-289-blart), [`SBLART`](#decl-zfir0140-74-sblart) +- 위치: `abap://ZFIR0140/ZFIR0140#L2125-L2128` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CHECK_DOC_TYPE#C1` + +### EVENT START-OF-SELECTION — `ZFIR0140` L317-L327 (11줄) + +*START-OF-SELECTION 에서 회사코드의 현지통화(T001-WAERS)를 CURR 에 읽어 이후 논리DB 처리에 사용한다.* + +> 이 unit 의 조각 1개가 1/11줄(9%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드(T001)의 현지통화 WAERS 를 CURR 에 읽어 발행 항목의 통화 기본값으로 사용한다. + +```abap + 326| SELECT SINGLE WAERS FROM T001 INTO CURR WHERE BUKRS = BSID-BUKRS. +``` + +- **EN**: Read the company code local currency (T001-WAERS) into CURR as the default currency for candidate items. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 현지통화, 회사코드, 통화 기본값 +- English: Local Currency, Company Code, T001 +- 정의부(복사 시 함께 필요): [`T001`](#decl-zfir0140top-14-t001), [`CURR`](#decl-zfir0140top-226-curr), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`BSID`](#decl-zfir0140top-9-bsid) +- 위치: `abap://ZFIR0140/ZFIR0140#L326-L326` · confidence 0.75 · `ZFIR0140#ZFIR0140#EVENT#START-OF-SELECTION#C1` + +### EVENT GET BSID — `ZFIR0140` L328-L353 (26줄) + +*논리DB GET BSID 이벤트에서 사업영역·세금코드·미반제 조건을 통과한 미결 매출채권 항목의 키 필드를 발행 후보 AUSGLOP_ITAB 에 채운다.* + +> 이 unit 의 조각 1개가 21/26줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 미결 매출채권(BSID) 중 사업영역·전표일·사업장 선택조건에 맞고 세금코드가 있으며 아직 반제되지 않은(AUGBL 없음) 항목만 회사코드·고객·전표번호·일자·사업장·특별G/L·계정을 AUSGLOP_ITAB 에 옮긴다. + +```abap + 330| CHECK BSID-GSBER IN SBAREA. + 331| CHECK BSID-MWSKZ NE ' ' . + 332| CHECK SBDAT. + 333| CHECK SBUPLA. "check selection parameters + 334| CHECK BSID-AUGBL IS INITIAL. + 335| CLEAR AUSGLOP_ITAB. + 336| * SELECT SINGLE * FROM t001 WHERE bukrs = bsid-bukrs. + 337| * MOVE t001-waers TO ausglop_itab-hwaer. + 338| MOVE CURR TO AUSGLOP_ITAB-WAERS. + 339| MOVE BSID-WAERS TO AUSGLOP_ITAB-WAERS. + 340| MOVE BSID-BUKRS TO AUSGLOP_ITAB-BUKRS. + 341| MOVE BSID-KUNNR TO AUSGLOP_ITAB-KUNNR. + 342| MOVE BSID-GJAHR TO AUSGLOP_ITAB-GJAHR. + 343| MOVE BSID-GSBER TO AUSGLOP_ITAB-GSBER. + 344| MOVE BSID-BELNR TO AUSGLOP_ITAB-BELNR. + 345| MOVE BSID-BUDAT TO AUSGLOP_ITAB-BUDAT. + 346| MOVE BSID-BLDAT TO AUSGLOP_ITAB-BLDAT. + 347| MOVE BSID-BUZEI TO AUSGLOP_ITAB-BUZEI. + 348| MOVE BSID-BUPLA TO AUSGLOP_ITAB-BUPLA. + 349| MOVE BSID-UMSKZ TO AUSGLOP_ITAB-UMSKZ. + 350| MOVE BSID-HKONT TO AUSGLOP_ITAB-HKONT. +``` + +- **EN**: Accept open customer items (BSID) matching business area, document date and business place selections, with a tax code and no clearing document, and copy company code, customer, document, dates, business place, special G/L indicator and G/L account into AUSGLOP_ITAB. +- SAP 객체: BSID +- 업무 키워드: 미결 매출채권, 미반제 항목, 사업영역, 세금코드, 사업장 +- English: Open Customer Items, BSID, Business Area, Tax Code, Business Place +- 정의부(복사 시 함께 필요): [`BSID`](#decl-zfir0140top-9-bsid), [`SBAREA`](#decl-zfir0140-45-sbarea), [`SBDAT`](#decl-zfir0140-58-sbdat), [`SBUPLA`](#decl-zfir0140-46-sbupla), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`CURR`](#decl-zfir0140top-226-curr) +- 위치: `abap://ZFIR0140/ZFIR0140#L330-L350` · confidence 0.9 · `ZFIR0140#ZFIR0140#EVENT#GET_BSID#C1` + +### EVENT GET BKPF — `ZFIR0140` L354-L471 (118줄) + +*논리DB GET BKPF 이벤트에서 전표 헤더를 검증(헤더텍스트·역분개·비망·전표유형·FB05 제외)하고 SD 청구(VBRK)·MM 송장(RBKP) 참조 정보를 보강해 발행 후보 항목을 준비한다.* + +> 이 unit 의 조각 2개가 44/118줄(37%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 헤더텍스트(BKTXT)가 있거나 역분개(STBLG)·비망전표(BSTAT)·선택 전표유형 범위 밖·FB05 반제전표인 BKPF 는 건너뛰고 참조유형(AWTYP)·참조키(AWKEY)·전표유형을 AUSGLOP_ITAB 에 옮긴다. + +```abap + 357| CHECK BKPF-BKTXT = ' ' . + 358| *doc not reversed... + 359| CHECK BKPF-STBLG = ' '. + 360| *doc not a noted item... + 361| CHECK BKPF-BSTAT = ' '. + 362| * doc in the given range of document type + 363| CHECK BKPF-BLART IN PBLART. + 364| + 365| CHECK BKPF-TCODE <> 'FB05'. "check document not a FB05-clearing doc. + 366| MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP. + 367| MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY. + 368| MOVE BKPF-BLART TO AUSGLOP_ITAB-BLART. +``` + +- **EN**: Skip BKPF headers with header text, reversals (STBLG), noted items (BSTAT), document types outside PBLART or FB05 clearing documents, then copy reference type, reference key and document type into AUSGLOP_ITAB. +- SAP 객체: BKPF, FB05 +- 업무 키워드: 전표 헤더 검증, 역분개 제외, 비망 전표 제외, 전표유형, 반제 전표 제외 +- English: Document Header, Reversal, Noted Item, Document Type, FB05 +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0140top-17-bkpf), [`PBLART`](#decl-zfir0140-49-pblart), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L357-L368` · confidence 0.9 · `ZFIR0140#ZFIR0140#EVENT#GET_BKPF#C1` + +#### [validation] SD 청구 유래(AWTYP='VBRK') 전표는 VBRK 를 읽어 취소(FKSTO/SFAKN) 건을 제외하고 청구번호·청구유형·청구일을 저장하며, MM 송장(RMRP)은 RBKP 취소 여부를 확인하고, SD 전용 선택이면 청구번호·청구유형·청구일 조건을 추가 검증한다. + +```abap + 369| IF BKPF-AWTYP = 'VBRK'. + 370| * + 371| * SELECT SINGLE * FROM vbrk WHERE bukrs = ausglop_itab-bukrs + 372| * AND vbeln = ausglop_itab-awkey. + 373| SELECT SINGLE * FROM VBRK WHERE VBELN = AUSGLOP_ITAB-AWKEY + 374| AND BUKRS = AUSGLOP_ITAB-BUKRS. + 375| IF SY-SUBRC = 0. + 376| CHECK VBRK-FKSTO IS INITIAL. + 377| CHECK VBRK-SFAKN IS INITIAL. + 378| MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN. + 379| MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART. + 380| MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT. + 381| MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP. + 382| ENDIF. + 383| ENDIF. + 384| + 385| IF BKPF-AWTYP = 'RMRP'. + 386| + 387| SELECT SINGLE STBLG FROM RBKP INTO STBLG WHERE + 388| BELNR = AUSGLOP_ITAB-AWKEY + 389| AND GJAHR = BKPF-GJAHR. + 390| CHECK STBLG IS INITIAL. + 391| CLEAR STBLG. + 392| + 393| ENDIF. + 394| + 395| IF SD_SELECTION = 'X' AND FI_SELECTION NE 'X'. + 396| CHECK BKPF-AWTYP = 'VBRK'. + 397| CHECK BKPF-AWKEY IN SVBELN. + 398| CHECK VBRK-FKART IN SFKART. "check sd selection parameters + 399| CHECK VBRK-FKDAT IN SFKDAT. "check sd selection parameters + 400| ENDIF. +``` + +- **EN**: For SD billing references read VBRK, exclude cancelled billing documents (FKSTO/SFAKN) and keep billing number, type and date; for MM invoice references check RBKP for reversal; for SD-only selection apply billing number, type and date filters. +- 테이블(파서): read [VBRK](/tables/VBRK.md), [RBKP](/tables/RBKP.md) / write - +- SAP 객체: VBRK, RBKP +- 업무 키워드: SD 청구전표, 청구 취소 검증, MM 송장 취소, 청구유형, SD 선택조건 +- English: Billing Document, VBRK, Cancellation, RBKP, Billing Type +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0140top-17-bkpf), [`VBRK`](#decl-zfir0140top-12-vbrk), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`STBLG`](#decl-zfir0140top-295-stblg), [`SD_SELECTION`](#decl-zfir0140top-45-sd_selection), [`FI_SELECTION`](#decl-zfir0140top-47-fi_selection), [`SVBELN`](#decl-zfir0140-64-svbeln), [`SFKART`](#decl-zfir0140-65-sfkart), [`SFKDAT`](#decl-zfir0140-66-sfkdat) +- 위치: `abap://ZFIR0140/ZFIR0140#L369-L400` · confidence 0.9 · `ZFIR0140#ZFIR0140#EVENT#GET_BKPF#C2` + +### EVENT GET BSEG — `ZFIR0140` L472-L484 (13줄) + +*논리DB GET BSEG 이벤트에서 고객 라인(KOART='D')의 세금코드가 선택범위에 있을 때 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] BSEG 라인 중 고객 계정유형(KOART='D')이고 세금코드(MWSKZ)가 SMWSKZ 범위에 있는 라인만 지급조건(ZTERM)·기산일(ZFBDT)·전표통화금액(WRBTR)·현지통화금액(DMBTR)을 채워 AUSGLOP_ITAB 에 APPEND 한다. + +```abap + 473| CHECK BSEG-KOART = 'D'. + 474| MOVE BSEG-KOART TO AUSGLOP_ITAB-KOART. + 475| CHECK BSEG-MWSKZ IN SMWSKZ. + 476| MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ. + 477| MOVE BSEG-ZTERM TO AUSGLOP_ITAB-ZTERM. + 478| MOVE BSEG-ZFBDT TO AUSGLOP_ITAB-ZFBDT. + 479| MOVE BSEG-WRBTR TO AUSGLOP_ITAB-WRBTR. + 480| MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR. + 481| * 추가 + 482| * MOVE bseg-sgtxt TO ausglop_itab-sgtxt. + 483| APPEND AUSGLOP_ITAB. +``` + +- **EN**: Accept only customer line items (KOART='D') whose tax code is within SMWSKZ, copy payment terms, baseline date, document and local currency amounts, and append the row to AUSGLOP_ITAB. +- SAP 객체: BSEG +- 업무 키워드: 고객 라인, 계정유형, 세금코드 필터, 지급조건, 현지통화금액 +- English: Customer Line Item, Account Type, Tax Code, Payment Terms, Local Currency Amount +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zfir0140top-8-bseg), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`SMWSKZ`](#decl-zfir0140-47-smwskz) +- 위치: `abap://ZFIR0140/ZFIR0140#L473-L483` · confidence 0.9 · `ZFIR0140#ZFIR0140#EVENT#GET_BSEG#C1` + +### EVENT END-OF-SELECTION — `ZFIR0140` L485-L538 (54줄) + +*END-OF-SELECTION 에서 반제 항목 선별, 전자세금계산서 발행 여부 확인, 세금·고객주소 보강, 한국 반올림 User-Exit 호출 후 계층 ALV 를 출력하는 메인 흐름을 수행한다.* + +> 이 unit 의 조각 2개가 39/54줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 반제 매출채권(BSAD) 항목을 추가 선별(CLEAR_ITEM_SELECTION)하고 ZDTI 상태로 기발행 건을 제외(DTI_CHECK)한 뒤 세금 데이터(GET_TAX_DATA)와 고객 주소·CPD 정보(GET_CUSTOMER_ADDRESS)를 보강하고 고객·전표·라인 순으로 정렬한다. + +```abap + 488| PERFORM CLEAR_ITEM_SELECTION. + 489| + 490| ** 임시전표로 매출 발행하는 업체에서는 주석처리 풀고 사용하면 됨. + 491| ** 임시전표 가져오는 로직 추가 - 2006.08.30 + 492| * PERFORM PARK_DOCUMENT_SELECTION. + 493| + 494| * 기본적으로는 BKPF-BKTXT에 값이 있으면 매출 세금계산서 발행 프로그램에 + 495| * 리스트에 보여지지 않는다. + 496| * 허브업체별로 BKPF-BKTXT값을 사용하지 않을 경우 아래의 Perform에서 + 497| * 체크하여 준다. + 498| + 499| * 세금계산서 발행여부 체크 - 금호 2006.08.30 + 500| PERFORM DTI_CHECK. + 501| + 502| * bif용 - 주석처리 2006.08.14.------------------------------* + 503| ** 매출부가세의 텍스트를 가져온다. + 504| * PERFORM GET_SALES_TAX_SGTXT. + 505| + 506| * getting bset data ( tax related data ) + 507| REFRESH GT_KUNDE. + 508| + 509| CLEAR AUSGLOP_ITAB. + 510| *Add tax data to internal table... + 511| PERFORM GET_TAX_DATA. + 512| + 513| *Get customer address and CPD data... + 514| PERFORM GET_CUSTOMER_ADDRESS. + 515| + 516| SORT AUSGLOP_ITAB BY KUNNR BELNR BUZEI. +``` + +- **EN**: Add cleared AR items, remove documents already issued as electronic tax invoices, enrich with tax data and customer address / one-time customer data, then sort AUSGLOP_ITAB by customer, document and line. +- 호출(파서): CLEAR_ITEM_SELECTION, DTI_CHECK, GET_TAX_DATA, GET_CUSTOMER_ADDRESS +- SAP 객체: BSAD, ZDTI_SAPP, BSET +- 업무 키워드: 반제 항목 선별, 기발행 제외, 세금 데이터 보강, 고객 주소, 발행 대상 정렬 +- English: Cleared Items, Electronic Tax Invoice, Tax Data, Customer Address +- 정의부(복사 시 함께 필요): [`KNA1`](#decl-zfir0140top-15-kna1), [`GT_KUNDE`](#decl-zfir0140top-269-gt_kunde), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L488-L516` · confidence 0.85 · `ZFIR0140#ZFIR0140#EVENT#END-OF-SELECTION#C1` + +#### [fm_call] 한국 세금계산서 User-Exit KR_USER_EXIT_ROUNDOFF 로 발행 대상 금액을 합산옵션(SN1OP)·상태(STA1)에 따라 반올림 처리한 뒤 BUILD_UP_ALV_LAYOUT 으로 계층 ALV 를 표시한다. + +```abap + 518| CALL FUNCTION 'KR_USER_EXIT_ROUNDOFF' + 519| EXPORTING + 520| YSN1OP = SN1OP + 521| YSTA1 = STA1 + 522| YPROG_NAME = SY-CPROG + 523| TABLES + 524| YAUSGLOP_ITAB = AUSGLOP_ITAB. + 525| + 526| * build up ALV layout + 527| PERFORM BUILD_UP_ALV_LAYOUT. +``` + +- **EN**: Call the Korean tax invoice user exit KR_USER_EXIT_ROUNDOFF to round the candidate amounts according to the aggregate option and status, then display the hierarchical ALV via BUILD_UP_ALV_LAYOUT. +- 호출(파서): KR_USER_EXIT_ROUNDOFF, BUILD_UP_ALV_LAYOUT +- SAP 객체: KR_USER_EXIT_ROUNDOFF, REUSE_ALV_HIERSEQ_LIST_DISPLAY +- 업무 키워드: 금액 반올림, User-Exit, 세금계산서 금액, ALV 출력 +- English: Round-off, User Exit, Tax Invoice Amount, ALV +- 정의부(복사 시 함께 필요): [`SN1OP`](#decl-zfir0140-81-sn1op), [`STA1`](#decl-zfir0140-88-sta1), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L518-L527` · confidence 0.85 · `ZFIR0140#ZFIR0140#EVENT#END-OF-SELECTION#C2` + +### FORM CLEAR_ITEM_SELECTION — `ZFIR0140` L2299-L2389 (91줄) + +*반제된 매출채권(BSAD)을 선택조건으로 읽어 역분개·비망·FB05 반제 전표를 제외하고 SD 청구(VBRK)·MM 송장(RBKP) 취소 여부와 세금코드를 확인해 세금계산서 발행 후보(AUSGLOP_ITAB)를 만든다.* + +> 이 unit 의 조각 4개가 83/91줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드·일자·전표번호·사업장·고객·사업영역·전표유형·세금코드 조건으로 반제 매출채권(BSAD)을 읽어 세금코드가 있고 자기반제가 아닌 건만 AUSGLOP_ITAB 기본 필드에 옮긴다. + +```abap + 2301| SELECT * FROM BSAD WHERE BUKRS = DD_BUKRS-LOW + 2302| AND BLDAT IN SBDAT + 2303| AND BUDAT IN SBUDAT + 2304| AND BUDAT IN SFKDAT + 2305| AND BELNR IN SBELNR + 2306| AND BUPLA IN SBUPLA + 2307| AND KUNNR IN DD_KUNNR + 2308| AND GSBER IN SBAREA + 2309| AND BLART IN PBLART + 2310| AND MWSKZ IN SMWSKZ. + 2311| CHECK BSAD-MWSKZ NE ' '. + 2312| CHECK BSAD-AUGBL NE BSAD-BELNR. + 2313| CLEAR AUSGLOP_ITAB. + 2314| MOVE CURR TO AUSGLOP_ITAB-WAERS. + 2315| MOVE BSAD-WAERS TO AUSGLOP_ITAB-WAERS. + 2316| MOVE BSAD-BUKRS TO AUSGLOP_ITAB-BUKRS. + 2317| MOVE BSAD-KUNNR TO AUSGLOP_ITAB-KUNNR. + 2318| MOVE BSAD-GJAHR TO AUSGLOP_ITAB-GJAHR. + 2319| MOVE BSAD-GSBER TO AUSGLOP_ITAB-GSBER. + 2320| MOVE BSAD-BELNR TO AUSGLOP_ITAB-BELNR. + 2321| MOVE BSAD-BUDAT TO AUSGLOP_ITAB-BUDAT. + 2322| MOVE BSAD-BLDAT TO AUSGLOP_ITAB-BLDAT. + 2323| MOVE BSAD-BUZEI TO AUSGLOP_ITAB-BUZEI. + 2324| MOVE BSAD-BUPLA TO AUSGLOP_ITAB-BUPLA. + 2325| MOVE BSAD-UMSKZ TO AUSGLOP_ITAB-UMSKZ. + 2326| MOVE BSAD-HKONT TO AUSGLOP_ITAB-HKONT. +``` + +- **EN**: Read cleared customer items from BSAD by company code, dates, document, business place, customer, business area, document type and tax code; keep only items with a tax code that are not self-cleared and copy key fields into AUSGLOP_ITAB. +- 테이블(파서): read [BSAD](/tables/BSAD.md) / write - +- SAP 객체: BSAD +- 업무 키워드: 반제 매출채권, 고객 반제 항목, 세금코드, 사업장, 자기반제 제외 +- English: Cleared Customer Items, BSAD, Tax Code, Business Place, Clearing Document +- 정의부(복사 시 함께 필요): [`BSAD`](#decl-zfir0140top-18-bsad), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`SBDAT`](#decl-zfir0140-58-sbdat), [`SBUDAT`](#decl-zfir0140-48-sbudat), [`SFKDAT`](#decl-zfir0140-66-sfkdat), [`SBELNR`](#decl-zfir0140-57-sbelnr), [`BUPLA`](#decl-zfir0140top-290-bupla), [`SBUPLA`](#decl-zfir0140-46-sbupla), [`SBAREA`](#decl-zfir0140-45-sbarea), [`BLART`](#decl-zfir0140top-289-blart), [`PBLART`](#decl-zfir0140-49-pblart) 외 3건 +- 선언을 못 찾은 이름: DD_BUKRS, DD_KUNNR (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L2301-L2326` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C1` + +#### [validation] 전표 헤더(BKPF)를 읽어 헤더텍스트가 있거나 역분개(STBLG)·비망전표(BSTAT)·FB05 반제전표인 건을 제외하고 참조유형(AWTYP)·참조키(AWKEY)·전표유형을 저장한다. + +```abap + 2328| SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS AND + 2329| BELNR = AUSGLOP_ITAB-BELNR AND + 2330| GJAHR = AUSGLOP_ITAB-GJAHR. + 2331| + 2332| CHECK BKPF-BKTXT = ' ' . + 2333| * CHECK BKPF-BKTXT(2) <> '80'. "= ' ' . "bif용 2006.08.14 + 2334| *doc not reversed... + 2335| CHECK BKPF-STBLG = ' '. + 2336| *doc not a noted item... + 2337| CHECK BKPF-BSTAT = ' '. + 2338| + 2339| CHECK BKPF-TCODE <> 'FB05'. "check document not a FB05-clearing doc. + 2340| MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP. + 2341| MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY. + 2342| MOVE BKPF-BLART TO AUSGLOP_ITAB-BLART. +``` + +- **EN**: Read the document header BKPF and exclude documents with header text, reversed documents (STBLG), noted items (BSTAT) and FB05 clearing documents; keep reference type, reference key and document type. +- 테이블(파서): read [BKPF](/tables/BKPF.md) / write - +- SAP 객체: BKPF, FB05 +- 업무 키워드: 전표 헤더, 역분개 제외, 비망 전표 제외, 반제 전표 제외, 참조 키 +- English: Document Header, Reversal, Noted Item, FB05, Reference Key +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0140top-17-bkpf), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L2328-L2342` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C2` + +#### [validation] SD 청구 유래 전표는 VBRK 로 취소(FKSTO/SFAKN)·청구유형(SFKART)을 검증해 청구 정보를 옮기고, MM 송장(RMRP) 유래 전표는 RBKP 취소전표(STBLG) 유무를 확인하며, SD 전용 선택이면 청구번호·청구유형·청구일 조건을 추가 검사한다. + +```abap + 2343| IF BKPF-AWTYP = 'VBRK'. + 2344| + 2345| SELECT SINGLE * FROM VBRK WHERE VBELN = AUSGLOP_ITAB-AWKEY + 2346| AND BUKRS = AUSGLOP_ITAB-BUKRS. "bif + 2347| IF SY-SUBRC = 0. + 2348| CHECK VBRK-FKSTO IS INITIAL. + 2349| CHECK VBRK-SFAKN IS INITIAL. + 2350| CHECK VBRK-FKART IN SFKART. + 2351| MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN. + 2352| MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART. + 2353| MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT. + 2354| MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP. + 2355| ENDIF. + 2356| ENDIF. + 2357| + 2358| IF BKPF-AWTYP = 'RMRP'. + 2359| SELECT SINGLE STBLG FROM RBKP INTO STBLG + 2360| WHERE BELNR = AUSGLOP_ITAB-AWKEY + 2361| AND GJAHR = BKPF-GJAHR. + 2362| CHECK STBLG IS INITIAL. + 2363| CLEAR STBLG. + 2364| ENDIF. + 2365| + 2366| IF SD_SELECTION = 'X' AND FI_SELECTION NE 'X'. + 2367| CHECK BKPF-AWTYP = 'VBRK'. + 2368| CHECK BKPF-AWKEY IN SVBELN. + 2369| CHECK VBRK-FKART IN SFKART. "check sd selection parameters + 2370| CHECK VBRK-FKDAT IN SFKDAT. "check sd selection parameters + 2371| ENDIF. +``` + +- **EN**: For SD billing documents validate VBRK (not cancelled via FKSTO/SFAKN, billing type in SFKART) and copy billing data; for MM invoices check RBKP for a reversal (STBLG); for SD-only selection apply billing number, type and date filters. +- 테이블(파서): read [VBRK](/tables/VBRK.md), [RBKP](/tables/RBKP.md) / write - +- SAP 객체: VBRK, RBKP +- 업무 키워드: SD 청구전표, 청구 취소 검증, MM 송장 취소, 청구유형, 청구일 +- English: Billing Document, VBRK, Cancellation, RBKP, Billing Type +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0140top-17-bkpf), [`VBRK`](#decl-zfir0140top-12-vbrk), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`SFKART`](#decl-zfir0140-65-sfkart), [`STBLG`](#decl-zfir0140top-295-stblg), [`SD_SELECTION`](#decl-zfir0140top-45-sd_selection), [`FI_SELECTION`](#decl-zfir0140top-47-fi_selection), [`SVBELN`](#decl-zfir0140-64-svbeln), [`SFKDAT`](#decl-zfir0140-66-sfkdat) +- 위치: `abap://ZFIR0140/ZFIR0140#L2343-L2371` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C3` + +#### [sql_select] 전표의 고객 라인(BSEG KOART='D')을 읽어 세금코드가 선택범위(SMWSKZ)에 있는 건만 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다. + +```abap + 2374| SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2375| AND BELNR = AUSGLOP_ITAB-BELNR + 2376| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2377| AND KOART = 'D'. + 2378| MOVE BSEG-KOART TO AUSGLOP_ITAB-KOART. + 2379| CHECK BSEG-MWSKZ IN SMWSKZ. + 2380| MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ. + 2381| MOVE BSEG-ZTERM TO AUSGLOP_ITAB-ZTERM. + 2382| MOVE BSEG-ZFBDT TO AUSGLOP_ITAB-ZFBDT. + 2383| MOVE BSEG-WRBTR TO AUSGLOP_ITAB-WRBTR. + 2384| MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR. + 2385| APPEND AUSGLOP_ITAB. + 2386| ENDSELECT. +``` + +- **EN**: Read the customer line (KOART='D') from BSEG, keep only lines whose tax code is in SMWSKZ, and append payment terms, baseline date and amounts to AUSGLOP_ITAB. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write - +- SAP 객체: BSEG +- 업무 키워드: 고객 라인, 세금코드 필터, 지급조건, 발행 후보 적재 +- English: Customer Line Item, BSEG, Tax Code, Payment Terms +- 정의부(복사 시 함께 필요): [`BSEG`](#decl-zfir0140top-8-bseg), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`SMWSKZ`](#decl-zfir0140-47-smwskz) +- 위치: `abap://ZFIR0140/ZFIR0140#L2374-L2386` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C4` + +### FORM DTI_CHECK — `ZFIR0140` L2576-L2628 (53줄) + +*전자세금계산서 상태 테이블(ZDTI_SAPP/ZDTI_STATUS)을 조회해 이미 발행(취소·거부 상태 제외)된 전표를 발행 대상(AUSGLOP_ITAB)에서 제거한다.* + +> 이 unit 의 조각 2개가 48/53줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [other] 재발행이 가능한 전자세금계산서 상태 코드(DC 공급받는자 취소승인, NC 거부, RJ 발행요청취소, RF 발행거부, CC 발행취소, VC 공급자 취소승인, IR 역발행거부)를 RANGE_CANCEL 범위로 구성한다. + +```abap + 2578| CLEAR : RANGE_CANCEL, RANGE_CANCEL[]. + 2579| RANGE_CANCEL-SIGN = 'I'. + 2580| RANGE_CANCEL-OPTION = 'EQ'. + 2581| RANGE_CANCEL-LOW = 'DC'. "공받자발행취소요청승인 + 2582| APPEND RANGE_CANCEL. + 2583| + 2584| CLEAR : RANGE_CANCEL-LOW. + 2585| RANGE_CANCEL-LOW = 'NC'. "거부 ok + 2586| APPEND RANGE_CANCEL. + 2587| + 2588| CLEAR : RANGE_CANCEL-LOW. + 2589| RANGE_CANCEL-LOW = 'RJ'. "발행요청취소 + 2590| APPEND RANGE_CANCEL. + 2591| + 2592| CLEAR : RANGE_CANCEL-LOW. + 2593| RANGE_CANCEL-LOW = 'RF'. "발행거부 + 2594| APPEND RANGE_CANCEL. + 2595| + 2596| CLEAR : RANGE_CANCEL-LOW. + 2597| RANGE_CANCEL-LOW = 'CC'. "발행취소 ok + 2598| APPEND RANGE_CANCEL. + 2599| + 2600| CLEAR : RANGE_CANCEL-LOW. + 2601| RANGE_CANCEL-LOW = 'VC'. "공급자발행취소요청승인 + 2602| APPEND RANGE_CANCEL. + 2603| + 2604| CLEAR : RANGE_CANCEL-LOW. + 2605| RANGE_CANCEL-LOW = 'IR'. "역발행거부. + 2606| APPEND RANGE_CANCEL. +``` + +- **EN**: Build the RANGE_CANCEL range of electronic tax invoice status codes (DC, NC, RJ, RF, CC, VC, IR) that represent cancelled or rejected issues and therefore allow re-issuing. +- SAP 객체: ZDTI_STATUS +- 업무 키워드: 전자세금계산서 상태, 발행취소, 발행거부, 역발행, 재발행 가능 상태 +- English: Electronic Tax Invoice, Status Code, Cancellation, Rejection +- 정의부(복사 시 함께 필요): [`RANGE_CANCEL`](#decl-zfir0140top-183-range_cancel) +- 위치: `abap://ZFIR0140/ZFIR0140#L2578-L2606` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#DTI_CHECK#C1` + +#### [sql_select] 각 발행 후보 전표에 대해 ZDTI_SAPP 와 ZDTI_STATUS 를 조인 조회해 취소/거부가 아닌 유효한 전자세금계산서 발행 이력이 있으면 중복 발행을 막기 위해 AUSGLOP_ITAB 에서 삭제한다. + +```abap + 2608| LOOP AT AUSGLOP_ITAB. + 2609| SELECT P~BUKRS P~ZETNO P~ZARAP P~BELNR P~GJAHR P~REBELNR + 2610| P~REGJAHR P~EBELN P~EBELP P~MBLNR P~MJAHR P~VBELN + 2611| S~ZSTAT + 2612| INTO CORRESPONDING FIELDS OF TABLE ITABSAPP + 2613| FROM ZDTI_SAPP AS P JOIN ZDTI_STATUS AS S + 2614| ON P~BUKRS = S~BUKRS + 2615| AND P~ZETNO = S~ZETNO + 2616| AND P~ZARAP = S~ZARAP + 2617| WHERE P~BUKRS = AUSGLOP_ITAB-BUKRS + 2618| AND P~GJAHR = AUSGLOP_ITAB-GJAHR + 2619| AND P~BELNR = AUSGLOP_ITAB-BELNR + 2620| AND S~ZSTAT NOT IN RANGE_CANCEL. + 2621| + 2622| IF SY-SUBRC = 0. + 2623| DELETE AUSGLOP_ITAB. + 2624| CLEAR AUSGLOP_ITAB. + 2625| ENDIF. + 2626| ENDLOOP. +``` + +- **EN**: For each candidate document join ZDTI_SAPP with ZDTI_STATUS; if a valid (not cancelled/rejected) electronic tax invoice already exists, delete the document from AUSGLOP_ITAB to prevent duplicate issuing. +- 테이블(파서): read [ZDTI_SAPP](/tables/ZDTI_SAPP.md), [ZDTI_STATUS](/tables/ZDTI_STATUS.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: ZDTI_SAPP, ZDTI_STATUS +- 업무 키워드: 전자세금계산서 발행 이력, 중복 발행 방지, 발행 상태 확인, 발행 대상 제외 +- English: Electronic Tax Invoice, Issued Status, Duplicate Check, ZDTI_SAPP +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`ITABSAPP`](#decl-zfir0140top-184-itabsapp), [`ZDTI_SAPP`](#decl-zfir0140top-27-zdti_sapp), [`ZDTI_STATUS`](#decl-zfir0140top-28-zdti_status), [`RANGE_CANCEL`](#decl-zfir0140top-183-range_cancel) +- 위치: `abap://ZFIR0140/ZFIR0140#L2608-L2626` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#DTI_CHECK#C2` + +### FORM GET_TAX_DATA — `ZFIR0140` L1876-L2054 (179줄) + +*세금계산서 발행 대상 항목에 BSET 세금 데이터를 합산하고 부호를 맞춘 뒤 고객 목록을 만든다.* + +> 이 unit 의 조각 1개가 49/179줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 발행 대상 항목마다 해당 전표의 세금 라인(BSET)을 모두 읽어 공급가액(HWBAS/FWBAS)과 세액(HWSTE/FWSTE)을 합산한다. 한 전표 안에 차·대변 세금 라인이 섞여 있으면(첫 라인의 차대구분과 다른 라인) 빼서 순액을 만들고, 차변(S) 세금 라인만 있는 경우에는 금액 부호를 반전한다. 마지막으로 고객이 바뀌는 지점에서 고객번호를 중복 없이 수집해 이후 주소 조회 대상으로 삼는다. + +```abap + 1880| LOOP AT AUSGLOP_ITAB. + 1881| CLEAR: SIGN,CLEAR. + 1882| + 1883| SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1884| AND BELNR = AUSGLOP_ITAB-BELNR + 1885| AND GJAHR = AUSGLOP_ITAB-GJAHR. + 1886| + 1887| IF SIGN = ' '. + 1888| SIGN = BSET-SHKZG. + 1889| ENDIF. + 1890| IF SIGN <> ' ' AND SIGN <> BSET-SHKZG . + 1891| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE. + 1892| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS. + 1893| AUSGLOP_ITAB-FWSTE = AUSGLOP_ITAB-FWSTE - BSET-FWSTE. + 1894| AUSGLOP_ITAB-FWBAS = AUSGLOP_ITAB-FWBAS - BSET-FWBAS. + 1895| + 1896| + 1897| CLEAR = 'X'. + 1898| ELSE. + 1899| ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 1900| ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 1901| ADD BSET-FWBAS TO AUSGLOP_ITAB-FWBAS. + 1902| ADD BSET-FWSTE TO AUSGLOP_ITAB-FWSTE. + 1903| + 1904| ENDIF. + 1905| + 1906| * ADD bset-hwbas TO ausglop_itab-hwbas. + 1907| * ADD bset-hwste TO ausglop_itab-hwste. + 1908| * ADD bset-fwbas TO ausglop_itab-fwbas. + 1909| * ADD bset-fwste TO ausglop_itab-fwste. + 1910| * IF bset-shkzg = 'S'. + 1911| IF BSET-SHKZG = 'S' AND CLEAR = ' '. + 1912| AUSGLOP_ITAB-WRBTR = -1 * ( AUSGLOP_ITAB-WRBTR ). + 1913| AUSGLOP_ITAB-DMBTR = -1 * ( AUSGLOP_ITAB-DMBTR ). + 1914| ENDIF. + 1915| * MOVE bset-shkzg to ausglop_itab-shkzg. + 1916| IF AUSGLOP_ITAB-SHKZG = ' ' . + 1917| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 1918| ENDIF. + 1919| MODIFY AUSGLOP_ITAB. + 1920| ENDSELECT. + 1921| AT NEW KUNNR. + 1922| READ TABLE CUSTOMER_TAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR. + 1923| IF SY-SUBRC <> 0. + 1924| MOVE AUSGLOP_ITAB-KUNNR TO CUSTOMER_TAB-KUNNR. + 1925| APPEND CUSTOMER_TAB. + 1926| ENDIF. + 1927| ENDAT. + 1928| ENDLOOP. +``` + +- **EN**: Aggregates tax base and tax amounts from BSET per issuing item, netting mixed debit/credit tax lines, flipping signs for debit-only cases, and collecting distinct customers for later address lookup. +- 테이블(파서): read [BSET](/tables/BSET.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSET, HWBAS, HWSTE, FWBAS, FWSTE, SHKZG, KUNNR +- 업무 키워드: 세금계산서, 세액, 공급가액, 부가세, 차대구분, 순액, 부호반전, 고객수집, 세금라인 +- English: tax invoice, tax amount, tax base, VAT, debit credit, net amount, sign reversal, BSET +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`CLEAR`](#decl-zfir0140-1878-clear), [`SIGN`](#decl-zfir0140-1878-sign), [`BSET`](#decl-zfir0140top-13-bset), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`CUSTOMER_TAB`](#decl-zfir0140top-217-customer_tab) +- 위치: `abap://ZFIR0140/ZFIR0140#L1880-L1928` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#GET_TAX_DATA#C1` + +### FORM GET_CUSTOMER_ADDRESS — `ZFIR0140` L2063-L2114 (52줄) + +*고객 마스터(KNA1)에서 사업자번호와 주소를 읽어 고객 헤더(GT_KUNDE)와 발행 항목에 보강하고, 일회성(CPD) 고객은 전표의 BSEC 주소 데이터를 사용하며 종사업장번호(J_1BBRANCH)를 붙인다.* + +> 이 unit 의 조각 3개가 42/52줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드의 사업장 K000 에 대한 종사업장번호(STATE_INSC)를 J_1BBRANCH 에서 읽어 공급자 종사업장 정보로 사용한다. + +```abap + 2068| SELECT SINGLE STATE_INSC INTO L_STATE_INSC + 2069| FROM J_1BBRANCH + 2070| WHERE BUKRS = DD_BUKRS-LOW + 2071| AND BRANCH = 'K000'. +``` + +- **EN**: Read the branch (sub-business place) number STATE_INSC for business place K000 of the company code from J_1BBRANCH. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 종사업장번호, 사업장, 공급자 정보 +- English: Business Place, Branch, J_1BBRANCH +- 정의부(복사 시 함께 필요): [`L_STATE_INSC`](#decl-zfir0140-2066-l_state_insc), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH, DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L2068-L2071` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C1` + +#### [sql_select] 발행 대상 고객마다 KNA1 을 읽어 고객 헤더 GT_KUNDE 를 만들고, 일반 고객은 사업자등록번호(STCD1)·주민번호(STCD2)를 AUSGLOP_ITAB 에 반영하며 일회성 고객(XCPDK)은 CPD 플래그를 표시한다. + +```abap + 2073| LOOP AT CUSTOMER_TAB. + 2074| SELECT SINGLE * FROM KNA1 WHERE KUNNR = CUSTOMER_TAB-KUNNR. + 2075| + 2076| IF SY-SUBRC = 0. + 2077| MOVE-CORRESPONDING KNA1 TO GT_KUNDE. + 2078| GT_KUNDE-STATE_INSC = L_STATE_INSC. + 2079| + 2080| APPEND GT_KUNDE. + 2081| IF KNA1-XCPDK NE 'X'. + 2082| MOVE KNA1-STCD1 TO CUSTOMER_TAB-STCD1. + 2083| MOVE KNA1-STCD2 TO CUSTOMER_TAB-STCD2. + 2084| + 2085| AUSGLOP_ITAB-STCD1 = CUSTOMER_TAB-STCD1. + 2086| AUSGLOP_ITAB-STCD2 = CUSTOMER_TAB-STCD2. + 2087| MODIFY AUSGLOP_ITAB TRANSPORTING STCD1 STCD2 WHERE + 2088| KUNNR = CUSTOMER_TAB-KUNNR. + 2089| ELSE. + 2090| *one time customers. + 2091| AUSGLOP_ITAB-XCPDK = 'X'. + 2092| MODIFY AUSGLOP_ITAB TRANSPORTING XCPDK WHERE + 2093| KUNNR = CUSTOMER_TAB-KUNNR. + 2094| ENDIF. + 2095| ENDIF. + 2096| + 2097| ENDLOOP. +``` + +- **EN**: For each customer read KNA1 to build the customer header GT_KUNDE; copy tax numbers STCD1/STCD2 to the items for regular customers and flag one-time (CPD) customers with XCPDK. +- 테이블(파서): read [KNA1](/tables/KNA1.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: KNA1 +- 업무 키워드: 고객 마스터, 사업자등록번호, 주민등록번호, 일회성 고객, 고객 헤더 +- English: Customer Master, KNA1, Tax Number, One-time Customer, CPD +- 정의부(복사 시 함께 필요): [`CUSTOMER_TAB`](#decl-zfir0140top-217-customer_tab), [`KNA1`](#decl-zfir0140top-15-kna1), [`GT_KUNDE`](#decl-zfir0140top-269-gt_kunde), [`L_STATE_INSC`](#decl-zfir0140-2066-l_state_insc), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L2073-L2097` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C2` + +#### [sql_select] 일회성 고객 전표는 BSEC 에서 전표별 CPD 주소 데이터(상호·도시·사업자번호·주민번호)를 읽어 발행 항목에 채운다. + +```abap + 2099| LOOP AT AUSGLOP_ITAB WHERE XCPDK = 'X'. + 2100| * getting bsec data for CPD-Customers + 2101| SELECT * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2102| AND BELNR = AUSGLOP_ITAB-BELNR + 2103| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2104| AND XCPDK = 'X'. + 2105| MOVE BSEC-NAME1 TO AUSGLOP_ITAB-NAME1. + 2106| MOVE BSEC-ORT01 TO AUSGLOP_ITAB-ORT01. + 2107| MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD1. + 2108| MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD2. + 2109| MODIFY AUSGLOP_ITAB. + 2110| ENDSELECT. + 2111| ENDLOOP. +``` + +- **EN**: For one-time customer documents read the CPD address data (name, city, tax numbers) from BSEC per document and store it in the items. +- 테이블(파서): read [BSEC](/tables/BSEC.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSEC +- 업무 키워드: 일회성 고객, CPD 주소, 사업자번호, 전표별 고객정보 +- English: One-time Customer, BSEC, CPD Data, Tax Number +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`BSEC`](#decl-zfir0140top-10-bsec), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs) +- 위치: `abap://ZFIR0140/ZFIR0140#L2099-L2111` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C3` + +### FORM BUILD_UP_ALV_LAYOUT — `ZFIR0140` L2399-L2445 (47줄) + +*필드카탈로그·이벤트·헤더·특수그룹을 구성하고 SELECTION 으로 대상을 확정한 뒤 REUSE_ALV_HIERSEQ_LIST_DISPLAY 로 고객(GT_KUNDE)-전표(GT_AUSGLOP) 계층 ALV 를 출력한다.* + +> 이 unit 의 조각 1개가 42/47줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] ALV 구성요소(필드카탈로그·이벤트·TOP_OF_PAGE·특수그룹)를 준비하고 SELECTION 으로 FI/SD 항목을 확정한 후 REUSE_ALV_HIERSEQ_LIST_DISPLAY 를 호출해 고객 헤더-전표 아이템 계층 목록을 PF-STATUS·USER_COMMAND 콜백과 함께 표시한다. + +```abap + 2402| PERFORM E01_FIELDCAT_INIT USING GT_FIELDCAT[]. + 2403| PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[]. + 2404| PERFORM E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[]. + 2405| PERFORM E07_SP_GROUP_BUILD USING GT_SP_GROUP[]. + 2406| + 2407| * selection of the fi and sd-items + 2408| PERFORM SELECTION. + 2409| + 2410| * build up ALV layout (part 2) + 2411| PERFORM E05_LAYOUT_BUILD USING GS_LAYOUT. "wg. Parameters + 2412| + 2413| * Call ABAP/4 List Viewer + 2414| CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' + 2415| EXPORTING + 2416| I_CALLBACK_PROGRAM = G_REPID + 2417| I_CALLBACK_PF_STATUS_SET = G_STATUS + 2418| I_CALLBACK_USER_COMMAND = G_USER_COMMAND + 2419| IS_LAYOUT = GS_LAYOUT + 2420| IT_FIELDCAT = GT_FIELDCAT[] + 2421| * IT_EXCLUDING = + 2422| IT_SPECIAL_GROUPS = GT_SP_GROUP[] + 2423| * IT_SORT = + 2424| * IT_FILTER = + 2425| * IS_SEL_HIDE = + 2426| * I_SCREEN_START_COLUMN = 0 + 2427| * I_SCREEN_START_LINE = 0 + 2428| * I_SCREEN_END_COLUMN = 0 + 2429| * I_SCREEN_END_LINE = 0 + 2430| * i_default = g_default + 2431| I_SAVE = G_SAVE + 2432| IS_VARIANT = G_VARIANT + 2433| IT_EVENTS = GT_EVENTS[] + 2434| * IT_EVENT_EXIT = + 2435| I_TABNAME_HEADER = G_TABNAME_HEADER + 2436| I_TABNAME_ITEM = G_TABNAME_ITEM + 2437| IS_KEYINFO = GS_KEYINFO + 2438| * IS_PRINT = + 2439| * IMPORTING + 2440| * E_EXIT_CAUSED_BY_CALLER = + 2441| TABLES + 2442| T_OUTTAB_HEADER = GT_KUNDE + 2443| T_OUTTAB_ITEM = GT_AUSGLOP. +``` + +- **EN**: Prepare the ALV field catalog, events, header and special groups, run SELECTION to finalise FI/SD items, and call REUSE_ALV_HIERSEQ_LIST_DISPLAY to show the customer header / document item hierarchical list with PF-status and user-command callbacks. +- 호출(파서): E01_FIELDCAT_INIT, E03_EVENTTAB_BUILD, E04_COMMENT_BUILD, E07_SP_GROUP_BUILD, SELECTION, E05_LAYOUT_BUILD, REUSE_ALV_HIERSEQ_LIST_DISPLAY +- SAP 객체: REUSE_ALV_HIERSEQ_LIST_DISPLAY +- 업무 키워드: 계층 ALV, 세금계산서 발행 목록, 고객 헤더, 전표 아이템, 사용자 명령 +- English: Hierarchical ALV, REUSE_ALV_HIERSEQ_LIST_DISPLAY, Callback, Field Catalog +- 정의부(복사 시 함께 필요): [`GT_FIELDCAT`](#decl-zfir0140top-246-gt_fieldcat), [`GT_EVENTS`](#decl-zfir0140top-250-gt_events), [`GT_LIST_TOP_OF_PAGE`](#decl-zfir0140top-277-gt_list_top_of_page), [`GT_SP_GROUP`](#decl-zfir0140top-249-gt_sp_group), [`GS_LAYOUT`](#decl-zfir0140top-247-gs_layout), [`G_REPID`](#decl-zfir0140top-276-g_repid), [`G_STATUS`](#decl-zfir0140top-278-g_status), [`G_USER_COMMAND`](#decl-zfir0140top-251-g_user_command), [`G_SAVE`](#decl-zfir0140-132-g_save), [`G_VARIANT`](#decl-zfir0140-138-g_variant), [`G_TABNAME_HEADER`](#decl-zfir0140-133-g_tabname_header), [`G_TABNAME_ITEM`](#decl-zfir0140-134-g_tabname_item) 외 5건 +- 위치: `abap://ZFIR0140/ZFIR0140#L2402-L2443` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#BUILD_UP_ALV_LAYOUT#C1` + +### FORM E04_COMMENT_BUILD — `ZFIR0140` L1012-L1049 (38줄) + +*ALV TOP-OF-PAGE 헤더에 발행 방식(합산/개별), 회사코드, 세금계산서 작성일자를 표시하는 리스트 헤더를 구성한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 옵션 S11OP 에 따라 발행 방식 텍스트를, 그리고 회사코드(DD_BUKRS)와 세금계산서 작성일(SBLDAT)을 ALV 리스트 헤더(SLIS_LISTHEADER)로 만든다. + +```abap + 1016| IF S11OP = 'X'. + 1017| CLEAR LS_LINE. + 1018| LS_LINE-TYP = 'S'. + 1019| LS_LINE-KEY = TEXT-104. + 1020| LS_LINE-INFO = TEXT-103. + 1021| APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. + 1022| ELSE. + 1023| CLEAR LS_LINE. + 1024| LS_LINE-TYP = 'S'. + 1025| LS_LINE-KEY = TEXT-104. + 1026| LS_LINE-INFO = TEXT-102. + 1027| APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. + 1028| + 1029| ENDIF. + 1030| + 1031| * Listheader: show company code + 1032| CLEAR LS_LINE. + 1033| LS_LINE-TYP = 'S'. + 1034| LS_LINE-KEY = TEXT-001. + 1035| LS_LINE-INFO = DD_BUKRS-LOW. + 1036| APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. + 1037| + 1038| * head-info: show acc doc date + 1039| WRITE SBLDAT TO BLDATE. " YYYY.MM.DD. + 1040| CLEAR LS_LINE. + 1041| LS_LINE-TYP = 'S'. + 1042| LS_LINE-KEY = TEXT-101. + 1043| LS_LINE-INFO = BLDATE. + 1044| APPEND LS_LINE TO E04_LT_TOP_OF_PAGE. +``` + +- **EN**: Build ALV list header lines showing the issue mode text (by S11OP), the company code and the tax invoice date SBLDAT. +- SAP 객체: REUSE_ALV_COMMENTARY_WRITE +- 업무 키워드: 리스트 헤더, 회사코드, 세금계산서 작성일, 발행 방식 +- English: List Header, TOP_OF_PAGE, Company Code, Tax Invoice Date +- 정의부(복사 시 함께 필요): [`S11OP`](#decl-zfir0140-82-s11op), [`LS_LINE`](#decl-zfir0140-1013-ls_line), [`SBLDAT`](#decl-zfir0140-72-sbldat), [`BLDATE`](#decl-zfir0140top-37-bldate) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L1016-L1044` · confidence 0.75 · `ZFIR0140#ZFIR0140#FORM#E04_COMMENT_BUILD#C1` + +### FORM SELECTION — `ZFIR0140` L1098-L1135 (38줄) + +*발행 후보(AUSGLOP_ITAB)에서 차변 부호를 조정하고 선수금 요청(T074U 비망항목)을 제외하며 FI/SD 선택 옵션에 따라 ALV 아이템(GT_AUSGLOP)과 고객 헤더(GT_KUNDE)를 확정한다.* + +> 이 unit 의 조각 2개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 차변(SHKZG='S') 건은 공급가액·세액의 부호를 반전하고, T074U 로 특별G/L 지시자가 비망항목(MERKP, 선수금 요청)인 건을 제외하며, FI 전용 선택이면 SD 청구(AWTYP='VBRK') 유래 전표를 빼고 GT_AUSGLOP 에 적재한다. + +```abap + 1102| LOOP AT AUSGLOP_ITAB. + 1103| IF AUSGLOP_ITAB-SHKZG = 'S'. + 1104| AUSGLOP_ITAB-HWBAS = -1 * AUSGLOP_ITAB-HWBAS. + 1105| AUSGLOP_ITAB-HWSTE = -1 * AUSGLOP_ITAB-HWSTE. + 1106| ENDIF. + 1107| + 1108| * check document not down payment request + 1109| + 1110| SELECT SINGLE * FROM T074U WHERE KOART = AUSGLOP_ITAB-KOART + 1111| AND UMSKZ = AUSGLOP_ITAB-UMSKZ. + 1112| CHECK T074U-MERKP = ' '. + 1113| + 1114| * if fi_selection flag is set display only acounting documents + 1115| + 1116| IF FI_SELECTION = 'X' AND SD_SELECTION NE 'X'. + 1117| CHECK AUSGLOP_ITAB-AWTYP <> 'VBRK'. + 1118| MOVE-CORRESPONDING AUSGLOP_ITAB TO GT_AUSGLOP. + 1119| APPEND GT_AUSGLOP. + 1120| ELSE. + 1121| MOVE-CORRESPONDING AUSGLOP_ITAB TO GT_AUSGLOP. + 1122| APPEND GT_AUSGLOP. + 1123| ENDIF. + 1124| + 1125| ENDLOOP. +``` + +- **EN**: Negate tax base and tax amount for debit items, exclude noted-item special G/L transactions (down payment requests) via T074U-MERKP, and, for FI-only selection, skip SD billing documents (AWTYP='VBRK') before appending to GT_AUSGLOP. +- 테이블(파서): read [T074U](/tables/T074U.md) / write - +- SAP 객체: T074U +- 업무 키워드: 차대 구분, 선수금 요청 제외, 특별 G/L, 비망 항목, FI/SD 선택 +- English: Debit/Credit Indicator, Noted Item, Special G/L, Down Payment Request, T074U +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`T074U`](#decl-zfir0140top-22-t074u), [`FI_SELECTION`](#decl-zfir0140top-47-fi_selection), [`SD_SELECTION`](#decl-zfir0140top-45-sd_selection), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop) +- 위치: `abap://ZFIR0140/ZFIR0140#L1102-L1125` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#SELECTION#C1` + +#### [aggregation] 아이템이 하나도 남지 않은 고객은 헤더 테이블(GT_KUNDE)에서 삭제하고 아이템을 고객·전표·라인 순으로 정렬한 뒤 E02_DATA_ADD 로 표시 속성을 보강한다. + +```abap + 1127| LOOP AT GT_KUNDE. + 1128| READ TABLE GT_AUSGLOP WITH KEY KUNNR = GT_KUNDE-KUNNR. + 1129| IF SY-SUBRC NE 0. + 1130| DELETE GT_KUNDE. + 1131| ENDIF. + 1132| ENDLOOP. + 1133| SORT GT_AUSGLOP BY KUNNR BELNR BUZEI. + 1134| PERFORM E02_DATA_ADD TABLES GT_AUSGLOP GT_KUNDE. +``` + +- **EN**: Delete customer header rows without remaining items, sort items by customer/document/line and call E02_DATA_ADD to prepare display attributes. +- 테이블(파서): read - / write [GT_KUNDE](/tables/GT_KUNDE.md) +- 호출(파서): E02_DATA_ADD +- 업무 키워드: 고객 헤더 정리, 정렬, 계층 ALV +- English: Customer Header, Hierarchical ALV, Sort +- 정의부(복사 시 함께 필요): [`KNA1`](#decl-zfir0140top-15-kna1), [`GT_KUNDE`](#decl-zfir0140top-269-gt_kunde), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop) +- 위치: `abap://ZFIR0140/ZFIR0140#L1127-L1134` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#SELECTION#C2` + +### FORM E02_DATA_ADD — `ZFIR0140` L942-L980 (39줄) + +*ALV 출력 전 아이템(GT_AUSGLOP)의 체크박스를 초기화하고 선수금(특별G/L) 건의 공급가액·세액을 양수로 바꾸며 고객 헤더(GT_KUNDE)의 신호등 값을 설정한다.* + +> 이 unit 의 조각 2개가 34/39줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 각 발행 항목의 체크박스를 지우고 특별G/L지시자(UMSKZ)가 있는 선수금 건은 음수인 공급가액(HWBAS)·세액(HWSTE)을 양수로 변환해 리스트에 양수로 표시한다. + +```abap + 945| LOOP AT E02_LT_AUSGLOP. + 946| E02_LT_AUSGLOP-BOX = ' '. + 947| + 948| * if the invoice is a down payment write positive values of base amount + 949| * and tax amount in the list. + 950| + 951| IF E02_LT_AUSGLOP-UMSKZ <> ' '. + 952| IF E02_LT_AUSGLOP-HWBAS < 0. + 953| E02_LT_AUSGLOP-HWBAS = -1 * ( E02_LT_AUSGLOP-HWBAS ). + 954| ENDIF. + 955| IF E02_LT_AUSGLOP-HWSTE < 0. + 956| E02_LT_AUSGLOP-HWSTE = -1 * ( E02_LT_AUSGLOP-HWSTE ). + 957| ENDIF. + 958| ENDIF. + 959| + 960| E02_LT_AUSGLOP-WERT = SY-TABIX MOD 5. + 961| + 962| + 963| + 964| MODIFY E02_LT_AUSGLOP. + 965| ENDLOOP. +``` + +- **EN**: Reset the checkbox of each item and, for down-payment items with a special G/L indicator (UMSKZ), convert negative tax base (HWBAS) and tax amount (HWSTE) to positive values for display. +- 업무 키워드: 선수금, 특별 G/L 지시자, 공급가액, 세액, 부호 변환 +- English: Down Payment, Special G/L Indicator, Tax Base Amount, Tax Amount +- 위치: `abap://ZFIR0140/ZFIR0140#L945-L965` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#E02_DATA_ADD#C1` + +#### [output] 고객 헤더 라인(GT_KUNDE)의 체크박스를 초기화하고 ALV 신호등(LIGHTS) 값을 설정한다. + +```abap + 967| LOOP AT E02_LT_KUNDE. + 968| IF SY-TABIX > 0. + 969| E02_LT_KUNDE-BOX = ' '. + 970| E02_LT_KUNDE-LIGHTS = '3'. + 971| ELSE. + 972| IF SY-TABIX = 1. + 973| E02_LT_KUNDE-LIGHTS = '2'. + 974| ELSE. + 975| E02_LT_KUNDE-LIGHTS = '1'. + 976| ENDIF. + 977| ENDIF. + 978| MODIFY E02_LT_KUNDE. + 979| ENDLOOP. +``` + +- **EN**: Initialise the checkbox and set the ALV traffic-light value (LIGHTS) for each customer header line. +- 테이블(파서): read - / write [E02_LT_KUNDE](/tables/E02_LT_KUNDE.md) +- 업무 키워드: 고객 헤더, 신호등, 체크박스 초기화 +- English: Customer Header, Traffic Light, ALV +- 위치: `abap://ZFIR0140/ZFIR0140#L967-L979` · confidence 0.7 · `ZFIR0140#ZFIR0140#FORM#E02_DATA_ADD#C2` + +### FORM USER_COMMAND — `ZFIR0140` L1158-L1557 (400줄) + +*ALV 사용자 명령 처리 FORM 의 시작부(1/3 창)로 로컬 변수 선언과 시뮬레이션 플래그 초기화만 있다.* + +> 이 unit 의 조각 11개가 322/400줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 커서 위치의 전표(GT_AUSGLOP)에 대해 파라미터 ID BLN/BUK/GJR 를 설정하고 선택된 건이면 FB03 으로 회계전표를 조회하며 미선택 건이면 오류 메시지 E204 를 낸다. + +```abap + 1168| WHEN 'WAHL'. + 1169| READ TABLE GT_AUSGLOP INDEX RS_SELFIELD-TABINDEX. "cursorposit. + 1170| SET PARAMETER ID 'BLN' FIELD GT_AUSGLOP-BELNR. + 1171| SET PARAMETER ID 'BUK' FIELD GT_AUSGLOP-BUKRS. + 1172| SET PARAMETER ID 'GJR' FIELD GT_AUSGLOP-GJAHR. + 1173| IF GT_AUSGLOP-BELNR <> SPACE AND + 1174| ( GT_AUSGLOP-BOX = 'X' OR GT_AUSGLOP-BOX = '1' ). + 1175| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 1176| ENDIF. + 1177| IF GT_AUSGLOP-BELNR <> SPACE AND + 1178| GT_AUSGLOP-BOX = ' '. + 1179| MESSAGE E204. + 1180| ENDIF. + 1181| CLEAR R_UCOMM. +``` + +- **EN**: On WAHL set parameter IDs BLN/BUK/GJR for the cursor row and call transaction FB03 to display the FI document if the row is selected; otherwise raise message E204. +- 호출(파서): FB03 +- SAP 객체: FB03 +- 업무 키워드: 전표 조회, 회계전표, 파라미터 ID, 선택 검증 +- English: Display Document, FB03, SET PARAMETER ID +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop) +- 위치: `abap://ZFIR0140/ZFIR0140#L1168-L1181` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C1` + +#### [aggregation] POST 시 고객 단위(GT_KUNDE)로 체크된 선택을 해당 고객의 모든 전표(GT_AUSGLOP)에 전파하고, 체크된 전표를 발행일(SBLDAT)·사업자번호(STCD2 우선, 없으면 STCD1)와 함께 SEL_AUSGLOP_ITAB 에 모아 회사코드·고객·전표번호 기준 중복을 제거한다. + +```abap + 1193| CLEAR GT_KUNDE. + 1194| LOOP AT GT_KUNDE. + 1195| IF GT_KUNDE-BOX = 'X'. + 1196| CLEAR GT_AUSGLOP. + 1197| LOOP AT GT_AUSGLOP WHERE KUNNR = GT_KUNDE-KUNNR. + 1198| GT_AUSGLOP-BOX = 'X'. + 1199| MODIFY GT_AUSGLOP. + 1200| ENDLOOP. + 1201| ENDIF. + 1202| ENDLOOP. + 1203| + 1204| * Check flags at document level and fill sel_ausglop_itab with selected + 1205| * items. + 1206| REFRESH SEL_AUSGLOP_ITAB. + 1207| CLEAR SAVE_BELNR. + 1208| CLEAR SAVE_AWTYP. + 1209| CLEAR GT_AUSGLOP. + 1210| LOOP AT GT_AUSGLOP. + 1211| IF GT_AUSGLOP-BOX = 'X'. + 1212| SAVE_BELNR = GT_AUSGLOP-BELNR. + 1213| * LOOP AT gt_ausglop WHERE belnr = save_belnr. + 1214| MOVE-CORRESPONDING GT_AUSGLOP TO SEL_AUSGLOP_ITAB. + 1215| SEL_AUSGLOP_ITAB-AUGDT = SBLDAT. + 1216| IF GT_AUSGLOP-STCD2 <> ' '. + 1217| MOVE GT_AUSGLOP-STCD2 TO SEL_AUSGLOP_ITAB-STCD. + 1218| APPEND SEL_AUSGLOP_ITAB. + 1219| ELSE. + 1220| MOVE GT_AUSGLOP-STCD1 TO SEL_AUSGLOP_ITAB-STCD. + 1221| APPEND SEL_AUSGLOP_ITAB. + 1222| ENDIF. + 1223| * ENDLOOP. + 1224| ENDIF. + 1225| ENDLOOP. + 1226| + 1227| DELETE ADJACENT DUPLICATES FROM SEL_AUSGLOP_ITAB COMPARING BUKRS + 1228| KUNNR BELNR. +``` + +- **EN**: Propagate customer-level checkbox selection to all documents of that customer, collect the selected documents into SEL_AUSGLOP_ITAB with issue date and tax registration number (STCD2 preferred over STCD1), and remove duplicates by company code, customer and document. +- 테이블(파서): read - / write [GT_AUSGLOP](/tables/GT_AUSGLOP.md) +- 업무 키워드: 발행 대상 선택, 고객별 선택 전파, 사업자등록번호, 중복 제거, 세금계산서 작성일 +- English: Selected Items, Tax Number, Customer Selection, Tax Invoice Date +- 정의부(복사 시 함께 필요): [`KNA1`](#decl-zfir0140top-15-kna1), [`GT_KUNDE`](#decl-zfir0140top-269-gt_kunde), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`SAVE_BELNR`](#decl-zfir0140top-51-save_belnr), [`SAVE_AWTYP`](#decl-zfir0140top-52-save_awtyp), [`SBLDAT`](#decl-zfir0140-72-sbldat), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs) +- 위치: `abap://ZFIR0140/ZFIR0140#L1193-L1228` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C2` + +#### [control_flow] 회계연도를 결정(GET_TAXINVOICE_YEAR)하고 전표유형(T003, SBLART)이 유효하면 합산 옵션(SN1OP)에 따라 COLLECTIVE_INVOICES 또는 INDIVIDUAL_INVOICES 로 세금계산서 번호를 채번한다. + +```abap + 1236| PERFORM GET_TAXINVOICE_YEAR. + 1237| + 1238| SELECT SINGLE * FROM T003 WHERE BLART = SBLART. + 1239| IF SY-SUBRC = 0. + 1240| IF SN1OP = 'X'. "aggregate invoices option + 1241| + 1242| PERFORM COLLECTIVE_INVOICES. + 1243| ELSE. + 1244| PERFORM INDIVIDUAL_INVOICES. + 1245| ENDIF. + 1246| ENDIF. +``` + +- **EN**: Determine the fiscal year, verify the document type in T003 and assign tax invoice numbers either collectively or individually depending on the aggregate option SN1OP. +- 테이블(파서): read [T003](/tables/T003.md) / write - +- 호출(파서): GET_TAXINVOICE_YEAR, COLLECTIVE_INVOICES, INDIVIDUAL_INVOICES +- SAP 객체: T003 +- 업무 키워드: 세금계산서 번호 채번, 합산/개별 발행, 전표유형 검증, 회계연도 +- English: Tax Invoice Number, Collective Invoice, Document Type, T003 +- 정의부(복사 시 함께 필요): [`T003`](#decl-zfir0140top-23-t003), [`CODE`](#decl-zfir0140top-281-code), [`BLART`](#decl-zfir0140top-289-blart), [`SBLART`](#decl-zfir0140-74-sblart), [`SN1OP`](#decl-zfir0140-81-sn1op) +- 위치: `abap://ZFIR0140/ZFIR0140#L1236-L1246` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C3` + +#### [calculation] 채번된 세금계산서 번호(AUGBL)의 최소·최대값과 회사코드·회계연도를 구해 출력 프로그램 ZFIR0141 의 선택화면 파라미터(SAUGBL BT, SBUKRS, SGJAHR)용 SELTAB 을 구성한다. + +```abap + 1248| CLEAR SEL_AUSGLOP_ITAB. + 1249| REFRESH CLEARING_ITAB1. + 1250| CLEAR CLEARING_DATA-SBUKRS. + 1251| CLEAR CLEARING_DATA-SGJAHR. + 1252| CLEAR CLEARING_DATA-LOW. + 1253| CLEAR CLEARING_DATA-HIGH. + 1254| LINE_COUNT = 0. + 1255| LOOP AT SEL_AUSGLOP_ITAB. + 1256| MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CLEARING_ITAB1. + 1257| APPEND CLEARING_ITAB1. + 1258| ENDLOOP. + 1259| SORT CLEARING_ITAB1 BY AUGBL. + 1260| DESCRIBE TABLE CLEARING_ITAB1 LINES LINE_COUNT2. + 1261| + 1262| * filling the fields used to fill the internal table seltab, which + 1263| * will be transmitted to the selection-screen of the print report. + 1264| LOOP AT CLEARING_ITAB1. + 1265| IF SY-TABIX = 1. + 1266| MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-LOW. + 1267| ENDIF. + 1268| IF SY-TABIX = LINE_COUNT2. + 1269| MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-HIGH. + 1270| ENDIF. + 1271| ENDLOOP. + 1272| LOOP AT SEL_AUSGLOP_ITAB. + 1273| MOVE SEL_AUSGLOP_ITAB-BUKRS TO CLEARING_DATA-SBUKRS. + 1274| MOVE SEL_AUSGLOP_ITAB-GJAHR TO CLEARING_DATA-SGJAHR. + 1275| ENDLOOP. + 1276| + 1277| * filling the internal table seltab to be transmitted to the + 1278| * print programm. + 1279| + 1280| * Pass in the sel_augslop_itab with tax inv no and date duly filled in. + 1281| SELTAB-SELNAME = 'SAUGBL'. + 1282| SELTAB-KIND = 'S'. + 1283| SELTAB-SIGN = 'I'. + 1284| SELTAB-OPTION = 'BT'. + 1285| SELTAB-LOW = CLEARING_DATA-LOW. + 1286| SELTAB-HIGH = CLEARING_DATA-HIGH. + 1287| APPEND SELTAB. + 1288| + 1289| SELTAB-SELNAME = 'SBUKRS'. + 1290| SELTAB-OPTION = 'EQ'. + 1291| SELTAB-LOW = CLEARING_DATA-SBUKRS. + 1292| SELTAB-HIGH = CLEARING_DATA-SBUKRS. + 1293| APPEND SELTAB. + 1294| + 1295| SELTAB-SELNAME = 'SGJAHR'. + 1296| SELTAB-LOW = CLEARING_DATA-SGJAHR. + 1297| SELTAB-HIGH = CLEARING_DATA-SGJAHR. + 1298| APPEND SELTAB. +``` + +- **EN**: Derive the lowest and highest assigned tax invoice number plus company code and fiscal year, and build the SELTAB selection table (SAUGBL range, SBUKRS, SGJAHR) for the print program ZFIR0141. +- SAP 객체: ZFIR0141 +- 업무 키워드: 세금계산서 번호 범위, 선택 테이블, 출력 프로그램 파라미터 +- English: Selection Table, RSPARAMS, Tax Invoice Number Range +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`CLEARING_ITAB1`](#decl-zfir0140top-203-clearing_itab1), [`CLEARING_DATA`](#decl-zfir0140top-58-clearing_data), [`LINE_COUNT`](#decl-zfir0140top-44-line_count), [`LINE_COUNT2`](#decl-zfir0140top-43-line_count2), [`SELTAB`](#decl-zfir0140top-211-seltab) +- 위치: `abap://ZFIR0140/ZFIR0140#L1248-L1298` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C4` + +#### [interface] 발행 대상이 있으면 SEL_AUSGLOP_ITAB·호출 프로그램명·합산옵션·작성일자를 ABAP 메모리(ID TI/KRPROG/SN1OP/SBLDAT)로 넘기고 ZFIR0141 을 SUBMIT AND RETURN 하여 세금계산서 출력·전자전송을 수행한다. + +```abap + 1305| IF LINE_COUNT2 > 0. + 1306| PROG_NAME = SY-CPROG. + 1307| EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'. + 1308| EXPORT PROG_NAME TO MEMORY ID 'KRPROG'. + 1309| * Smartbill 추가 2006.07.19 + 1310| EXPORT SN1OP TO MEMORY ID 'SN1OP'. + 1311| EXPORT SBLDAT TO MEMORY ID 'SBLDAT'. + 1312| + 1313| + 1314| SUBMIT ZFIR0141 + 1315| WITH SELECTION-TABLE SELTAB + 1316| WITH STA1 EQ STA1 + 1317| WITH STA2 EQ STA2 + 1318| WITH LIST EQ LIST + 1319| WITH FULLLIST EQ FULLLIST + 1320| WITH SAP EQ SAP + 1321| WITH RECEIPT EQ RECEIPT + 1322| WITH BILLING EQ BILLING + 1323| + 1324| * WITH sbldat EQ sbldat + 1325| AND RETURN. + 1326| ENDIF. +``` + +- **EN**: Export the selected items, calling program name, aggregate option and issue date to ABAP memory and SUBMIT ZFIR0141 with the selection table to print/transmit the tax invoices, returning afterwards. +- 호출(파서): ZFIR0141 +- SAP 객체: ZFIR0141 +- 업무 키워드: 세금계산서 출력, 전자세금계산서 전송, 프로그램 호출, ABAP 메모리 +- English: SUBMIT, EXPORT TO MEMORY, Electronic Tax Invoice, Print Program +- 정의부(복사 시 함께 필요): [`LINE_COUNT2`](#decl-zfir0140top-43-line_count2), [`PROG_NAME`](#decl-zfir0140top-227-prog_name), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`SN1OP`](#decl-zfir0140-81-sn1op), [`SBLDAT`](#decl-zfir0140-72-sbldat), [`SELTAB`](#decl-zfir0140top-211-seltab), [`STA1`](#decl-zfir0140-88-sta1), [`STA2`](#decl-zfir0140-89-sta2), [`LIST`](#decl-zfir0140-96-list), [`FULLLIST`](#decl-zfir0140-95-fulllist), [`SAP`](#decl-zfir0140-94-sap), [`RECEIPT`](#decl-zfir0140-99-receipt) 외 1건 +- 위치: `abap://ZFIR0140/ZFIR0140#L1305-L1326` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C5` + +#### [output] ZFIR0141 이 메모리 ID TI 로 돌려준 전송 결과(RESULT='Y')를 읽어 정상 전송된 전표는 체크박스를 비활성(BOX='1')하고 세금계산서 번호를 표시·색상 강조하며 ALV 를 갱신한다. + +```abap + 1334| IMPORT SEL_AUSGLOP_ITAB[] FROM MEMORY ID 'TI'. + 1335| FREE MEMORY ID 'TI'. + 1336| + 1337| * setting inactive the checkboxes of FB05-cleared documents + 1338| LOOP AT SEL_AUSGLOP_ITAB. + 1339| LOOP AT GT_AUSGLOP WHERE BELNR = SEL_AUSGLOP_ITAB-BELNR. + 1340| IF SEL_AUSGLOP_ITAB-RESULT EQ 'Y'. + 1341| GT_AUSGLOP-BOX = '1'. + 1342| MOVE SEL_AUSGLOP_ITAB-AUGBL TO GT_AUSGLOP-AUGBL. + 1343| * defining field-color + 1344| + 1345| * Field AUGBL defined + 1346| WA_COLORF-FIELDNAME = 'AUGBL'. + 1347| WA_COLORF-COLOR-COL = '5'. + 1348| WA_COLORF-COLOR-INT = '1'. + 1349| WA_COLORF-COLOR-INV = '0'. + 1350| WA_COLORF-NOKEYCOL = 'X'. + 1351| APPEND WA_COLORF TO INT_COLORF. + 1352| + 1353| GT_AUSGLOP-COLORF = INT_COLORF. + 1354| GT_AUSGLOP-SIM = ' '. + 1355| MODIFY GT_AUSGLOP. + 1356| ELSE. + 1357| ** defining field-color + 1358| * + 1359| ** Field AUGBL defined + 1360| * WA_COLORF-FIELDNAME = 'AUGBL'. + 1361| * WA_COLORF-COLOR-COL = '3'. + 1362| * WA_COLORF-COLOR-INT = '1'. + 1363| * WA_COLORF-COLOR-INV = '0'. + 1364| * WA_COLORF-NOKEYCOL = 'X'. + 1365| * APPEND WA_COLORF TO INT_COLORF. + 1366| * + 1367| * GT_AUSGLOP-COLORF = INT_COLORF. + 1368| GT_AUSGLOP-SIM = ' '. + 1369| MODIFY GT_AUSGLOP. + 1370| ENDIF. + 1371| + 1372| ENDLOOP. + 1373| RS_SELFIELD-REFRESH = 'X'. + 1374| IF SY-SUBRC <> 0. + 1375| ERR_DEB = SEL_AUSGLOP_ITAB-KUNNR. + 1376| ENDIF. + 1377| ENDLOOP. +``` + +- **EN**: Import the transmission result returned by ZFIR0141; for successfully issued documents (RESULT='Y') disable the checkbox, store the tax invoice number with a colored AUGBL cell and refresh the ALV. +- 테이블(파서): read - / write [GT_AUSGLOP](/tables/GT_AUSGLOP.md) +- SAP 객체: ZFIR0141 +- 업무 키워드: 전송 결과 반영, 발행 완료 표시, 세금계산서 번호, ALV 갱신 +- English: Transmission Result, ALV Refresh, Cell Color, Tax Invoice Number +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop), [`WA_COLORF`](#decl-zfir0140top-255-wa_colorf), [`INT_COLORF`](#decl-zfir0140top-257-int_colorf), [`ERR_DEB`](#decl-zfir0140top-56-err_deb) +- 위치: `abap://ZFIR0140/ZFIR0140#L1334-L1377` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C6` + +#### [aggregation] SIM(시뮬레이션) 시 시뮬레이션 플래그를 켜고 POST 와 동일하게 고객 단위 선택을 전표에 전파해 체크된 전표를 SEL_AUSGLOP_ITAB 에 모아 중복 제거한다. + +```abap + 1395| WHEN 'SIM'. + 1396| SIM = 'X'. + 1397| CLEAR GT_KUNDE. + 1398| + 1399| LOOP AT GT_KUNDE. + 1400| IF GT_KUNDE-BOX = 'X'. + 1401| CLEAR GT_AUSGLOP. + 1402| LOOP AT GT_AUSGLOP WHERE KUNNR = GT_KUNDE-KUNNR. + 1403| GT_AUSGLOP-BOX = 'X'. + 1404| MODIFY GT_AUSGLOP. + 1405| ENDLOOP. + 1406| ENDIF. + 1407| ENDLOOP. + 1408| + 1409| * Check flags at document level and fill sel_ausglop_itab with selected + 1410| * items. + 1411| REFRESH SEL_AUSGLOP_ITAB. + 1412| CLEAR SAVE_BELNR. + 1413| CLEAR SAVE_AWTYP. + 1414| CLEAR GT_AUSGLOP. + 1415| LOOP AT GT_AUSGLOP. + 1416| IF GT_AUSGLOP-BOX = 'X'. + 1417| SAVE_BELNR = GT_AUSGLOP-BELNR. + 1418| * LOOP AT gt_ausglop WHERE belnr = save_belnr. + 1419| MOVE-CORRESPONDING GT_AUSGLOP TO SEL_AUSGLOP_ITAB. + 1420| SEL_AUSGLOP_ITAB-AUGDT = SBLDAT. + 1421| IF GT_AUSGLOP-STCD2 <> ' '. + 1422| MOVE GT_AUSGLOP-STCD2 TO SEL_AUSGLOP_ITAB-STCD. + 1423| APPEND SEL_AUSGLOP_ITAB. + 1424| ELSE. + 1425| MOVE GT_AUSGLOP-STCD1 TO SEL_AUSGLOP_ITAB-STCD. + 1426| APPEND SEL_AUSGLOP_ITAB. + 1427| ENDIF. + 1428| * ENDLOOP. + 1429| ENDIF. + 1430| ENDLOOP. + 1431| + 1432| DELETE ADJACENT DUPLICATES FROM SEL_AUSGLOP_ITAB COMPARING BUKRS + 1433| KUNNR BELNR. +``` + +- **EN**: In simulation mode set SIM='X', propagate customer-level selection to documents and collect the checked documents into SEL_AUSGLOP_ITAB without duplicates, same as POST. +- 테이블(파서): read - / write [GT_AUSGLOP](/tables/GT_AUSGLOP.md) +- 업무 키워드: 시뮬레이션, 발행 대상 선택, 고객별 선택 전파, 사업자등록번호 +- English: Simulation, Selected Items, Tax Number +- 정의부(복사 시 함께 필요): [`SIM`](#decl-zfir0140top-65-sim), [`KNA1`](#decl-zfir0140top-15-kna1), [`GT_KUNDE`](#decl-zfir0140top-269-gt_kunde), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`SAVE_BELNR`](#decl-zfir0140top-51-save_belnr), [`SAVE_AWTYP`](#decl-zfir0140top-52-save_awtyp), [`SBLDAT`](#decl-zfir0140-72-sbldat), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs) +- 위치: `abap://ZFIR0140/ZFIR0140#L1395-L1433` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C7` + +#### [control_flow] 시뮬레이션에서도 전표유형(T003)을 확인한 뒤 합산 옵션(SN1OP)에 따라 COLLECTIVE_INVOICES / INDIVIDUAL_INVOICES 로 가상 세금계산서 번호를 부여한다. + +```abap + 1438| SELECT SINGLE * FROM T003 WHERE BLART = SBLART. + 1439| IF SY-SUBRC = 0. + 1440| IF SN1OP = 'X'. "aggregate invoices option + 1441| + 1442| PERFORM COLLECTIVE_INVOICES. + 1443| ELSE. + 1444| PERFORM INDIVIDUAL_INVOICES. + 1445| ENDIF. + 1446| ENDIF. +``` + +- **EN**: Verify the document type in T003 and assign simulated tax invoice numbers collectively or individually according to SN1OP. +- 테이블(파서): read [T003](/tables/T003.md) / write - +- 호출(파서): COLLECTIVE_INVOICES, INDIVIDUAL_INVOICES +- SAP 객체: T003 +- 업무 키워드: 시뮬레이션 채번, 전표유형, 합산/개별 +- English: Simulation, Document Type, T003 +- 정의부(복사 시 함께 필요): [`T003`](#decl-zfir0140top-23-t003), [`CODE`](#decl-zfir0140top-281-code), [`BLART`](#decl-zfir0140top-289-blart), [`SBLART`](#decl-zfir0140-74-sblart), [`SN1OP`](#decl-zfir0140-81-sn1op) +- 위치: `abap://ZFIR0140/ZFIR0140#L1438-L1446` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C8` + +#### [calculation] 시뮬레이션 번호(AUGBL)의 범위와 회사코드·연도로 ZFIR0141 선택화면용 SELTAB(SAUGBL, SBUKRS, SGJAHR)을 구성한다. + +```abap + 1448| CLEAR SEL_AUSGLOP_ITAB. + 1449| REFRESH CLEARING_ITAB1. + 1450| CLEAR CLEARING_DATA-SBUKRS. + 1451| CLEAR CLEARING_DATA-SGJAHR. + 1452| CLEAR CLEARING_DATA-LOW. + 1453| CLEAR CLEARING_DATA-HIGH. + 1454| LINE_COUNT = 0. + 1455| LOOP AT SEL_AUSGLOP_ITAB. + 1456| MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CLEARING_ITAB1. + 1457| APPEND CLEARING_ITAB1. + 1458| ENDLOOP. + 1459| SORT CLEARING_ITAB1 BY AUGBL. + 1460| DESCRIBE TABLE CLEARING_ITAB1 LINES LINE_COUNT2. + 1461| + 1462| * filling the fields used to fill the internal table seltab, which + 1463| * will be transmitted to the selection-screen of the print report. + 1464| LOOP AT CLEARING_ITAB1. + 1465| IF SY-TABIX = 1. + 1466| MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-LOW. + 1467| ENDIF. + 1468| IF SY-TABIX = LINE_COUNT2. + 1469| MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-HIGH. + 1470| ENDIF. + 1471| ENDLOOP. + 1472| LOOP AT SEL_AUSGLOP_ITAB. + 1473| MOVE SEL_AUSGLOP_ITAB-BUKRS TO CLEARING_DATA-SBUKRS. + 1474| MOVE SEL_AUSGLOP_ITAB-GJAHR TO CLEARING_DATA-SGJAHR. + 1475| ENDLOOP. + 1476| + 1477| * filling the internal table seltab to be transmitted to the + 1478| * print programm. + 1479| + 1480| * Pass in the sel_augslop_itab with tax inv no and date duly filled in. + 1481| SELTAB-SELNAME = 'SAUGBL'. + 1482| SELTAB-KIND = 'S'. + 1483| SELTAB-SIGN = 'I'. + 1484| SELTAB-OPTION = 'BT'. + 1485| SELTAB-LOW = CLEARING_DATA-LOW. + 1486| SELTAB-HIGH = CLEARING_DATA-HIGH. + 1487| APPEND SELTAB. + 1488| + 1489| SELTAB-SELNAME = 'SBUKRS'. + 1490| SELTAB-OPTION = 'EQ'. + 1491| SELTAB-LOW = CLEARING_DATA-SBUKRS. + 1492| SELTAB-HIGH = CLEARING_DATA-SBUKRS. + 1493| APPEND SELTAB. + 1494| + 1495| SELTAB-SELNAME = 'SGJAHR'. + 1496| SELTAB-LOW = CLEARING_DATA-SGJAHR. + 1497| SELTAB-HIGH = CLEARING_DATA-SGJAHR. + 1498| APPEND SELTAB. +``` + +- **EN**: Build the SELTAB selection table (SAUGBL range, SBUKRS, SGJAHR) from the simulated invoice numbers for the print program. +- SAP 객체: ZFIR0141 +- 업무 키워드: 선택 테이블, 번호 범위, 시뮬레이션 +- English: Selection Table, Simulation, Tax Invoice Number Range +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`CLEARING_ITAB1`](#decl-zfir0140top-203-clearing_itab1), [`CLEARING_DATA`](#decl-zfir0140top-58-clearing_data), [`LINE_COUNT`](#decl-zfir0140top-44-line_count), [`LINE_COUNT2`](#decl-zfir0140top-43-line_count2), [`SELTAB`](#decl-zfir0140top-211-seltab) +- 위치: `abap://ZFIR0140/ZFIR0140#L1448-L1498` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C9` + +#### [interface] 시뮬레이션 대상을 메모리(TI/KRPROG/KRSIM/SN1OP/SBLDAT)로 넘기고 ZFIR0141 을 SUBMIT AND RETURN 하여 세금계산서를 시뮬레이션 출력(미리보기)한다. + +```abap + 1504| IF LINE_COUNT2 > 0. + 1505| PROG_NAME = SY-CPROG. + 1506| EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'. + 1507| EXPORT PROG_NAME TO MEMORY ID 'KRPROG'. + 1508| **Simulate + 1509| EXPORT SIM TO MEMORY ID 'KRSIM'. + 1510| * Smartbill 추가 2006.07.19 + 1511| EXPORT SN1OP TO MEMORY ID 'SN1OP'. + 1512| EXPORT SBLDAT TO MEMORY ID 'SBLDAT'. + 1513| SUBMIT ZFIR0141 + 1514| WITH SELECTION-TABLE SELTAB + 1515| WITH STA1 EQ STA1 + 1516| WITH STA2 EQ STA2 + 1517| WITH LIST EQ LIST + 1518| WITH FULLLIST EQ FULLLIST + 1519| WITH SAP EQ SAP + 1520| WITH RECEIPT EQ RECEIPT + 1521| WITH BILLING EQ BILLING + 1522| * WITH sbldat EQ sbldat + 1523| AND RETURN. + 1524| ENDIF. +``` + +- **EN**: Export the simulated items and the KRSIM simulation flag to ABAP memory and SUBMIT ZFIR0141 to preview the tax invoices without actual issuance. +- 호출(파서): ZFIR0141 +- SAP 객체: ZFIR0141 +- 업무 키워드: 시뮬레이션 출력, 미리보기, 프로그램 호출, ABAP 메모리 +- English: SUBMIT, Simulation, EXPORT TO MEMORY +- 정의부(복사 시 함께 필요): [`LINE_COUNT2`](#decl-zfir0140top-43-line_count2), [`PROG_NAME`](#decl-zfir0140top-227-prog_name), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`SIM`](#decl-zfir0140top-65-sim), [`SN1OP`](#decl-zfir0140-81-sn1op), [`SBLDAT`](#decl-zfir0140-72-sbldat), [`SELTAB`](#decl-zfir0140top-211-seltab), [`STA1`](#decl-zfir0140-88-sta1), [`STA2`](#decl-zfir0140-89-sta2), [`LIST`](#decl-zfir0140-96-list), [`FULLLIST`](#decl-zfir0140-95-fulllist), [`SAP`](#decl-zfir0140-94-sap) 외 2건 +- 위치: `abap://ZFIR0140/ZFIR0140#L1504-L1524` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C10` + +#### [output] 시뮬레이션된 세금계산서 번호를 GT_AUSGLOP-AUGBL 에 표시하고 SIM 플래그와 셀 색상을 설정한 뒤 ALV 를 갱신한다. + +```abap + 1528| LOOP AT SEL_AUSGLOP_ITAB. + 1529| + 1530| LOOP AT GT_AUSGLOP WHERE BELNR = SEL_AUSGLOP_ITAB-BELNR. + 1531| MOVE SEL_AUSGLOP_ITAB-AUGBL TO GT_AUSGLOP-AUGBL. + 1532| + 1533| * defining field-color + 1534| + 1535| * Field AUGBL defined + 1536| WA_COLORF-FIELDNAME = 'AUGBL'. + 1537| WA_COLORF-COLOR-COL = '5'. + 1538| WA_COLORF-COLOR-INT = '1'. + 1539| WA_COLORF-COLOR-INV = '0'. + 1540| WA_COLORF-NOKEYCOL = 'X'. + 1541| APPEND WA_COLORF TO INT_COLORF. + 1542| + 1543| GT_AUSGLOP-COLORF = INT_COLORF. + 1544| GT_AUSGLOP-SIM = 'X'. + 1545| MODIFY GT_AUSGLOP. + 1546| ENDLOOP. + 1547| RS_SELFIELD-REFRESH = 'X'. + 1548| IF SY-SUBRC <> 0. + 1549| ERR_DEB = SEL_AUSGLOP_ITAB-KUNNR. + 1550| ENDIF. + 1551| ENDLOOP. +``` + +- **EN**: Show the simulated tax invoice number in GT_AUSGLOP with a colored AUGBL cell and SIM flag, then refresh the ALV. +- 테이블(파서): read - / write [GT_AUSGLOP](/tables/GT_AUSGLOP.md) +- 업무 키워드: 시뮬레이션 결과 표시, ALV 갱신, 셀 색상 +- English: Simulation Result, ALV Refresh, Cell Color +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`GT_AUSGLOP`](#decl-zfir0140top-259-gt_ausglop), [`WA_COLORF`](#decl-zfir0140top-255-wa_colorf), [`INT_COLORF`](#decl-zfir0140top-257-int_colorf), [`ERR_DEB`](#decl-zfir0140top-56-err_deb) +- 위치: `abap://ZFIR0140/ZFIR0140#L1528-L1551` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C11` + +### FORM GET_TAXINVOICE_YEAR — `ZFIR0140` L1676-L1708 (33줄) + +*선택 항목의 전기일(BUDAT)과 회사코드로 FI_PERIOD_DETERMINE 을 호출해 세금계산서 채번에 쓸 회계연도(YEAR)를 구한다.* + +> 이 unit 의 조각 1개가 26/33줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 전기일·회사코드로 FI_PERIOD_DETERMINE 을 호출해 회계연도(E_GJAHR)를 YEAR 에 받아 세금계산서 번호범위 채번 연도로 사용한다. + +```abap + 1680| CALL FUNCTION 'FI_PERIOD_DETERMINE' + 1681| EXPORTING + 1682| I_BUDAT = SEL_AUSGLOP_ITAB-BUDAT + 1683| I_BUKRS = DD_BUKRS-LOW + 1684| * I_PERIV = ' ' + 1685| * I_GJAHR = 0000 + 1686| * I_MONAT = 00 + 1687| * X_XMO16 = ' ' + 1688| IMPORTING + 1689| E_GJAHR = YEAR. + 1690| * E_MONAT = + 1691| * E_POPER = + 1692| * EXCEPTIONS + 1693| * FISCAL_YEAR = 1 + 1694| * PERIOD = 2 + 1695| * PERIOD_VERSION = 3 + 1696| * POSTING_PERIOD = 4 + 1697| * SPECIAL_PERIOD = 5 + 1698| * VERSION = 6 + 1699| * POSTING_DATE = 7 + 1700| * OTHERS = 8 + 1701| . + 1702| IF SY-SUBRC <> 0. + 1703| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1704| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1705| ENDIF. +``` + +- **EN**: Determine the fiscal year from posting date and company code via FI_PERIOD_DETERMINE; the year is used as TOYEAR for tax invoice number assignment. +- 호출(파서): FI_PERIOD_DETERMINE +- SAP 객체: FI_PERIOD_DETERMINE +- 업무 키워드: 회계연도, 전기일, 기간 결정, 채번 연도 +- English: Fiscal Year, Posting Date, Period Determination +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`YEAR`](#decl-zfir0140top-224-year) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L1680-L1705` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#GET_TAXINVOICE_YEAR#C1` + +### FORM COLLECTIVE_INVOICES — `ZFIR0140` L1757-L1812 (56줄) + +*합산 세금계산서 방식으로 고객(KUNNR)·사업장(BUPLA) 단위(CPD 고객은 전표 단위)로 세금계산서 번호를 채번해 선택 항목(SEL_AUSGLOP_ITAB-AUGBL)에 부여한다.* + +> 이 unit 의 조각 3개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 선택된 발행 항목에서 일반 고객은 고객번호·사업장(KUNNR, BUPLA) 기준으로 중복 제거하여 합산 단위(CUST_TAB)를 만들고, 일회성(CPD, XCPDK='X') 고객은 전표별로 개별 단위로 추가한다. + +```abap + 1763| LOOP AT SEL_AUSGLOP_ITAB WHERE XCPDK = ' '. + 1764| MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CUST_TAB. + 1765| APPEND CUST_TAB. + 1766| ENDLOOP. + 1767| + 1768| SORT CUST_TAB BY KUNNR BUPLA. + 1769| DELETE ADJACENT DUPLICATES FROM CUST_TAB COMPARING KUNNR BUPLA. + 1770| + 1771| LOOP AT SEL_AUSGLOP_ITAB WHERE XCPDK = 'X'. + 1772| MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CUST_TAB. + 1773| APPEND CUST_TAB. + 1774| ENDLOOP. +``` + +- **EN**: Build the collective invoice grouping table CUST_TAB: one entry per customer/business place (KUNNR, BUPLA) for regular customers and one per document for one-time (CPD) customers. +- 업무 키워드: 합산 세금계산서, 고객별 그룹핑, 사업장, 일회성 고객, 중복 제거 +- English: Collective Tax Invoice, One-time Customer, Business Place, Customer Grouping +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`CUST_TAB`](#decl-zfir0140top-215-cust_tab), [`CODE`](#decl-zfir0140top-281-code), [`BUPLA`](#decl-zfir0140top-290-bupla) +- 위치: `abap://ZFIR0140/ZFIR0140#L1763-L1774` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C1` + +#### [fm_call] 합산 단위(CUST_TAB)마다 시뮬레이션이면 순번을, 실제 발행이면 GET_TAX_INVOICE_NUMBER(NUMBER_GET_NEXT, RF_BELEG)로 세금계산서 번호를 채번해 AUGBL 에 저장한다. + +```abap + 1777| IF SIM = 'X'. + 1778| NUMBER = 0. + 1779| ENDIF. + 1780| *End of simulate + 1781| + 1782| LOOP AT CUST_TAB. + 1783| *Simulate + 1784| IF SIM = 'X'. + 1785| NUMBER = NUMBER + 1. + 1786| ELSE. + 1787| PERFORM GET_TAX_INVOICE_NUMBER. + 1788| ENDIF. + 1789| *End of simulate + 1790| + 1791| CUST_TAB-AUGBL = NUMBER. + 1792| MODIFY CUST_TAB TRANSPORTING AUGBL. + 1793| ENDLOOP. +``` + +- **EN**: For each grouping entry assign a tax invoice number: a running counter in simulation mode, otherwise a real number from GET_TAX_INVOICE_NUMBER (NUMBER_GET_NEXT on RF_BELEG). +- 호출(파서): GET_TAX_INVOICE_NUMBER +- SAP 객체: NUMBER_GET_NEXT, RF_BELEG +- 업무 키워드: 세금계산서 번호, 채번, 번호범위, 시뮬레이션 +- English: Tax Invoice Number, Number Range, Simulation, NUMBER_GET_NEXT +- 정의부(복사 시 함께 필요): [`SIM`](#decl-zfir0140top-65-sim), [`NUMBER`](#decl-zfir0140top-225-number), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`CUST_TAB`](#decl-zfir0140top-215-cust_tab) +- 위치: `abap://ZFIR0140/ZFIR0140#L1777-L1793` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C2` + +#### [other] 채번된 세금계산서 번호(AUGBL)를 CPD 고객은 해당 전표 한 건에, 일반 고객은 같은 고객·사업장의 모든 선택 항목(SEL_AUSGLOP_ITAB)에 되돌려 반영한다. + +```abap + 1795| LOOP AT CUST_TAB. + 1796| IF CUST_TAB-XCPDK = 'X'. + 1797| READ TABLE SEL_AUSGLOP_ITAB WITH KEY KUNNR = CUST_TAB-KUNNR BELNR = + 1798| CUST_TAB-BELNR. + 1799| SEL_AUSGLOP_ITAB-AUGBL = CUST_TAB-AUGBL. + 1800| MODIFY SEL_AUSGLOP_ITAB INDEX SY-TABIX TRANSPORTING AUGBL. + 1801| ELSE. + 1802| + 1803| SEL_AUSGLOP_ITAB-AUGBL = CUST_TAB-AUGBL. + 1804| + 1805| MODIFY SEL_AUSGLOP_ITAB TRANSPORTING AUGBL WHERE + 1806| KUNNR = CUST_TAB-KUNNR AND BUPLA = CUST_TAB-BUPLA. + 1807| ENDIF. + 1808| ENDLOOP. +``` + +- **EN**: Write the assigned tax invoice number back to SEL_AUSGLOP_ITAB: to the single document for CPD customers, or to all items of the same customer and business place otherwise. +- 테이블(파서): read - / write [SEL_AUSGLOP_ITAB](/tables/SEL_AUSGLOP_ITAB.md) +- 업무 키워드: 세금계산서 번호 반영, 합산 단위, 일회성 고객 +- English: Tax Invoice Number, Collective Invoice, One-time Customer +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`CUST_TAB`](#decl-zfir0140top-215-cust_tab), [`CODE`](#decl-zfir0140top-281-code), [`BUPLA`](#decl-zfir0140top-290-bupla) +- 위치: `abap://ZFIR0140/ZFIR0140#L1795-L1808` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C3` + +### FORM GET_TAX_INVOICE_NUMBER — `ZFIR0140` L1717-L1748 (32줄) + +*전표유형 번호범위(T003-NUMKR)와 회사코드·회계연도로 NUMBER_GET_NEXT(RF_BELEG)를 호출해 세금계산서 번호(NUMBER)를 채번한다.* + +> 이 unit 의 조각 1개가 25/32줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FI 전표 번호범위 객체 RF_BELEG 에서 전표유형의 번호범위(T003-NUMKR)·회사코드·연도로 다음 번호를 받아 세금계산서 번호로 사용한다(예외 처리는 주석 처리됨). + +```abap + 1721| CALL FUNCTION 'NUMBER_GET_NEXT' + 1722| EXPORTING + 1723| NR_RANGE_NR = T003-NUMKR + 1724| OBJECT = 'RF_BELEG' + 1725| * QUANTITY = '1' + 1726| SUBOBJECT = DD_BUKRS-LOW + 1727| TOYEAR = YEAR + 1728| * IGNORE_BUFFER = ' ' + 1729| IMPORTING + 1730| NUMBER = NUMBER. + 1731| * QUANTITY = + 1732| * RETURNCODE = + 1733| * EXCEPTIONS + 1734| * INTERVAL_NOT_FOUND = 1 + 1735| * NUMBER_RANGE_NOT_INTERN = 2 + 1736| * OBJECT_NOT_FOUND = 3 + 1737| * QUANTITY_IS_0 = 4 + 1738| * QUANTITY_IS_NOT_1 = 5 + 1739| * INTERVAL_OVERFLOW = 6 + 1740| * OTHERS = 7 + 1741| . + 1742| IF SY-SUBRC <> 0. + 1743| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1744| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1745| ENDIF. +``` + +- **EN**: Call NUMBER_GET_NEXT on number range object RF_BELEG (range T003-NUMKR, subobject company code, fiscal year) to obtain the next tax invoice number; exception handling is commented out. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, RF_BELEG, T003 +- 업무 키워드: 세금계산서 번호, 채번, 번호범위, 회계연도 +- English: Number Range, NUMBER_GET_NEXT, RF_BELEG, Fiscal Year +- 정의부(복사 시 함께 필요): [`T003`](#decl-zfir0140top-23-t003), [`YEAR`](#decl-zfir0140top-224-year), [`NUMBER`](#decl-zfir0140top-225-number) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L1721-L1745` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#GET_TAX_INVOICE_NUMBER#C1` + +### FORM INDIVIDUAL_INVOICES — `ZFIR0140` L1821-L1867 (47줄) + +*개별 세금계산서 방식으로 선택된 전표마다 NUMBER_GET_NEXT(RF_BELEG)로 세금계산서 번호를 채번해 SEL_AUSGLOP_ITAB-AUGBL 에 부여한다(시뮬레이션이면 순번).* + +> 이 unit 의 조각 1개가 41/47줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 선택된 발행 항목마다 시뮬레이션이면 순번을, 실제 발행이면 NUMBER_GET_NEXT(객체 RF_BELEG, 번호범위 T003-NUMKR, 회사코드·연도)로 전표번호범위에서 세금계산서 번호를 채번해 AUGBL 에 저장한다. + +```abap + 1824| IF SIM = 'X'. + 1825| NUMBER = 0. + 1826| ENDIF. + 1827| + 1828| LOOP AT SEL_AUSGLOP_ITAB. + 1829| + 1830| *Simulate + 1831| IF SIM = 'X'. + 1832| NUMBER = NUMBER + 1. + 1833| ELSE. + 1834| + 1835| CALL FUNCTION 'NUMBER_GET_NEXT' + 1836| EXPORTING + 1837| NR_RANGE_NR = T003-NUMKR + 1838| OBJECT = 'RF_BELEG' + 1839| * QUANTITY = '1' + 1840| SUBOBJECT = DD_BUKRS-LOW + 1841| TOYEAR = YEAR + 1842| * IGNORE_BUFFER = ' ' + 1843| IMPORTING + 1844| NUMBER = NUMBER. + 1845| * QUANTITY = + 1846| * RETURNCODE = + 1847| * EXCEPTIONS + 1848| * INTERVAL_NOT_FOUND = 1 + 1849| * NUMBER_RANGE_NOT_INTERN = 2 + 1850| * OBJECT_NOT_FOUND = 3 + 1851| * QUANTITY_IS_0 = 4 + 1852| * QUANTITY_IS_NOT_1 = 5 + 1853| * INTERVAL_OVERFLOW = 6 + 1854| * OTHERS = 7 + 1855| . + 1856| IF SY-SUBRC <> 0. + 1857| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1858| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1859| ENDIF. + 1860| ENDIF. + 1861| SEL_AUSGLOP_ITAB-AUGBL = NUMBER. + 1862| MODIFY SEL_AUSGLOP_ITAB TRANSPORTING AUGBL. + 1863| + 1864| ENDLOOP. +``` + +- **EN**: For each selected item assign an individual tax invoice number: a counter in simulation mode, otherwise NUMBER_GET_NEXT on object RF_BELEG with number range T003-NUMKR, company code and fiscal year, stored in AUGBL. +- 테이블(파서): read - / write [SEL_AUSGLOP_ITAB](/tables/SEL_AUSGLOP_ITAB.md) +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, RF_BELEG, T003 +- 업무 키워드: 개별 세금계산서, 채번, 번호범위, 전표유형 번호범위, 시뮬레이션 +- English: Individual Tax Invoice, Number Range, NUMBER_GET_NEXT, Document Type +- 정의부(복사 시 함께 필요): [`SIM`](#decl-zfir0140top-65-sim), [`NUMBER`](#decl-zfir0140top-225-number), [`SEL_AUSGLOP_ITAB`](#decl-zfir0140top-126-sel_ausglop_itab), [`T003`](#decl-zfir0140top-23-t003), [`YEAR`](#decl-zfir0140top-224-year) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L1824-L1864` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#INDIVIDUAL_INVOICES#C1` + +### FORM POSSIBLE_ENTRY — `ZFIR0140` L2154-L2200 (47줄) + +*매출 세금계산서용 세금코드(A1~A8)와 한글 설명을 하드코딩으로 구성해 세금코드 F4 도움말(VALUE_HELP)을 표시한다.* + +> 이 unit 의 조각 1개가 37/47줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] T007S 조회 대신 매출 세금코드 A1(일반)·A2(주민번호)·A4(특판)·A6~A8(영세율)과 설명을 IT_T007S 에 하드코딩하고 값 도움말 필드·값 테이블을 만들어 VALUE_HELP 팝업을 띄운다. + +```abap + 2162| MOVE 'A1' TO IT_T007S-MWSKZ. + 2163| MOVE '세금계산서(일반)' TO IT_T007S-TEXT1. + 2164| APPEND IT_T007S. + 2165| MOVE 'A2' TO IT_T007S-MWSKZ. + 2166| MOVE '세금계산서(주민번호발행)' TO IT_T007S-TEXT1. + 2167| APPEND IT_T007S. + 2168| MOVE 'A4' TO IT_T007S-MWSKZ. + 2169| MOVE '세금계산서(특판)' TO IT_T007S-TEXT1. + 2170| APPEND IT_T007S. + 2171| MOVE 'A6' TO IT_T007S-MWSKZ. + 2172| MOVE '세금계산서(영세율)' TO IT_T007S-TEXT1. + 2173| APPEND IT_T007S. + 2174| MOVE 'A7' TO IT_T007S-MWSKZ. + 2175| MOVE '세금계산서(영세율-수출면장)' TO IT_T007S-TEXT1. + 2176| APPEND IT_T007S. + 2177| MOVE 'A8' TO IT_T007S-MWSKZ. + 2178| MOVE '세금계산서(영세율-국내수출)' TO IT_T007S-TEXT1. + 2179| APPEND IT_T007S. + 2180| + 2181| + 2182| T_HELPFIELD-TABNAME = 'T007S'. + 2183| T_HELPFIELD-FIELDNAME = 'MWSKZ'. + 2184| T_HELPFIELD-SELECTFLAG = 'X'. + 2185| APPEND T_HELPFIELD. + 2186| T_HELPFIELD-TABNAME = 'T007S'. + 2187| T_HELPFIELD-FIELDNAME = 'TEXT1'. + 2188| T_HELPFIELD-SELECTFLAG = ' '. + 2189| APPEND T_HELPFIELD. + 2190| + 2191| LOOP AT IT_T007S. + 2192| T_HELPVALUE-VALUE = IT_T007S-MWSKZ. + 2193| APPEND T_HELPVALUE. + 2194| T_HELPVALUE-VALUE = IT_T007S-TEXT1. + 2195| APPEND T_HELPVALUE. + 2196| ENDLOOP. + 2197| + 2198| PERFORM VALUE_HELP USING '세금코드 조회'. +``` + +- **EN**: Hard-code the sales tax codes A1..A8 with Korean descriptions instead of reading T007S, build the help field/value tables and call VALUE_HELP to show the tax code F4 popup. +- 호출(파서): VALUE_HELP +- SAP 객체: T007S, HELP_VALUES_GET_WITH_TABLE_EXT +- 업무 키워드: 세금코드, 값 도움말, 영세율, 세금계산서 유형 +- English: Tax Code, F4 Help, Zero-rated Tax, T007S +- 정의부(복사 시 함께 필요): [`IT_T007S`](#decl-zfir0140top-299-it_t007s), [`T_HELPFIELD`](#decl-zfir0140top-304-t_helpfield), [`T_HELPVALUE`](#decl-zfir0140top-312-t_helpvalue) +- 위치: `abap://ZFIR0140/ZFIR0140#L2162-L2198` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#POSSIBLE_ENTRY#C1` + +### FORM CHECK_MWSKZ — `ZFIR0140` L2269-L2290 (22줄) + +*세금코드 선택조건(SMWSKZ)이 비어 있으면 매출 세금계산서 대상 세금코드(A1,A2,A4,A6,A7,A8)를 기본값으로 채운다.* + +> 이 unit 의 조각 1개가 18/22줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 사용자가 세금코드(MWSKZ)를 입력하지 않으면 매출 세금계산서 대상 세금코드 A1·A2·A4·A6·A7·A8 을 SMWSKZ 선택옵션에 기본 적용한다. + +```abap + 2271| IF SMWSKZ-LOW EQ SPACE AND SMWSKZ-HIGH EQ SPACE. + 2272| SMWSKZ-SIGN = 'I'. + 2273| SMWSKZ-OPTION = 'EQ'. + 2274| + 2275| SMWSKZ-LOW = 'A1'. + 2276| APPEND SMWSKZ. + 2277| SMWSKZ-LOW = 'A2'. + 2278| APPEND SMWSKZ. + 2279| SMWSKZ-LOW = 'A4'. + 2280| APPEND SMWSKZ. + 2281| SMWSKZ-LOW = 'A6'. + 2282| APPEND SMWSKZ. + 2283| SMWSKZ-LOW = 'A7'. + 2284| APPEND SMWSKZ. + 2285| SMWSKZ-LOW = 'A8'. + 2286| APPEND SMWSKZ. + 2287| + 2288| ENDIF. +``` + +- **EN**: Default the tax code select-option SMWSKZ to the output tax codes A1, A2, A4, A6, A7, A8 used for sales tax invoices when the user entered none. +- 업무 키워드: 세금코드, 기본값, 매출부가세, 영세율, 선택옵션 +- English: Tax Code, Select-Option, Output Tax, Default Value +- 정의부(복사 시 함께 필요): [`SMWSKZ`](#decl-zfir0140-47-smwskz) +- 위치: `abap://ZFIR0140/ZFIR0140#L2271-L2288` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#CHECK_MWSKZ#C1` + +### FORM GET_SALES_TAX_SGTXT — `ZFIR0140` L2454-L2474 (21줄) + +*발행 대상 각 전표의 매출부가세 라인(BSEG MWART='A')의 품목텍스트(SGTXT)를 읽어 AUSGLOP_ITAB 에 보강한다.* + +> 이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 발행 대상 전표별로 BSEG 에서 매출부가세 라인(MWART='A')을 SELECT SINGLE 하여 그 품목텍스트(SGTXT)를 세금계산서 적요로 AUSGLOP_ITAB 에 반영한다. + +```abap + 2456| LOOP AT AUSGLOP_ITAB. + 2457| + 2458| * SELECT SINGLE * FROM bseg WHERE belnr = ausglop_itab-belnr + 2459| * AND mwart = 'A'. + 2460| * 아래와 같이 고침 2003.10.14 + 2461| + 2462| SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2463| AND BELNR = AUSGLOP_ITAB-BELNR + 2464| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2465| AND MWART = 'A'. + 2466| + 2467| + 2468| IF SY-SUBRC EQ 0. + 2469| MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT. + 2470| MODIFY AUSGLOP_ITAB. + 2471| ENDIF. + 2472| ENDLOOP. +``` + +- **EN**: For each candidate document, read the output tax line (MWART='A') from BSEG and copy its item text SGTXT into AUSGLOP_ITAB as the tax invoice description. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSEG +- 업무 키워드: 매출부가세, 품목텍스트, 적요, 세금라인 +- English: Output Tax, Item Text, BSEG, Tax Line +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`BSEG`](#decl-zfir0140top-8-bseg), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs) +- 위치: `abap://ZFIR0140/ZFIR0140#L2456-L2472` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#GET_SALES_TAX_SGTXT#C1` + +### FORM PARK_DOCUMENT_SELECTION — `ZFIR0140` L2483-L2567 (85줄) + +*임시저장(Parked) 매출전표(VBKPF/VBSEGD/VBSEGS)를 읽어 고객·세금코드·공급가액·세액을 계산하고 세금계산서 발행 대상(AUSGLOP_ITAB)으로 적재한다.* + +> 이 unit 의 조각 3개가 72/85줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 선택화면 조건(회사코드·전표번호·전기일·전표유형 DR)에 맞는 임시저장(BSTAT='V') 매출전표 헤더를 VBKPF 에서 조회한다. + +```abap + 2492| SELECT * INTO CORRESPONDING FIELDS OF TABLE P_AUSGLOP_ITAB + 2493| FROM VBKPF + 2494| WHERE BUKRS = DD_BUKRS-LOW + 2495| AND AUSBK = DD_BUKRS-LOW + 2496| AND BELNR IN SBELNR + 2497| AND BLDAT IN SBDAT + 2498| AND BUDAT IN SBUDAT + 2499| AND BUDAT IN SFKDAT + 2500| AND BLART IN PBLART + 2501| AND BLART EQ 'DR' + 2502| AND BSTAT EQ 'V'. +``` + +- **EN**: Select parked (BSTAT='V') customer invoice document headers of type DR from VBKPF by company code, document number and posting date ranges. +- 테이블(파서): read [VBKPF](/tables/VBKPF.md) / write - +- SAP 객체: VBKPF +- 업무 키워드: 임시전표, 매출전표, 전표헤더, 회사코드, 전표유형 +- English: Parked Document, Document Header, Company Code, Document Type +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`P_AUSGLOP_ITAB`](#decl-zfir0140top-176-p_ausglop_itab), [`VBKPF`](#decl-zfir0140top-24-vbkpf), [`CODE`](#decl-zfir0140top-281-code), [`BUKRS`](#decl-zfir0140top-291-bukrs), [`SBELNR`](#decl-zfir0140-57-sbelnr), [`SBDAT`](#decl-zfir0140-58-sbdat), [`SBUDAT`](#decl-zfir0140-48-sbudat), [`SFKDAT`](#decl-zfir0140-66-sfkdat), [`BLART`](#decl-zfir0140top-289-blart), [`PBLART`](#decl-zfir0140-49-pblart) +- 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L2492-L2502` · confidence 0.9 · `ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C1` + +#### [calculation] 각 임시전표에 대해 VBSEGD 고객라인을 읽어 고객·세금코드·금액을 채우고, 자동세금계산(XMWST) 여부에 따라 Z_SB_TAX_CAL 세율로 역산하거나 입력세액(MWSTS) 또는 VBSEGS 세금라인(MWART='A')에서 공급가액(HWBAS)·세액(HWSTE)을 결정하며 고객라인이 없으면 대상에서 제외한다. + +```abap + 2504| LOOP AT P_AUSGLOP_ITAB. + 2505| CLEAR : VBSEGD, VBSEGS, T_VBSEGS, T_VBSEGS[], GV_KBETR. + 2506| SELECT SINGLE * + 2507| FROM VBSEGD + 2508| WHERE AUSBK EQ P_AUSGLOP_ITAB-BUKRS + 2509| AND BELNR EQ P_AUSGLOP_ITAB-BELNR + 2510| AND GJAHR EQ P_AUSGLOP_ITAB-GJAHR + 2511| AND KUNNR IN DD_KUNNR + 2512| AND MWSKZ IN SMWSKZ. + 2513| + 2514| IF SY-SUBRC EQ 0. + 2515| MOVE : VBSEGD-KUNNR TO P_AUSGLOP_ITAB-KUNNR, + 2516| VBSEGD-BUPLA TO P_AUSGLOP_ITAB-BUPLA, + 2517| VBSEGD-MWSKZ TO P_AUSGLOP_ITAB-MWSKZ, + 2518| VBSEGD-ZTERM TO P_AUSGLOP_ITAB-ZTERM, + 2519| VBSEGD-DMBTR TO P_AUSGLOP_ITAB-DMBTR. " 총금액 + 2520| + 2521| * 1. 자동계산을 체크하는 방법 + 2522| IF P_AUSGLOP_ITAB-XMWST EQ 'X'. + 2523| CALL FUNCTION 'Z_SB_TAX_CAL' + 2524| EXPORTING + 2525| MWSKZ = VBSEGD-MWSKZ + 2526| IMPORTING + 2527| KBETR = GV_KBETR. + 2528| IF NOT GV_KBETR IS INITIAL. + 2529| P_AUSGLOP_ITAB-HWBAS = VBSEGD-DMBTR / GV_KBETR. + 2530| P_AUSGLOP_ITAB-HWSTE = VBSEGD-DMBTR - P_AUSGLOP_ITAB-HWBAS. + 2531| + 2532| ENDIF. + 2533| ELSE. + 2534| * 2. 자동계산 체크 안하고 세액을 직접 입력하는 방법 + 2535| IF VBSEGD-MWSKZ NE ''. + 2536| P_AUSGLOP_ITAB-HWBAS = VBSEGD-DMBTR - VBSEGD-MWSTS. + 2537| P_AUSGLOP_ITAB-HWSTE = VBSEGD-MWSTS. + 2538| * 3. 자동계산 체크 않하고 전표항목에 세금계정을 추가해서 생성하는 방법 + 2539| ELSE. + 2540| SELECT SINGLE * + 2541| FROM VBSEGS + 2542| WHERE AUSBK = P_AUSGLOP_ITAB-BUKRS + 2543| AND BELNR = P_AUSGLOP_ITAB-BELNR + 2544| AND GJAHR = P_AUSGLOP_ITAB-GJAHR + 2545| AND MWART EQ 'A' " 매출 부가가치세 + 2546| AND MWSKZ IN SMWSKZ. + 2547| P_AUSGLOP_ITAB-HWBAS = VBSEGS-HWBAS. + 2548| P_AUSGLOP_ITAB-HWSTE = VBSEGS-DMBTR. + 2549| P_AUSGLOP_ITAB-MWSKZ = VBSEGS-MWSKZ. + 2550| ENDIF. + 2551| ENDIF. + 2552| MODIFY P_AUSGLOP_ITAB. + 2553| CLEAR P_AUSGLOP_ITAB. + 2554| ELSE. + 2555| DELETE P_AUSGLOP_ITAB. + 2556| CLEAR P_AUSGLOP_ITAB. + 2557| ENDIF. + 2558| ENDLOOP. +``` + +- **EN**: For each parked document read the customer line from VBSEGD and derive tax base (HWBAS) and tax amount (HWSTE) either via Z_SB_TAX_CAL rate back-calculation, the entered tax amount, or the output tax G/L line in VBSEGS (MWART='A'); drop documents without a matching customer line. +- 테이블(파서): read [VBSEGD](/tables/VBSEGD.md), [VBSEGS](/tables/VBSEGS.md) / write - +- 호출(파서): Z_SB_TAX_CAL +- SAP 객체: VBSEGD, VBSEGS, Z_SB_TAX_CAL +- 업무 키워드: 공급가액, 세액, 자동세금계산, 세금코드, 매출부가세, 고객라인 +- English: Tax Base Amount, Tax Amount, Tax Code, Output Tax, Customer Line Item +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`P_AUSGLOP_ITAB`](#decl-zfir0140top-176-p_ausglop_itab), [`VBSEGD`](#decl-zfir0140top-25-vbsegd), [`VBSEGS`](#decl-zfir0140top-26-vbsegs), [`T_VBSEGS`](#decl-zfir0140top-177-t_vbsegs), [`GV_KBETR`](#decl-zfir0140top-180-gv_kbetr), [`SMWSKZ`](#decl-zfir0140-47-smwskz) +- 선언을 못 찾은 이름: DD_KUNNR (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0140/ZFIR0140#L2504-L2558` · confidence 0.85 · `ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C2` + +#### [other] 계산이 끝난 임시전표 목록을 세금계산서 발행 대상 내부테이블 AUSGLOP_ITAB 으로 옮긴다. + +```abap + 2560| CLEAR : AUSGLOP_ITAB. + 2561| LOOP AT P_AUSGLOP_ITAB. + 2562| MOVE-CORRESPONDING P_AUSGLOP_ITAB TO AUSGLOP_ITAB. + 2563| APPEND AUSGLOP_ITAB. + 2564| CLEAR AUSGLOP_ITAB. + 2565| ENDLOOP. +``` + +- **EN**: Copy the processed parked documents into the tax invoice candidate table AUSGLOP_ITAB. +- 업무 키워드: 발행대상, 내부테이블 복사 +- English: Tax Invoice, Internal Table +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0140top-74-ausglop_itab), [`P_AUSGLOP_ITAB`](#decl-zfir0140top-176-p_ausglop_itab) +- 위치: `abap://ZFIR0140/ZFIR0140#L2560-L2565` · confidence 0.8 · `ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C3` + +## 정의부 (131건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0140` (42건) + +#### SBAREA — select-option · L45-L45 {#decl-zfir0140-45-sbarea} + +```abap +SELECT-OPTIONS: SBAREA FOR BSID-GSBER NO-DISPLAY. +``` + +#### SBUPLA — select-option · L46-L46 {#decl-zfir0140-46-sbupla} + +```abap +SELECT-OPTIONS: SBUPLA FOR BSID-BUPLA. +``` + +#### SMWSKZ — select-option · L47-L47 {#decl-zfir0140-47-smwskz} + +```abap +SELECT-OPTIONS: SMWSKZ FOR BSET-MWSKZ. +``` + +#### SBUDAT — select-option · L48-L48 {#decl-zfir0140-48-sbudat} + +```abap +SELECT-OPTIONS: SBUDAT FOR BSID-BUDAT. +``` + +#### PBLART — select-option · L49-L49 {#decl-zfir0140-49-pblart} + +```abap +SELECT-OPTIONS: PBLART FOR BKPF-BLART. " Document type +``` + +#### SBELNR — select-option · L57-L57 {#decl-zfir0140-57-sbelnr} + +```abap +SELECT-OPTIONS: SBELNR FOR BSID-BELNR. "acc. doc. number +``` + +#### SBDAT — select-option · L58-L58 {#decl-zfir0140-58-sbdat} + +```abap +SELECT-OPTIONS: SBDAT FOR BSID-BLDAT. "acc. doc date +``` + +#### SVBELN — select-option · L64-L64 {#decl-zfir0140-64-svbeln} + +```abap +SELECT-OPTIONS: SVBELN FOR VBRK-VBELN NO-DISPLAY. "billing document +``` + +#### SFKART — select-option · L65-L65 {#decl-zfir0140-65-sfkart} + +```abap +SELECT-OPTIONS: SFKART FOR VBRK-FKART NO-DISPLAY. "bill. doc. type +``` + +#### SFKDAT — select-option · L66-L66 {#decl-zfir0140-66-sfkdat} + +```abap +SELECT-OPTIONS: SFKDAT FOR VBRK-FKDAT NO-DISPLAY. "billing date +``` + +#### SBLDAT — parameter · L72-L72 {#decl-zfir0140-72-sbldat} + +```abap +PARAMETERS: SBLDAT LIKE BSID-BLDAT. " DEFAULT sy-datum OBLIGATORY. +``` + +#### SBLART — parameter · L74-L74 {#decl-zfir0140-74-sblart} + +```abap +PARAMETERS: SBLART LIKE BKPF-BLART OBLIGATORY. " DEFAULT 'T1'. +``` + +#### SN1OP — parameter · L81-L81 {#decl-zfir0140-81-sn1op} + +```abap +PARAMETER SN1OP RADIOBUTTON GROUP OPIT DEFAULT 'X'. "aggregate invoices +``` + +#### S11OP — parameter · L82-L82 {#decl-zfir0140-82-s11op} + +```abap +PARAMETER S11OP RADIOBUTTON GROUP OPIT. "indiv.invoices +``` + +#### STA1 — parameter · L88-L88 {#decl-zfir0140-88-sta1} + +```abap +PARAMETER STA1 RADIOBUTTON GROUP TATI DEFAULT 'X'. " normal tax inv. +``` + +#### STA2 — parameter · L89-L89 {#decl-zfir0140-89-sta2} + +```abap +PARAMETER STA2 RADIOBUTTON GROUP TATI. "tax exempted tax inv +``` + +#### SAP — parameter · L94-L94 {#decl-zfir0140-94-sap} + +```abap +PARAMETER SAP RADIOBUTTON GROUP OUT. " SAP Script output +``` + +#### FULLLIST — parameter · L95-L95 {#decl-zfir0140-95-fulllist} + +```abap +PARAMETER FULLLIST RADIOBUTTON GROUP OUT DEFAULT 'X'. "List Output +``` + +#### LIST — parameter · L96-L96 {#decl-zfir0140-96-list} + +```abap +PARAMETER LIST RADIOBUTTON GROUP OUT. " List Output +``` + +#### RECEIPT — parameter · L99-L99 {#decl-zfir0140-99-receipt} + +```abap +PARAMETER RECEIPT RADIOBUTTON GROUP IND. " Receipt indicator +``` + +#### BILLING — parameter · L103-L103 {#decl-zfir0140-103-billing} + +```abap +PARAMETER BILLING RADIOBUTTON GROUP IND DEFAULT 'X'." Billing indicator +``` + +#### P_MAXROW — parameter · L112-L112 {#decl-zfir0140-112-p_maxrow} + +```abap +PARAMETERS: P_MAXROW TYPE I DEFAULT 50. +``` + +#### P_VARI — parameter · L115-L115 {#decl-zfir0140-115-p_vari} + +```abap +PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. +``` + +#### P_ZEBRA — parameter · L119-L119 {#decl-zfir0140-119-p_zebra} + +```abap +PARAMETERS: + P_ZEBRA AS CHECKBOX DEFAULT 'X'. +``` + +#### P_COLOPT — parameter · L120-L120 {#decl-zfir0140-120-p_colopt} + +```abap +PARAMETERS: + P_COLOPT AS CHECKBOX DEFAULT 'X'. +``` + +#### CHCKBOXH — parameter · L122-L122 {#decl-zfir0140-122-chckboxh} + +```abap +PARAMETERS: + CHCKBOXH RADIOBUTTON GROUP BOX. +``` + +#### CHCKBOXI — parameter · L123-L123 {#decl-zfir0140-123-chckboxi} + +```abap +PARAMETERS: + CHCKBOXI RADIOBUTTON GROUP BOX DEFAULT 'X'. +``` + +#### P_DETPOP — parameter · L124-L124 {#decl-zfir0140-124-p_detpop} + +```abap +PARAMETERS: + P_DETPOP AS CHECKBOX DEFAULT 'X'. +``` + +#### G_BOXNAM — data · L129-L129 {#decl-zfir0140-129-g_boxnam} + +```abap +DATA: G_BOXNAM TYPE SLIS_FIELDNAME VALUE 'BOX'. +``` + +#### P_F2CODE — data · L130-L130 {#decl-zfir0140-130-p_f2code} + +```abap +DATA: + P_F2CODE LIKE SY-UCOMM VALUE '&ETA'. +``` + +#### P_LIGNAM — data · L131-L131 {#decl-zfir0140-131-p_lignam} + +```abap +DATA: + P_LIGNAM TYPE SLIS_FIELDNAME VALUE 'LIGHTS'. +``` + +#### G_SAVE — data · L132-L132 {#decl-zfir0140-132-g_save} + +```abap +DATA: + G_SAVE(1) TYPE C. +``` + +#### G_TABNAME_HEADER — data · L133-L133 {#decl-zfir0140-133-g_tabname_header} + +```abap +DATA: + G_TABNAME_HEADER TYPE SLIS_TABNAME. +``` + +#### G_TABNAME_ITEM — data · L134-L134 {#decl-zfir0140-134-g_tabname_item} + +```abap +DATA: + G_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### G_DEFAULT — data · L135-L135 {#decl-zfir0140-135-g_default} + +```abap +DATA: + G_DEFAULT(1) TYPE C. +``` + +#### G_EXIT — data · L136-L136 {#decl-zfir0140-136-g_exit} + +```abap +DATA: + G_EXIT(1) TYPE C. +``` + +#### GX_VARIANT — data · L137-L137 {#decl-zfir0140-137-gx_variant} + +```abap +DATA: + GX_VARIANT LIKE DISVARIANT. +``` + +#### G_VARIANT — data · L138-L138 {#decl-zfir0140-138-g_variant} + +```abap +DATA: + G_VARIANT LIKE DISVARIANT. +``` + +#### LS_LINE — data · unit 로컬 · L1013-L1013 {#decl-zfir0140-1013-ls_line} + +```abap + DATA: LS_LINE TYPE SLIS_LISTHEADER. +``` + +#### CLEAR — data · unit 로컬 · L1878-L1878 {#decl-zfir0140-1878-clear} + +```abap + DATA : SIGN TYPE C, CLEAR TYPE C. +``` + +#### SIGN — data · unit 로컬 · L1878-L1878 {#decl-zfir0140-1878-sign} + +```abap + DATA : SIGN TYPE C, CLEAR TYPE C. +``` + +#### L_STATE_INSC — data · unit 로컬 · L2066-L2066 {#decl-zfir0140-2066-l_state_insc} + +```abap + DATA: L_STATE_INSC(4). +``` + +### `ZFIR0140TOP` (89건) + +#### BSEG — tables · L8-L8 {#decl-zfir0140top-8-bseg} + +```abap +TABLES: BSEG. " accounting document segment +``` + +#### BSID — tables · L9-L9 {#decl-zfir0140top-9-bsid} + +```abap +TABLES: + BSID. " secondary index for customers +``` + +#### BSEC — tables · L10-L10 {#decl-zfir0140top-10-bsec} + +```abap +TABLES: + BSEC. " One-time account data document +``` + +#### VBRK — tables · L12-L12 {#decl-zfir0140top-12-vbrk} + +```abap +TABLES: + VBRK. " billing : header data +``` + +#### BSET — tables · L13-L13 {#decl-zfir0140top-13-bset} + +```abap +TABLES: + BSET. " tax data document segment +``` + +#### T001 — tables · L14-L14 {#decl-zfir0140top-14-t001} + +```abap +TABLES: + T001. " company codes +``` + +#### KNA1 — tables · L15-L15 {#decl-zfir0140top-15-kna1} + +```abap +TABLES: + KNA1. " customers +``` + +#### FIMSG — tables · L16-L16 {#decl-zfir0140top-16-fimsg} + +```abap +TABLES: + FIMSG. " structure +``` + +#### BKPF — tables · L17-L17 {#decl-zfir0140top-17-bkpf} + +```abap +TABLES: + BKPF. " acc. document header +``` + +#### BSAD — tables · L18-L18 {#decl-zfir0140top-18-bsad} + +```abap +TABLES: + BSAD. " sec. index for customers : +``` + +#### SADR — tables · L21-L21 {#decl-zfir0140top-21-sadr} + +```abap +TABLES: + SADR. " address administration +``` + +#### T074U — tables · L22-L22 {#decl-zfir0140top-22-t074u} + +```abap +TABLES: + T074U. " Special G/L indicator properties +``` + +#### T003 — tables · L23-L23 {#decl-zfir0140top-23-t003} + +```abap +TABLES: + T003. " FI Document no range +``` + +#### VBKPF — tables · L24-L24 {#decl-zfir0140top-24-vbkpf} + +```abap +TABLES: + VBKPF. +``` + +#### VBSEGD — tables · L25-L25 {#decl-zfir0140top-25-vbsegd} + +```abap +TABLES: + VBSEGD. +``` + +#### VBSEGS — tables · L26-L26 {#decl-zfir0140top-26-vbsegs} + +```abap +TABLES: + VBSEGS. +``` + +#### ZDTI_SAPP — tables · L27-L27 {#decl-zfir0140top-27-zdti_sapp} + +```abap +TABLES: + ZDTI_SAPP. +``` + +#### ZDTI_STATUS — tables · L28-L28 {#decl-zfir0140top-28-zdti_status} + +```abap +TABLES: + ZDTI_STATUS. +``` + +#### DATE — data · L35-L35 {#decl-zfir0140top-35-date} + +```abap +DATA: DATE(12). +``` + +#### BUDATE — data · L36-L36 {#decl-zfir0140top-36-budate} + +```abap +DATA: BUDATE(12). +``` + +#### BLDATE — data · L37-L37 {#decl-zfir0140top-37-bldate} + +```abap +DATA: BLDATE(12). +``` + +#### ZFBDTE — data · L38-L38 {#decl-zfir0140top-38-zfbdte} + +```abap +DATA: ZFBDTE(12). +``` + +#### SAVE1_KUNNR — data · L39-L39 {#decl-zfir0140top-39-save1_kunnr} + +```abap +DATA: SAVE1_KUNNR LIKE BSID-KUNNR. +``` + +#### SAVE2_STCD — data · L40-L40 {#decl-zfir0140top-40-save2_stcd} + +```abap +DATA: SAVE2_STCD LIKE BSEC-STCD1. +``` + +#### LINE_COUNT_SD — data · L41-L41 {#decl-zfir0140top-41-line_count_sd} + +```abap +DATA: LINE_COUNT_SD TYPE I. "number of lines +``` + +#### LINE_COUNT_FI — data · L42-L42 {#decl-zfir0140top-42-line_count_fi} + +```abap +DATA: LINE_COUNT_FI TYPE I. "number of lines +``` + +#### LINE_COUNT2 — data · L43-L43 {#decl-zfir0140top-43-line_count2} + +```abap +DATA: LINE_COUNT2 TYPE I. "number of lines +``` + +#### LINE_COUNT — data · L44-L44 {#decl-zfir0140top-44-line_count} + +```abap +DATA: LINE_COUNT TYPE I. "number of lines +``` + +#### SD_SELECTION — data · L45-L45 {#decl-zfir0140top-45-sd_selection} + +```abap +DATA: SD_SELECTION. "check billing doc. +``` + +#### FI_SELECTION — data · L47-L47 {#decl-zfir0140top-47-fi_selection} + +```abap +DATA: FI_SELECTION. "check accounting doc. +``` + +#### SEL_INDEX — data · L50-L50 {#decl-zfir0140top-50-sel_index} + +```abap +DATA: SEL_INDEX TYPE I. +``` + +#### SAVE_BELNR — data · L51-L51 {#decl-zfir0140top-51-save_belnr} + +```abap +DATA: SAVE_BELNR LIKE BSID-BELNR. +``` + +#### SAVE_AWTYP — data · L52-L52 {#decl-zfir0140top-52-save_awtyp} + +```abap +DATA: SAVE_AWTYP LIKE BKPF-AWTYP. +``` + +#### SAVE_KUNNR — data · L53-L53 {#decl-zfir0140top-53-save_kunnr} + +```abap +DATA: SAVE_KUNNR LIKE BSID-KUNNR. +``` + +#### SAVE_BUPLA — data · L54-L54 {#decl-zfir0140top-54-save_bupla} + +```abap +DATA: SAVE_BUPLA LIKE BSID-BUPLA. +``` + +#### SAVE_UMSKZ — data · L55-L55 {#decl-zfir0140top-55-save_umskz} + +```abap +DATA: SAVE_UMSKZ LIKE BSEG-UMSKZ. +``` + +#### ERR_DEB — data · L56-L56 {#decl-zfir0140top-56-err_deb} + +```abap +DATA: ERR_DEB LIKE BSID-KUNNR. +``` + +#### SAVE_STCD — data · L57-L57 {#decl-zfir0140top-57-save_stcd} + +```abap +DATA: SAVE_STCD LIKE KNA1-STCD1. +``` + +#### CLEARING_DATA — data · L58-L58 {#decl-zfir0140top-58-clearing_data} + +```abap +DATA : CLEARING_DATA-SBUKRS LIKE BSID-BUKRS. +``` + +#### CLEARING_DATA — data · L59-L59 {#decl-zfir0140top-59-clearing_data} + +```abap +DATA : CLEARING_DATA-SGJAHR LIKE BSID-GJAHR. +``` + +#### CLEARING_DATA — data · L60-L60 {#decl-zfir0140top-60-clearing_data} + +```abap +DATA : CLEARING_DATA-LOW LIKE BSAD-AUGBL. +``` + +#### CLEARING_DATA — data · L61-L61 {#decl-zfir0140top-61-clearing_data} + +```abap +DATA : CLEARING_DATA-HIGH LIKE BSAD-AUGBL. +``` + +#### CZTERM — data · L62-L62 {#decl-zfir0140top-62-czterm} + +```abap +DATA: CZTERM LIKE VBRK-ZTERM. +``` + +#### CWAERS — data · L63-L63 {#decl-zfir0140top-63-cwaers} + +```abap +DATA: CWAERS LIKE T001-WAERS. +``` + +#### SIM — data · L65-L65 {#decl-zfir0140top-65-sim} + +```abap +DATA : SIM TYPE C. +``` + +#### AUSGLOP_ITAB — data · L74-L122 {#decl-zfir0140top-74-ausglop_itab} + +```abap +DATA : BEGIN OF AUSGLOP_ITAB OCCURS 0, + BUKRS LIKE BSID-BUKRS, "company code + KUNNR LIKE BSID-KUNNR, "customer number + STCD2 LIKE BSEC-STCD2, "CPD tax code2 + STCD1 LIKE BSEC-STCD1, "CPD tax code1 + NAME1 LIKE BSEC-NAME1, "CPD-customer name + ORT01 LIKE BSEC-ORT01, "CPD-customer city + GJAHR LIKE BSID-GJAHR, "business year + GSBER LIKE BSID-GSBER, "business area + BUPLA LIKE BSID-BUPLA, "business place + BLART LIKE BKPF-BLART, "acc. document type + BELNR LIKE BSID-BELNR, "acc. document number + AUGBL LIKE BSAD-AUGBL, "clearing document number + KOART LIKE BSEG-KOART, "account type + BUZEI LIKE BSEG-BUZEI, "item line in acc. document + BUDAT LIKE BSID-BUDAT, "posting document date + BLDAT LIKE BSID-BLDAT, "acc. document date + SHKZG LIKE BSID-SHKZG, "debit/credit indicator + BSCHL LIKE BSID-BSCHL, "posting key + AWTYP LIKE BKPF-AWTYP, "object type for + "calling application + AWKEY LIKE BKPF-AWKEY, "object key + DMBTR LIKE BSID-DMBTR, "amount in local curr + WRBTR LIKE BSID-WRBTR, "amount in document currency + HWBAS LIKE BSET-HWBAS, "tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + FWBAS LIKE BSET-FWBAS, "tax base amount in doc. curr + FWSTE LIKE BSET-FWSTE, "tax amount in doc. curr + WAERS LIKE T001-WAERS, "company code currency + HWAER LIKE T001-WAERS, "company code currency + MWSKZ LIKE BSET-MWSKZ, "tax code + UMSKZ LIKE BSID-UMSKZ, "special G/L indicator + HKONT LIKE BSID-HKONT, "reconc. acc. + FISTL LIKE BSID-FISTL, "special G/L indicator + ZTERM LIKE BSEG-ZTERM, "payment terms + ZFBDT LIKE BSEG-ZFBDT, "base line date + VBELN LIKE VBRK-VBELN, "billing document + FKDAT LIKE VBRK-FKDAT, "billing date + FKART LIKE VBRK-FKART, "billing type + FKTYP LIKE VBRK-FKTYP, "billing category + MSCHL LIKE BSEG-MSCHL, "dunning key + MANSP LIKE BSEG-MANSP, "dunning block + MADAT LIKE BSEG-MADAT, "last dunned on + MANST LIKE BSEG-MANST, "dunning level + MABER LIKE BSEG-MABER, "dunning area + XCPDK LIKE KNA1-XCPDK, "one time customers.. + SGTXT LIKE BSEG-SGTXT, + XMWST LIKE VBKPF-XMWST, "임시전표를 위한 추가 + END OF AUSGLOP_ITAB. +``` + +#### SEL_AUSGLOP_ITAB — data · L126-L173 {#decl-zfir0140top-126-sel_ausglop_itab} + +```abap +DATA: BEGIN OF SEL_AUSGLOP_ITAB OCCURS 0, + BUKRS LIKE BSID-BUKRS, "company code + KUNNR LIKE BSID-KUNNR, "customer number + XCPDK LIKE KNA1-XCPDK, "one time customer... + STCD LIKE BSEC-STCD1, "CPD tax code1 + NAME1 LIKE BSEC-NAME1, "CPD-customer name + ORT01 LIKE BSEC-ORT01, "CPD-customer city + GJAHR LIKE BSID-GJAHR, "business year + GSBER LIKE BSID-GSBER, "business area + BUPLA LIKE BSID-BUPLA, "business place + BLART LIKE BKPF-BLART, "acc. document type + BELNR LIKE BSID-BELNR, "acc. document number + AUGBL LIKE BSAD-AUGBL, "tax invoice number + AUGDT LIKE BSEG-AUGDT, "tax invoice date + BUZEI LIKE BSEG-BUZEI, "item line in acc. document + BUDAT LIKE BSID-BUDAT, "posting documnet date + BLDAT LIKE BSID-BLDAT, "acc. document date + SHKZG LIKE BSID-SHKZG, "debit/credit indicator + BSCHL LIKE BSID-BSCHL, "posting key + AWTYP LIKE BKPF-AWTYP, "object type for + "calling application + AWKEY LIKE BKPF-AWKEY, "object key + DMBTR LIKE BSID-DMBTR, "amount in document curr + WRBTR LIKE BSID-WRBTR, "amount in document currency + HWBAS LIKE BSET-HWBAS, "tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + FWBAS LIKE BSET-FWBAS, "tax base amount in doc. curr + FWSTE LIKE BSET-FWSTE, "tax amount in doc.curr + WAERS LIKE T001-WAERS, "document currency + HWAER LIKE T001-WAERS, "company code currency + MWSKZ LIKE BSET-MWSKZ, "tax code + UMSKZ LIKE BSID-UMSKZ, "special G/L indicator + ZTERM LIKE BSEG-ZTERM, "payment terms + ZFBDT LIKE BSEG-ZFBDT, "base line date + VBELN LIKE VBRK-VBELN, "billing document + FKDAT LIKE VBRK-FKDAT, "billing date + FKART LIKE VBRK-FKART, "billing type + FKTYP LIKE VBRK-FKTYP, "billing category + MSCHL LIKE BSEG-MSCHL, "dunning key + MANSP LIKE BSEG-MANSP, "dunning block + MADAT LIKE BSEG-MADAT, "last dunned on + MANST LIKE BSEG-MANST, "dunning level + MABER LIKE BSEG-MABER, "dunning area + HKONT LIKE BSEG-HKONT, + FISTL LIKE BSEG-FISTL, + SGTXT LIKE BSEG-SGTXT, + RESULT TYPE BAPIRETURN-CODE, "smartbill 추가 2006.07.24 + END OF SEL_AUSGLOP_ITAB. +``` + +#### P_AUSGLOP_ITAB — data · L176-L176 {#decl-zfir0140top-176-p_ausglop_itab} + +```abap +DATA : P_AUSGLOP_ITAB LIKE TABLE OF AUSGLOP_ITAB WITH HEADER LINE. +``` + +#### T_VBSEGS — data · L177-L177 {#decl-zfir0140top-177-t_vbsegs} + +```abap +DATA: + T_VBSEGS LIKE TABLE OF VBSEGS WITH HEADER LINE. +``` + +#### GV_KBETR — data · L180-L180 {#decl-zfir0140top-180-gv_kbetr} + +```abap +DATA : GV_KBETR LIKE KONP-KBETR. +``` + +#### RANGE_CANCEL — ranges · L183-L183 {#decl-zfir0140top-183-range_cancel} + +```abap +RANGES : RANGE_CANCEL FOR ZDTI_STATUS-ZSTAT. +``` + +#### ITABSAPP — data · L184-L198 {#decl-zfir0140top-184-itabsapp} + +```abap +DATA : BEGIN OF ITABSAPP OCCURS 0, + BUKRS TYPE ZDTI_SAPP-BUKRS, + ZETNO TYPE ZDTI_SAPP-ZETNO, + ZARAP TYPE ZDTI_SAPP-ZARAP, + BELNR TYPE ZDTI_SAPP-BELNR, + GJAHR TYPE ZDTI_SAPP-GJAHR, + REBELNR TYPE ZDTI_SAPP-REBELNR, + REGJAHR TYPE ZDTI_SAPP-REGJAHR, + EBELN TYPE ZDTI_SAPP-EBELN, + EBELP TYPE ZDTI_SAPP-EBELP, + MBLNR TYPE ZDTI_SAPP-MBLNR, + MJAHR TYPE ZDTI_SAPP-MJAHR, + VBELN TYPE ZDTI_SAPP-VBELN, + ZSTAT TYPE ZDTI_STATUS-ZSTAT, + END OF ITABSAPP. +``` + +#### CLEARING_ITAB1 — data · L203-L206 {#decl-zfir0140top-203-clearing_itab1} + +```abap +DATA : BEGIN OF CLEARING_ITAB1 OCCURS 0, + BELNR LIKE BSAD-BELNR, + AUGBL LIKE BSAD-AUGBL, + END OF CLEARING_ITAB1. +``` + +#### SELTAB — data · L211-L213 {#decl-zfir0140top-211-seltab} + +```abap +DATA: BEGIN OF SELTAB OCCURS 6. " internal table to transfer + INCLUDE STRUCTURE RSPARAMS. " select-options and paramete +DATA: END OF SELTAB. " between reports +``` + +#### CUST_TAB — data · L215-L215 {#decl-zfir0140top-215-cust_tab} + +```abap +DATA : CUST_TAB LIKE SEL_AUSGLOP_ITAB OCCURS 0 WITH HEADER LINE. +``` + +#### CUSTOMER_TAB — data · L217-L221 {#decl-zfir0140top-217-customer_tab} + +```abap +DATA: BEGIN OF CUSTOMER_TAB OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + STCD1 LIKE KNA1-STCD1, + STCD2 LIKE KNA1-STCD2, + END OF CUSTOMER_TAB. +``` + +#### YEAR — data · L224-L224 {#decl-zfir0140top-224-year} + +```abap +DATA : YEAR LIKE BKPF-GJAHR. "FI Period determination +``` + +#### NUMBER — data · L225-L225 {#decl-zfir0140top-225-number} + +```abap +DATA : NUMBER LIKE BSEG-AUGBL . "tax invoice number +``` + +#### CURR — data · L226-L226 {#decl-zfir0140top-226-curr} + +```abap +DATA : CURR LIKE T001-WAERS . "currency +``` + +#### PROG_NAME — data · L227-L227 {#decl-zfir0140top-227-prog_name} + +```abap +DATA : PROG_NAME LIKE SYST-CPROG. "program name for export +``` + +#### SLIS — type-pool · L232-L232 {#decl-zfir0140top-232-slis} + +```abap +TYPE-POOLS: SLIS. +``` + +#### GC_FORMNAME_TOP_OF_PAGE — constants · L243-L243 {#decl-zfir0140top-243-gc_formname_top_of_page} + +```abap +CONSTANTS: +GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. +``` + +#### GT_FIELDCAT — data · L246-L246 {#decl-zfir0140top-246-gt_fieldcat} + +```abap +DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GS_LAYOUT — data · L247-L247 {#decl-zfir0140top-247-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### GS_KEYINFO — data · L248-L248 {#decl-zfir0140top-248-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GT_SP_GROUP — data · L249-L249 {#decl-zfir0140top-249-gt_sp_group} + +```abap +DATA: + GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV. +``` + +#### GT_EVENTS — data · L250-L250 {#decl-zfir0140top-250-gt_events} + +```abap +DATA: + GT_EVENTS TYPE SLIS_T_EVENT. +``` + +#### G_USER_COMMAND — data · L251-L251 {#decl-zfir0140top-251-g_user_command} + +```abap +DATA: + G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### WA_COLORF — data · L255-L255 {#decl-zfir0140top-255-wa_colorf} + +```abap +DATA : WA_COLORF TYPE SLIS_SPECIALCOL_ALV. +``` + +#### INT_COLORF — data · L257-L257 {#decl-zfir0140top-257-int_colorf} + +```abap +DATA: INT_COLORF TYPE SLIS_T_SPECIALCOL_ALV. +``` + +#### GT_AUSGLOP — data · L259-L267 {#decl-zfir0140top-259-gt_ausglop} + +```abap +DATA: BEGIN OF GT_AUSGLOP OCCURS 0. "internal table + INCLUDE STRUCTURE AUSGLOP_ITAB."for fieldcatalog +DATA: BOX, + SIM(1), "simulation check + WERT(4) TYPE P, + LIGHTS, + COLORF TYPE SLIS_T_SPECIALCOL_ALV. "fieldcolor +"items +DATA: END OF GT_AUSGLOP. +``` + +#### GT_KUNDE — data · L269-L274 {#decl-zfir0140top-269-gt_kunde} + +```abap +DATA: BEGIN OF GT_KUNDE OCCURS 0. "internal table + INCLUDE STRUCTURE KNA1. "for fieldcatalog header +DATA: BOX, + LIGHTS, + STATE_INSC LIKE J_1BBRANCH-STATE_INSC. +DATA: END OF GT_KUNDE. +``` + +#### G_REPID — data · L276-L276 {#decl-zfir0140top-276-g_repid} + +```abap +DATA: G_REPID LIKE SY-REPID. +``` + +#### GT_LIST_TOP_OF_PAGE — data · L277-L277 {#decl-zfir0140top-277-gt_list_top_of_page} + +```abap +DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER. +``` + +#### G_STATUS — data · L278-L278 {#decl-zfir0140top-278-g_status} + +```abap +DATA: G_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD01'. +``` + +#### GS_STATUS — data · L279-L279 {#decl-zfir0140top-279-gs_status} + +```abap +DATA: GS_STATUS TYPE SLIS_STATUS. +``` + +#### CODE — types · L281-L286 {#decl-zfir0140top-281-code} + +```abap +TYPES : BEGIN OF CODE, + SIGN LIKE RSDSSELOPT-SIGN, + OPTION LIKE RSDSSELOPT-OPTION, + LOW LIKE RSDSSELOPT-LOW, + HIGH LIKE RSDSSELOPT-HIGH, + END OF CODE. +``` + +#### TAX_CODE — data · L288-L288 {#decl-zfir0140top-288-tax_code} + +```abap +DATA : TAX_CODE TYPE CODE OCCURS 0 WITH HEADER LINE. +``` + +#### BLART — data · L289-L289 {#decl-zfir0140top-289-blart} + +```abap +DATA: + BLART TYPE CODE OCCURS 0 WITH HEADER LINE. +``` + +#### BUPLA — data · L290-L290 {#decl-zfir0140top-290-bupla} + +```abap +DATA: + BUPLA TYPE CODE OCCURS 0 WITH HEADER LINE. +``` + +#### BUKRS — data · L291-L291 {#decl-zfir0140top-291-bukrs} + +```abap +DATA: + BUKRS TYPE CODE OCCURS 0 WITH HEADER LINE. +``` + +#### STBLG — data · L295-L295 {#decl-zfir0140top-295-stblg} + +```abap +DATA : STBLG LIKE RBKP-STBLG. +``` + +#### IT_FCODE — data · L296-L296 {#decl-zfir0140top-296-it_fcode} + +```abap +DATA : IT_FCODE LIKE RSMPE-FUNC OCCURS 0 WITH HEADER LINE. +``` + +#### IT_T007S — data · L299-L302 {#decl-zfir0140top-299-it_t007s} + +```abap +DATA : BEGIN OF IT_T007S OCCURS 0, + MWSKZ LIKE T007S-MWSKZ, + TEXT1 LIKE T007S-TEXT1, + END OF IT_T007S. +``` + +#### T_HELPFIELD — data · L304-L306 {#decl-zfir0140top-304-t_helpfield} + +```abap +DATA : BEGIN OF T_HELPFIELD OCCURS 0. + INCLUDE STRUCTURE HELP_VALUE. +DATA : END OF T_HELPFIELD. +``` + +#### T_HELPVTAB — data · L308-L310 {#decl-zfir0140top-308-t_helpvtab} + +```abap +DATA : BEGIN OF T_HELPVTAB OCCURS 0. + INCLUDE STRUCTURE HELP_VTAB. +DATA : END OF T_HELPVTAB. +``` + +#### T_HELPVALUE — data · L312-L314 {#decl-zfir0140top-312-t_helpvalue} + +```abap +DATA : BEGIN OF T_HELPVALUE OCCURS 0, + VALUE LIKE HELP_VTAB-VALUE, + END OF T_HELPVALUE. +``` + +#### T_DYNPREAD — data · L316-L318 {#decl-zfir0140top-316-t_dynpread} + +```abap +DATA : BEGIN OF T_DYNPREAD OCCURS 0. + INCLUDE STRUCTURE DYNPREAD. +DATA : END OF T_DYNPREAD. +``` + +#### W_CURSORLOC — data · L320-L320 {#decl-zfir0140top-320-w_cursorloc} + +```abap +DATA : W_CURSORLOC LIKE SY-TABIX. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| AT SELECTION-SCREEN OUTPUT | EVENT | ZFIR0140 L145-166 | 0 | 선택화면 PBO 에서 회사코드·회계연도 범위의 HIGH 필드와 다중선택 버튼을 숨겨 단일 값 입력만 허용하는 화면 속성 플러밍 이벤트이다. | +| INITIALIZATION | EVENT | ZFIR0140 L167-218 | 1 | INITIALIZATION 에서 계층 ALV 의 헤더/아이템 테이블명과 키정보(KUNNR/BELNR)를 정의하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 기본 변형을 P_VARI 에 제안한다. | +| AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZFIR0140 L219-232 | 0 | ALV 변형 파라미터 P_VARI 의 F4 요청 시 F4_FOR_VARIANT 를 호출하는 선택화면 이벤트이다(세금코드 F4 는 주석 처리). | +| AT SELECTION-SCREEN | EVENT | ZFIR0140 L233-235 | 0 | AT SELECTION-SCREEN 에서 PAI_OF_SELECTION_SCREEN 을 호출해 ALV 변형을 검증하는 이벤트이다. | +| AT SELECTION-SCREEN ON DD_BUKRS | EVENT | ZFIR0140 L236-238 | 0 | 회사코드 입력 시 CHECK_BUKRS 로 필수 입력을 검증하는 선택화면 이벤트이다. | +| AT SELECTION-SCREEN ON SBLART | EVENT | ZFIR0140 L239-316 | 2 | 전표유형 입력 시 유효성을 검증하고 세금코드·전표유형·사업장·회사코드 선택값을 KR_USER_EXIT_TAX_CODE 에 넘긴 뒤 SD/FI 선택 조건 입력 여부로 SD_SELECTION/FI_SELECTION 플래그를 결정한다. | +| START-OF-SELECTION | EVENT | ZFIR0140 L317-327 | 1 | START-OF-SELECTION 에서 회사코드의 현지통화(T001-WAERS)를 CURR 에 읽어 이후 논리DB 처리에 사용한다. | +| GET BSID | EVENT | ZFIR0140 L328-353 | 1 | 논리DB GET BSID 이벤트에서 사업영역·세금코드·미반제 조건을 통과한 미결 매출채권 항목의 키 필드를 발행 후보 AUSGLOP_ITAB 에 채운다. | +| GET BKPF | EVENT | ZFIR0140 L354-471 | 2 | 논리DB GET BKPF 이벤트에서 전표 헤더를 검증(헤더텍스트·역분개·비망·전표유형·FB05 제외)하고 SD 청구(VBRK)·MM 송장(RBKP) 참조 정보를 보강해 발행 후보 항목을 준비한다. | +| GET BSEG | EVENT | ZFIR0140 L472-484 | 1 | 논리DB GET BSEG 이벤트에서 고객 라인(KOART='D')의 세금코드가 선택범위에 있을 때 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다. | +| END-OF-SELECTION | EVENT | ZFIR0140 L485-538 | 2 | END-OF-SELECTION 에서 반제 항목 선별, 전자세금계산서 발행 여부 확인, 세금·고객주소 보강, 한국 반올림 User-Exit 호출 후 계층 ALV 를 출력하는 메인 흐름을 수행한다. | +| STANDARD01 | FORM | ZFIR0140 L539-565 | 0 | ALV PF-STATUS STANDARD01 을 설정하는 FORM 으로, 사용자별 인쇄 제어 로직은 주석 처리되어 있다. | +| E01_FIELDCAT_INIT | FORM | ZFIR0140 L574-935 | 0 | REUSE_ALV_FIELDCATALOG_MERGE 로 고객 헤더(KNA1)와 아이템(AUSGLOP_ITAB) 필드카탈로그를 생성하고 비키 필드를 숨김 처리하는 ALV 필드카탈로그 초기화 FORM 이다(1/2 창). | +| E02_DATA_ADD | FORM | ZFIR0140 L942-980 | 2 | ALV 출력 전 아이템(GT_AUSGLOP)의 체크박스를 초기화하고 선수금(특별G/L) 건의 공급가액·세액을 양수로 바꾸며 고객 헤더(GT_KUNDE)의 신호등 값을 설정한다. | +| E03_EVENTTAB_BUILD | FORM | ZFIR0140 L989-1003 | 0 | REUSE_ALV_EVENTS_GET 으로 ALV 이벤트 목록을 받아 TOP_OF_PAGE 콜백 FORM 을 등록하는 ALV 플러밍 FORM 이다. | +| E04_COMMENT_BUILD | FORM | ZFIR0140 L1012-1049 | 1 | ALV TOP-OF-PAGE 헤더에 발행 방식(합산/개별), 회사코드, 세금계산서 작성일자를 표시하는 리스트 헤더를 구성한다. | +| E05_LAYOUT_BUILD | FORM | ZFIR0140 L1058-1075 | 0 | 계층 ALV(REUSE_ALV_HIERSEQ_LIST_DISPLAY)의 레이아웃(체크박스 필드, 헤더/아이템 텍스트, 색상 필드 COLORF)을 설정하는 ALV 플러밍 FORM 이다. | +| E07_SP_GROUP_BUILD | FORM | ZFIR0140 L1084-1091 | 0 | ALV 특수 그룹(SP_GROUP 'A') 하나를 등록하는 ALV 플러밍 FORM 이다. | +| SELECTION | FORM | ZFIR0140 L1098-1135 | 2 | 발행 후보(AUSGLOP_ITAB)에서 차변 부호를 조정하고 선수금 요청(T074U 비망항목)을 제외하며 FI/SD 선택 옵션에 따라 ALV 아이템(GT_AUSGLOP)과 고객 헤더(GT_KUNDE)를 확정한다. | +| TOP_OF_PAGE | FORM | ZFIR0140 L1142-1147 | 0 | ALV TOP_OF_PAGE 이벤트에서 REUSE_ALV_COMMENTARY_WRITE 로 상단 코멘트를 출력하는 플러밍 FORM 이다. | +| USER_COMMAND | FORM | ZFIR0140 L1158-1557 | 11 | ALV 사용자 명령 처리 FORM 의 시작부(1/3 창)로 로컬 변수 선언과 시뮬레이션 플래그 초기화만 있다. | +| F4_FOR_VARIANT | FORM | ZFIR0140 L1564-1586 | 0 | REUSE_ALV_VARIANT_F4 로 ALV 변형 검색도움을 띄우고 선택한 변형을 P_VARI 에 넣는 F4 플러밍 FORM 이다. | +| PAI_OF_SELECTION_SCREEN | FORM | ZFIR0140 L1593-1608 | 0 | 선택화면 PAI 에서 입력된 ALV 변형(P_VARI)의 존재를 REUSE_ALV_VARIANT_EXISTENCE 로 확인하거나 기본 변형을 초기화하는 ALV 변형 플러밍 FORM 이다. | +| VARIANT_INIT | FORM | ZFIR0140 L1618-1622 | 0 | ALV 변형 구조(G_VARIANT)를 초기화하고 리포트 ID 를 설정하는 플러밍 FORM 이다. | +| STATUS_2000 OUTPUT | MODULE | ZFIR0140 L1629-1634 | 0 | 화면 2000 PBO 에서 GUI 상태 PROTOK1 과 타이틀바를 설정하는 플러밍 MODULE 이다. | +| PROT OUTPUT | MODULE | ZFIR0140 L1643-1652 | 0 | 화면 PBO 에서 대화를 억제하고 리스트 처리로 전환하는 플러밍 MODULE 이다. | +| CHECK_BUKRS | FORM | ZFIR0140 L1661-1667 | 1 | 회사코드(DD_BUKRS-LOW)가 비어 있으면 오류 메시지 E501 을 내는 필수 입력 검증 FORM 이다. | +| GET_TAXINVOICE_YEAR | FORM | ZFIR0140 L1676-1708 | 1 | 선택 항목의 전기일(BUDAT)과 회사코드로 FI_PERIOD_DETERMINE 을 호출해 세금계산서 채번에 쓸 회계연도(YEAR)를 구한다. | +| GET_TAX_INVOICE_NUMBER | FORM | ZFIR0140 L1717-1748 | 1 | 전표유형 번호범위(T003-NUMKR)와 회사코드·회계연도로 NUMBER_GET_NEXT(RF_BELEG)를 호출해 세금계산서 번호(NUMBER)를 채번한다. | +| COLLECTIVE_INVOICES | FORM | ZFIR0140 L1757-1812 | 3 | 합산 세금계산서 방식으로 고객(KUNNR)·사업장(BUPLA) 단위(CPD 고객은 전표 단위)로 세금계산서 번호를 채번해 선택 항목(SEL_AUSGLOP_ITAB-AUGBL)에 부여한다. | +| INDIVIDUAL_INVOICES | FORM | ZFIR0140 L1821-1867 | 1 | 개별 세금계산서 방식으로 선택된 전표마다 NUMBER_GET_NEXT(RF_BELEG)로 세금계산서 번호를 채번해 SEL_AUSGLOP_ITAB-AUGBL 에 부여한다(시뮬레이션이면 순번). | +| GET_TAX_DATA | FORM | ZFIR0140 L1876-2054 | 1 | 세금계산서 발행 대상 항목에 BSET 세금 데이터를 합산하고 부호를 맞춘 뒤 고객 목록을 만든다. | +| GET_CUSTOMER_ADDRESS | FORM | ZFIR0140 L2063-2114 | 3 | 고객 마스터(KNA1)에서 사업자번호와 주소를 읽어 고객 헤더(GT_KUNDE)와 발행 항목에 보강하고, 일회성(CPD) 고객은 전표의 BSEC 주소 데이터를 사용하며 종사업장번호(J_1BBRANCH)를 붙인다. | +| CHECK_DOC_TYPE | FORM | ZFIR0140 L2123-2130 | 1 | 세금계산서 전표유형(SBLART)이 T003 에 존재하고 번호범위(NUMKR)가 지정되어 있는지 검증해 없으면 E098 오류를 낸다. | +| EXECLUDING_FCODE | FORM | ZFIR0140 L2138-2145 | 0 | GUI 상태에서 제외할 기능코드(P_POST)를 IT_FCODE 에 담는 단순 유틸리티 FORM 이다. | +| POSSIBLE_ENTRY | FORM | ZFIR0140 L2154-2200 | 1 | 매출 세금계산서용 세금코드(A1~A8)와 한글 설명을 하드코딩으로 구성해 세금코드 F4 도움말(VALUE_HELP)을 표시한다. | +| FIELD_REFRESH | FORM | ZFIR0140 L2209-2220 | 0 | F4 팝업에서 선택한 세금코드를 선택화면 필드에 반영(DYNP_VALUES_UPDATE)하고 도움말 작업 테이블을 초기화하는 플러밍 FORM 이다. | +| VALUE_HELP | FORM | ZFIR0140 L2229-2242 | 0 | HELP_VALUES_GET_WITH_TABLE_EXT 로 세금코드 값 도움말 팝업을 띄우고 선택 인덱스를 받는 F4 도우미 FORM 이다. | +| VALUE_UPDATE | FORM | ZFIR0140 L2251-2260 | 0 | DYNP_VALUES_UPDATE 로 선택화면 필드 값을 갱신하는 F4 결과 반영 유틸리티 FORM 이다. | +| CHECK_MWSKZ | FORM | ZFIR0140 L2269-2290 | 1 | 세금코드 선택조건(SMWSKZ)이 비어 있으면 매출 세금계산서 대상 세금코드(A1,A2,A4,A6,A7,A8)를 기본값으로 채운다. | +| CLEAR_ITEM_SELECTION | FORM | ZFIR0140 L2299-2389 | 4 | 반제된 매출채권(BSAD)을 선택조건으로 읽어 역분개·비망·FB05 반제 전표를 제외하고 SD 청구(VBRK)·MM 송장(RBKP) 취소 여부와 세금코드를 확인해 세금계산서 발행 후보(AUSGLOP_ITAB)를 만든다. | +| BUILD_UP_ALV_LAYOUT | FORM | ZFIR0140 L2399-2445 | 1 | 필드카탈로그·이벤트·헤더·특수그룹을 구성하고 SELECTION 으로 대상을 확정한 뒤 REUSE_ALV_HIERSEQ_LIST_DISPLAY 로 고객(GT_KUNDE)-전표(GT_AUSGLOP) 계층 ALV 를 출력한다. | +| GET_SALES_TAX_SGTXT | FORM | ZFIR0140 L2454-2474 | 1 | 발행 대상 각 전표의 매출부가세 라인(BSEG MWART='A')의 품목텍스트(SGTXT)를 읽어 AUSGLOP_ITAB 에 보강한다. | +| PARK_DOCUMENT_SELECTION | FORM | ZFIR0140 L2483-2567 | 3 | 임시저장(Parked) 매출전표(VBKPF/VBSEGD/VBSEGS)를 읽어 고객·세금코드·공급가액·세액을 계산하고 세금계산서 발행 대상(AUSGLOP_ITAB)으로 적재한다. | +| DTI_CHECK | FORM | ZFIR0140 L2576-2628 | 2 | 전자세금계산서 상태 테이블(ZDTI_SAPP/ZDTI_STATUS)을 조회해 이미 발행(취소·거부 상태 제외)된 전표를 발행 대상(AUSGLOP_ITAB)에서 제거한다. | diff --git a/wiki/programs/ZFIR0141.md b/wiki/programs/ZFIR0141.md new file mode 100644 index 0000000..c9c018f --- /dev/null +++ b/wiki/programs/ZFIR0141.md @@ -0,0 +1,7807 @@ +--- +type: abap-program +title: "ZFIR0141" +description: "ZFIR0140 이 선별한 매출 세금계산서를 실제로 출력(SAPscript)하고 전자세금계산서 중계사(스마트빌)로 전송하는 프로그램이다. 세금계산서 양식에 품목·금액·합계·공란수를 채워 WRITE/SAPscript 로 인쇄하고, 재발행(REPRINT)과 전자 전송(SMARTBILL_TRANS, 316줄)을 함께 처리한다. 27본 중 가장 크고(6,376줄) 출력 서식 로직이 집중된 프로그램이다." +resource: "abap://ZFIR0141" +tags: ["세금계산서", "전자세금계산서", "매출", "부가세", "출력", "인터페이스", "FI", "공급가액", "세액", "매출부가세", "영세율", "특소세", "반품", "부호반전", "세금코드", "사용자 명령", "ALV 변경 검증", "화면 종료", "PAI", "공란수"] +generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:22+00:00" } +status: stable +x-package: +x-changed-on: +x-tables-read: ["ADR6", "ADRC", "BKPF", "BSEC", "BSEG", "BSET", "J_1BBRANCH", "KNA1", "T001", "T001F", "T074T", "VBRK", "VBRP", "ZDTI_CONFIG", "ZDTI_LAYOUT"] +x-tables-write: ["ALL_ITEMS_ITAB", "AUSGLOP_ITAB", "AUSGLOP_ITAB2", "AUSGLOP_MAT_ITAB", "BKPF", "BSEG", "BSET", "CHECK_ITAB", "LINE", "MATZEIL4_ITAB", "SEL_AUSGLOP_ITAB"] +x-calls: ["CLOSE_FORM", "CONVERT_TO_LOCAL_CURRENCY", "END_FORM", "FB03", "GET_BUPLA_ADDRESS", "GET_PRINT_PARAMETERS", "KR_USER_EXIT_CANCEL_TAXINVOICE", "KR_USER_EXIT_COPY_TAXINVOICE", "KR_USER_EXIT_LIST_TAXINVOICE", "KR_USER_EXIT_ROUNDOFF", "LAST_DAY_OF_MONTHS", "NUMERIC_CHECK", "OPEN_FORM", "START_FORM", "STRING_SPLIT", "WRITE_FORM", "Z_FI_COMMA_DEL", "Z_SB_DTI_ISSUE", "Z_SB_RETURN_MESSAGE"] +x-code-hash: "c00e842f51b6a0fd80c608908fe26e6c41172772cc4801035199a91ec41c97b3" +x-unit-count: 85 +x-chunk-count: 144 +x-declaration-count: 168 +--- + +## 업무 목적 + +ZFIR0140 이 선별한 매출 세금계산서를 실제로 출력(SAPscript)하고 전자세금계산서 중계사(스마트빌)로 전송하는 프로그램이다. 세금계산서 양식에 품목·금액·합계·공란수를 채워 WRITE/SAPscript 로 인쇄하고, 재발행(REPRINT)과 전자 전송(SMARTBILL_TRANS, 316줄)을 함께 처리한다. 27본 중 가장 크고(6,376줄) 출력 서식 로직이 집중된 프로그램이다. + +## 주 흐름 + +1. 출력 양식(레이아웃 세트)을 결정한다 (GET_LAYOUT) +2. 대상 세금계산서와 세금·거래처 정보를 채운다 (FILL_TABLES → GET_TAXES → GET_BUPLA → GET_ADDRESS) +3. 출력 옵션(영수/청구, 일반/세금계산서, 출력매체)을 검증한다 (CHECK_OPTION → CHECK_RECEIPT / CHECK_BILLING) +4. 고객 유형별로 양식을 분기해 항목·금액·합계를 Write 한다 (KIND_OF_CUSTOMERS → WRITE_PART1-1/1-2 → PRINT_ITEM_* → PRINT_SUM_LINE) +5. SAPscript 로 세금계산서를 출력한다 (SAP_SCRIPT, 373줄 / OPEN_FORM → WRITE_FORM → CLOSE_FORM) +6. 전자세금계산서는 스마트빌 전송 데이터를 만들어 전송한다 (SMARTBILL_TRANS → MAKE_ZSB_HEADER / MAKE_ZSB_ITEM / MAKE_ZSB_PAYMENT → TRANSMIT_DTI_TO_SB) +7. 전송 결과 코드를 저장하고 오류는 화면에 표시한다 (SAVE_RETURN_CODE_TO_AUSGLOP → DISPLAY_ERROR_MSG) +8. 재발행 요청은 별도 경로로 처리한다 (REPRINT, 236줄) + +## 핵심 내부테이블 + +- `AUSGLOP_ITAB` — 출력 대상 세금계산서 항목 (채움: FILL_TABLES / 소비: PRINT_INVOICES, SMARTBILL_TRANS) +- `SEL_AUSGLOP_ITAB` — 사용자가 선택한 발행 대상 (채움: SET_SELECTION, SEL_DOCUMENT / 소비: UPDATE_TABLE, SAVE_RETURN_CODE_TO_AUSGLOP) + +## 테이블 / 외부 호출 + +- read: ADR6, ADRC, BKPF, BSEC, BSEG, BSET, J_1BBRANCH, KNA1, T001, T001F, T074T, VBRK, VBRP, ZDTI_CONFIG, ZDTI_LAYOUT +- write: ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUSGLOP_ITAB2, AUSGLOP_MAT_ITAB, BKPF, BSEG, BSET, CHECK_ITAB, LINE, MATZEIL4_ITAB, SEL_AUSGLOP_ITAB +- 외부 호출: CLOSE_FORM, CONVERT_TO_LOCAL_CURRENCY, END_FORM, FB03, GET_BUPLA_ADDRESS, GET_PRINT_PARAMETERS, KR_USER_EXIT_CANCEL_TAXINVOICE, KR_USER_EXIT_COPY_TAXINVOICE, KR_USER_EXIT_LIST_TAXINVOICE, KR_USER_EXIT_ROUNDOFF, LAST_DAY_OF_MONTHS, NUMERIC_CHECK, OPEN_FORM, START_FORM, STRING_SPLIT, WRITE_FORM, Z_FI_COMMA_DEL, Z_SB_DTI_ISSUE, Z_SB_RETURN_MESSAGE + +## 로직 조각 (144건 / unit 75개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT AT SELECTION-SCREEN — `ZFIR0141` L712-L742 (31줄) + +*선택화면 검증으로 SAPscript 재발행이면 양식(GET_LAYOUT)을 결정하고 전체 리스트와 추가 시트 옵션을 함께 선택하면 E353 오류를 낸다.* + +> 이 unit 의 조각 1개가 9/31줄(29%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] SAPscript 출력(SAP)과 재발행(REPRINT)이 선택되면 GET_LAYOUT 으로 T001F 양식을 결정하고, 전체 리스트(FULLLIST)와 추가 시트(CHK_PRAD) 조합은 허용하지 않아 E353 메시지를 낸다. + +```abap + 714| IF SAP = 'X' AND REPRINT = 'X'. + 715| + 716| PERFORM GET_LAYOUT. + 717| + 718| ENDIF. + 719| + 720| IF FULLLIST = 'X' AND CHK_PRAD = 'X'. + 721| MESSAGE E353. + 722| ENDIF. +``` + +- **EN**: On the selection screen, determine the SAPscript form for reprint via GET_LAYOUT and reject the combination of full list with additional sheet with message E353. +- 호출(파서): GET_LAYOUT +- 업무 키워드: 선택화면 검증, 양식 결정, 출력 옵션 조합, 오류 E353 +- English: Selection Screen, Validation, SAPscript Form, Output Option +- 정의부(복사 시 함께 필요): [`SAP`](#decl-zfir0141-665-sap), [`REPRINT`](#decl-zfir0141-485-reprint), [`FULLLIST`](#decl-zfir0141-667-fulllist), [`CHK_PRAD`](#decl-zfir0141-682-chk_prad) +- 위치: `abap://ZFIR0141/ZFIR0141#L714-L722` · confidence 0.85 · `ZFIR0141#ZFIR0141#EVENT#AT_SELECTION-SCREEN#C1` + +### FORM GET_LAYOUT — `ZFIR0141` L1447-L1493 (47줄) + +*회사코드 T001 을 읽고 양식 종류(STA1 일반/세금계산서)·인쇄 옵션(CHK_PRTI)에 따라 T001F 에서 SAPscript 양식명(FORNR)을 결정하며 없으면 E202 오류를 낸다.* + +> 이 unit 의 조각 1개가 42/47줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] T001 로 회사코드 정보를 읽고 STA1='X' 이면 세금계산서 인쇄(CHK_PRTI)는 EVENT 없는 T001F, 추가 시트는 EVENT='AS', 그 외는 EVENT='TF' 조건으로 회사코드별 → 공통(BUKRS 공백) 순으로 T001F 를 조회해 양식명 FORM 을 세팅하고 미존재 시 E202 메시지를 낸다. + +```abap + 1449| SELECT SINGLE * FROM T001 WHERE BUKRS = SBUKRS. + 1450| + 1451| IF STA1 = 'X'. + 1452| IF CHK_PRTI = 'X'. + 1453| SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS + 1454| AND PROGRAMM = SY-CPROG. + 1455| IF SY-SUBRC <> 0. + 1456| SELECT SINGLE * FROM T001F WHERE BUKRS = ' ' + 1457| AND PROGRAMM = SY-CPROG. + 1458| IF SY-SUBRC <> 0. + 1459| MESSAGE E202. + 1460| ENDIF. + 1461| ENDIF. + 1462| ELSE. + 1463| SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS + 1464| AND PROGRAMM = SY-CPROG + 1465| AND EVENT = 'AS'. + 1466| IF SY-SUBRC <> 0. + 1467| SELECT SINGLE * FROM T001F WHERE BUKRS = ' ' + 1468| AND PROGRAMM = SY-CPROG + 1469| AND EVENT = 'AS'. + 1470| IF SY-SUBRC <> 0. + 1471| MESSAGE E202. + 1472| ENDIF. + 1473| ENDIF. + 1474| ENDIF. + 1475| FORM = T001F-FORNR. "note 0318410 + 1476| ELSE. + 1477| SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS + 1478| AND PROGRAMM = SY-CPROG + 1479| AND EVENT = 'TF'. + 1480| IF SY-SUBRC <> 0. + 1481| SELECT SINGLE * FROM T001F WHERE BUKRS = ' ' + 1482| AND PROGRAMM = SY-CPROG + 1483| AND EVENT = 'TF'. + 1484| IF SY-SUBRC <> 0. + 1485| MESSAGE E202. + 1486| ENDIF. + 1487| ENDIF. + 1488| + 1489| FORM = T001F-FORNR. + 1490| ENDIF. +``` + +- **EN**: Read T001 and determine the SAPscript form name from T001F by program and event (none/AS/TF) with fallback to the cross-company entry; raise E202 if no form is configured. +- 테이블(파서): read [T001](/tables/T001.md), [T001F](/tables/T001F.md) / write - +- SAP 객체: T001, T001F +- 업무 키워드: 양식 결정, SAPscript 양식, 회사코드 양식 설정, 추가 시트, 오류 E202 +- English: SAPscript Form, T001F, Form Determination, Company Code +- 정의부(복사 시 함께 필요): [`T001`](#decl-zfir0141-40-t001), [`SBUKRS`](#decl-zfir0141-629-sbukrs), [`STA1`](#decl-zfir0141-655-sta1), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`T001F`](#decl-zfir0141-48-t001f), [`FORM`](#decl-zfir0141-98-form) +- 위치: `abap://ZFIR0141/ZFIR0141#L1449-L1490` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_LAYOUT#C1` + +### EVENT START-OF-SELECTION — `ZFIR0141` L773-L801 (29줄) + +*호출 프로그램(ZFIR0140/YFIR0601)이 ABAP 메모리로 넘긴 선택 세금계산서·프로그램명·시뮬레이션·통합발행·발행일을 IMPORT 한 뒤 단독 실행이면 목록 표시, 호출 실행이면 재발행·테이블 갱신·User Exit 를 수행한다.* + +> 이 unit 의 조각 2개가 21/29줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 메모리 ID 'TI'(선택 세금계산서), 'KRPROG'(호출 프로그램명), 'KRSIM'(시뮬레이션), 'SN1OP'(통합 세금계산서), 'SBLDAT'(발행일)를 IMPORT 하고 메모리를 해제하여 호출 프로그램과의 파라미터를 받는다. + +```abap + 777| IMPORT SEL_AUSGLOP_ITAB[] FROM MEMORY ID 'TI'. + 778| IMPORT PROG_NAME FROM MEMORY ID 'KRPROG'. + 779| IMPORT SIM FROM MEMORY ID 'KRSIM'. + 780| IMPORT SN1OP FROM MEMORY ID 'SN1OP'. + 781| IMPORT SBLDAT FROM MEMORY ID 'SBLDAT'. + 782| FREE MEMORY ID 'TI'. + 783| FREE MEMORY ID 'KRPROG'. + 784| FREE MEMORY ID 'KRSIM'. + 785| FREE MEMORY ID 'SN1OP'. + 786| FREE MEMORY ID 'SBLDAT'. +``` + +- **EN**: Import the selected tax invoices, calling program name, simulation flag, consolidated invoice option and issue date from ABAP memory IDs and free them. +- 업무 키워드: ABAP 메모리, 호출 프로그램 연계, 선택 세금계산서, 시뮬레이션, 발행일 +- English: ABAP Memory, IMPORT, Calling Program, Simulation +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0141-408-sel_ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SIM`](#decl-zfir0141-130-sim), [`SN1OP`](#decl-zfir0141-143-sn1op), [`SBLDAT`](#decl-zfir0141-638-sbldat) +- 위치: `abap://ZFIR0141/ZFIR0141#L777-L786` · confidence 0.9 · `ZFIR0141#ZFIR0141#EVENT#START-OF-SELECTION#C1` + +#### [control_flow] 호출 프로그램명이 없으면(단독 실행) DISPLAY_TAX_INVOICE 로 발행 목록을 표시하고, YFIR0601 등에서 호출되면 REPRINT 로 출력/전송하고 UPDATE_TABLE·USER_EXIT2 로 전표에 세금계산서 정보를 반영한다. + +```abap + 789| IF PROG_NAME = ' ' . + 790| PERFORM DISPLAY_TAX_INVOICE. + 791| + 792| * YFIR0601에서 호출되어 실행 될 경우 ----------------------------------- + 793| ELSE. + 794| PERFORM REPRINT. + 795| PERFORM UPDATE_TABLE. + 796| PERFORM USER_EXIT2. + 797| + 798| + 799| ENDIF. +``` + +- **EN**: Branch on standalone execution (display tax invoice list) versus called execution (REPRINT, UPDATE_TABLE and USER_EXIT2). +- 호출(파서): DISPLAY_TAX_INVOICE, REPRINT, UPDATE_TABLE, USER_EXIT2 +- 업무 키워드: 단독 실행, 호출 실행, 재발행, 전표 갱신 +- English: Standalone, Reprint, Update Table, User Exit +- 정의부(복사 시 함께 필요): [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`REPRINT`](#decl-zfir0141-485-reprint) +- 위치: `abap://ZFIR0141/ZFIR0141#L789-L799` · confidence 0.85 · `ZFIR0141#ZFIR0141#EVENT#START-OF-SELECTION#C2` + +### FORM DISPLAY_TAX_INVOICE — `ZFIR0141` L4029-L4051 (23줄) + +*출력 옵션을 검증한 뒤 재발행이면 반올림 User Exit KR_USER_EXIT_ROUNDOFF 를 적용하고 대상이 없으면 메시지 I500 을 표시하며 세금계산서 리스트를 표시한다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] CHECK_OPTION 으로 출력 옵션을 검증하고 재발행(REPRINT='X')이면 FM KR_USER_EXIT_ROUNDOFF 로 AUSGLOP_ITAB 금액을 고객사 반올림 규칙으로 보정하며, 대상 건이 없으면 I500 메시지 후 종료하고 있으면 DISPLAY_LIST 로 목록을 표시한다. + +```abap + 4032| PERFORM CHECK_OPTION. + 4033| + 4034| IF REPRINT = 'X'. + 4035| CALL FUNCTION 'KR_USER_EXIT_ROUNDOFF' + 4036| EXPORTING + 4037| YSTA1 = STA1 + 4038| YPROG_NAME = SY-CPROG + 4039| TABLES + 4040| YAUSGLOP_ITAB = AUSGLOP_ITAB. + 4041| ENDIF. + 4042| + 4043| DESCRIBE TABLE AUSGLOP_ITAB LINES SY-TFILL. + 4044| IF SY-TFILL = 0. + 4045| MESSAGE I500. + 4046| EXIT. + 4047| ENDIF. + 4048| + 4049| PERFORM DISPLAY_LIST. +``` + +- **EN**: Validate output options, apply the rounding user exit KR_USER_EXIT_ROUNDOFF for reprints, show message I500 when no rows exist, otherwise display the tax invoice list. +- 호출(파서): CHECK_OPTION, KR_USER_EXIT_ROUNDOFF, DISPLAY_LIST +- SAP 객체: KR_USER_EXIT_ROUNDOFF +- 업무 키워드: 출력 옵션 검증, 재발행, 반올림 User Exit, 대상 없음 +- English: Option Check, Reprint, User Exit, Round Off +- 정의부(복사 시 함께 필요): [`REPRINT`](#decl-zfir0141-485-reprint), [`STA1`](#decl-zfir0141-655-sta1), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L4032-L4049` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#DISPLAY_TAX_INVOICE#C1` + +### FORM CHECK_OPTION — `ZFIR0141` L1925-L2136 (212줄) + +*단독 실행 시 선택 조건(세금계산서번호 SAUGBL 또는 발행일 SAUGDT)에 따라 BKPF/BSEG/BSET 에서 발행된 세금계산서 전표를 찾아 AUSGLOP_ITAB 을 구성하고 매출부가세 기준 공급가액·세액을 집계한다.* + +> 이 unit 의 조각 4개가 196/212줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산서번호 조건이 있으면 BKPF-BKTXT(세금계산서번호 저장 필드)가 범위에 드는 전표를 읽고 고객(KOART='D') BSEG 라인에서 고객·사업영역·사업장·특별G/L·세금코드·전표금액(대변이면 부호 반전)을 가져와 AUSGLOP_ITAB 에 APPEND 한다. + +```abap + 1931| IF SAUGBL NE ' '. " 세금계산서 번호가 있으면 + 1932| SELECT * FROM BKPF WHERE BUKRS = SBUKRS + 1933| AND GJAHR = SGJAHR + 1934| AND BKTXT IN SAUGBL. + 1935| + 1936| IF SY-SUBRC = 0. + 1937| MOVE-CORRESPONDING BKPF TO AUSGLOP_ITAB. + 1938| MOVE BKPF-BKTXT TO AUSGLOP_ITAB-AUGBL. + 1939| SELECT SINGLE * FROM BSEG WHERE BUKRS = BKPF-BUKRS + 1940| AND BELNR = BKPF-BELNR + 1941| AND GJAHR = BKPF-GJAHR + 1942| AND KOART = 'D' + 1943| AND KUNNR IN SKUNNR. + 1944| IF SY-SUBRC = 0. + 1945| MOVE BSEG-KUNNR TO AUSGLOP_ITAB-KUNNR. + 1946| MOVE BSEG-GSBER TO AUSGLOP_ITAB-GSBER. + 1947| MOVE BSEG-BELNR TO AUSGLOP_ITAB-BELNR. + 1948| MOVE BSEG-BUPLA TO AUSGLOP_ITAB-BUPLA. + 1949| MOVE BSEG-UMSKZ TO AUSGLOP_ITAB-UMSKZ. + 1950| MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ. + 1951| * 매출부가세 텍스트를 가져오기 위한 설정 + 1952| * MOVE bseg-sgtxt TO ausglop_itab-sgtxt. + 1953| IF BSEG-SHKZG = 'H'. + 1954| BSEG-DMBTR = -1 * ( BSEG-DMBTR ). + 1955| ENDIF. + 1956| MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR. + 1957| APPEND AUSGLOP_ITAB. + 1958| ELSE. + 1959| CONTINUE. + 1960| ENDIF. + 1961| ENDIF. + 1962| ENDSELECT. +``` + +- **EN**: When a tax invoice number range is given, read BKPF whose header text BKTXT holds the invoice number and take customer line data (KOART='D') from BSEG into AUSGLOP_ITAB with sign-adjusted amounts. +- 테이블(파서): read [BKPF](/tables/BKPF.md), [BSEG](/tables/BSEG.md) / write - +- SAP 객체: BKPF, BSEG +- 업무 키워드: 세금계산서 번호, 전표 헤더 텍스트, 고객 라인, 전표금액, 부호 반전 +- English: Tax Invoice Number, Document Header Text, Customer Line Item, BKPF, BSEG +- 정의부(복사 시 함께 필요): [`SAUGBL`](#decl-zfir0141-645-saugbl), [`BKPF`](#decl-zfir0141-43-bkpf), [`SBUKRS`](#decl-zfir0141-629-sbukrs), [`SGJAHR`](#decl-zfir0141-632-sgjahr), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BSEG`](#decl-zfir0141-35-bseg), [`SKUNNR`](#decl-zfir0141-630-skunnr) +- 위치: `abap://ZFIR0141/ZFIR0141#L1931-L1962` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C1` + +#### [aggregation] 매출부가세 텍스트를 가져온 뒤 각 전표의 세금 항목 BSET 를 매출부가세 계정 0040605000 으로 한정해(특소세 이중합산 방지, A6 세금코드는 세액 0 포함) 차대(SHKZG) 부호를 고려해 공급가액(HWBAS)·세액(HWSTE)을 합산하고 신고일(MLDDT)을 발행일 AUGDT 로 세팅한다. + +```abap + 1965| PERFORM GET_SALES_TAX_SGTXT. + 1966| + 1967| LOOP AT AUSGLOP_ITAB. + 1968| + 1969| CLEAR: SIGN,CLEAR. + 1970| * 특소세 때문에 LC표준액이 2번 더해지므로 특소세를 제외한 + 1971| * 매출부가가치세의 LC표준액만 더하기 위해 계정번호를 조건으로 추가. + 1972| IF AUSGLOP_ITAB-MWSKZ <> 'A6'. + 1973| SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1974| AND BELNR = AUSGLOP_ITAB-BELNR + 1975| AND GJAHR = AUSGLOP_ITAB-GJAHR + 1976| AND HKONT = '0040605000' + 1977| AND HWSTE <> ''. + 1978| + 1979| + 1980| IF SY-SUBRC = 0. + 1981| + 1982| IF SIGN = ' '. + 1983| SIGN = BSET-SHKZG. + 1984| ENDIF. + 1985| + 1986| IF SIGN <> ' ' AND SIGN <> BSET-SHKZG . + 1987| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE. + 1988| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS. + 1989| CLEAR = 'X'. + 1990| ELSE. + 1991| ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 1992| ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 1993| ENDIF. + 1994| + 1995| * ADD bset-hwste TO ausglop_itab-hwste. + 1996| * ADD bset-hwbas TO ausglop_itab-hwbas. + 1997| + 1998| MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT. + 1999| * MOVE bset-shkzg to ausglop_itab-shkzg. + 2000| IF AUSGLOP_ITAB-SHKZG = ' ' . + 2001| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 2002| ENDIF. + 2003| + 2004| * if bset-shkzg = 'S'. + 2005| IF BSET-SHKZG = 'S' AND CLEAR = ' '. + 2006| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1. + 2007| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1. + 2008| ENDIF. + 2009| MODIFY AUSGLOP_ITAB. + 2010| ENDIF. + 2011| ENDSELECT. + 2012| + 2013| ELSEIF AUSGLOP_ITAB-MWSKZ = 'A6'. + 2014| SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2015| AND BELNR = AUSGLOP_ITAB-BELNR + 2016| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2017| AND HKONT = '0040605000'. + 2018| + 2019| + 2020| + 2021| IF SY-SUBRC = 0. + 2022| + 2023| IF SIGN = ' '. + 2024| SIGN = BSET-SHKZG. + 2025| ENDIF. + 2026| + 2027| IF SIGN <> ' ' AND SIGN <> BSET-SHKZG . + 2028| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE. + 2029| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS. + 2030| CLEAR = 'X'. + 2031| ELSE. + 2032| ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 2033| ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 2034| ENDIF. + 2035| + 2036| * ADD bset-hwste TO ausglop_itab-hwste. + 2037| * ADD bset-hwbas TO ausglop_itab-hwbas. + 2038| + 2039| MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT. + 2040| * MOVE bset-shkzg to ausglop_itab-shkzg. + 2041| IF AUSGLOP_ITAB-SHKZG = ' ' . + 2042| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 2043| ENDIF. + 2044| + 2045| * if bset-shkzg = 'S'. + 2046| IF BSET-SHKZG = 'S' AND CLEAR = ' '. + 2047| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1. + 2048| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1. + 2049| ENDIF. + 2050| MODIFY AUSGLOP_ITAB. + 2051| ENDIF. + 2052| ENDSELECT. + 2053| ENDIF. + 2054| ENDLOOP. +``` + +- **EN**: Aggregate tax base and tax amount from BSET restricted to the output VAT account 0040605000 (avoiding double counting of special consumption tax, tax code A6 including zero tax), applying debit/credit sign logic, and set the reporting date as the issue date. +- 테이블(파서): read [BSET](/tables/BSET.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- 호출(파서): GET_SALES_TAX_SGTXT +- SAP 객체: BSET +- 업무 키워드: 매출부가세, 세금 항목, 공급가액 합산, 세액 합산, 특소세, 차대 구분, 신고일 +- English: Output VAT, BSET, Tax Base, Tax Amount, Debit/Credit Indicator, Reporting Date +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`CLEAR`](#decl-zfir0141-1927-clear), [`SIGN`](#decl-zfir0141-1927-sign), [`BSET`](#decl-zfir0141-34-bset) +- 위치: `abap://ZFIR0141/ZFIR0141#L1965-L2054` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C2` + +#### [sql_select] 발행일 조건만 있으면 매출부가세 계정 0040605000 의 BSET 를 신고일(MLDDT) 범위로 읽어 전표별로 공급가액·세액을 합산(차변이면 부호 반전)하고 신고일을 발행일로 하여 AUSGLOP_ITAB 에 추가·갱신한다. + +```abap + 2056| ELSEIF SAUGBL = ' ' AND SAUGDT NE ' '. + 2057| + 2058| SELECT * FROM BSET WHERE BUKRS = SBUKRS + 2059| AND GJAHR = SGJAHR + 2060| * 특소세 때문에 LC표준액이 2번 더해지므로 특소세를 제외한 + 2061| * 매출부가가치세의 LC표준액만 더하기 위해 계정번호를 조건으로 추가. + 2062| AND HKONT = '0040605000' + 2063| AND MLDDT IN SAUGDT. + 2064| IF SY-SUBRC = 0. + 2065| READ TABLE AUSGLOP_ITAB WITH KEY BUKRS = BSET-BUKRS + 2066| BELNR = BSET-BELNR + 2067| GJAHR = BSET-GJAHR. + 2068| IF SY-SUBRC = 0. + 2069| ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 2070| ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 2071| IF BSET-SHKZG = 'S'. + 2072| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1. + 2073| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1. + 2074| ENDIF. + 2075| MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT. + 2076| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 2077| MODIFY AUSGLOP_ITAB INDEX SY-TABIX. + 2078| ELSE. + 2079| MOVE-CORRESPONDING BSET TO AUSGLOP_ITAB. + 2080| IF BSET-SHKZG = 'S'. + 2081| AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1. + 2082| AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1. + 2083| ENDIF. + 2084| MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT. + 2085| APPEND AUSGLOP_ITAB. + 2086| ENDIF. + 2087| ENDIF. + 2088| + 2089| ENDSELECT. +``` + +- **EN**: When only an issue date range is given, read BSET by reporting date for the output VAT account and accumulate tax base and tax per document into AUSGLOP_ITAB. +- 테이블(파서): read [BSET](/tables/BSET.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSET +- 업무 키워드: 발행일 조건, 신고일, 세금 항목, 공급가액, 세액 +- English: Reporting Date, BSET, Tax Base, Tax Amount +- 정의부(복사 시 함께 필요): [`SAUGBL`](#decl-zfir0141-645-saugbl), [`SAUGDT`](#decl-zfir0141-646-saugdt), [`BSET`](#decl-zfir0141-34-bset), [`SBUKRS`](#decl-zfir0141-629-sbukrs), [`SGJAHR`](#decl-zfir0141-632-sgjahr), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2056-L2089` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C3` + +#### [sql_select] 발행일 기준으로 모은 각 전표에 대해 고객 BSEG 라인(KOART='D', 고객 범위)과 BKPF 헤더(원천 유형·참조키·통화·세금계산서번호 BKTXT·전표일·전기일·전표유형)를 읽어 채우고 STRING_CHECK 로 세금계산서번호가 숫자형이 아니거나 고객 라인이 없으면 삭제한다. + +```abap + 2093| LOOP AT AUSGLOP_ITAB. + 2094| SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2095| AND BELNR = AUSGLOP_ITAB-BELNR + 2096| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2097| AND KOART = 'D' + 2098| AND KUNNR IN SKUNNR. + 2099| IF SY-SUBRC = 0. + 2100| MOVE BSEG-KUNNR TO AUSGLOP_ITAB-KUNNR. + 2101| MOVE BSEG-GSBER TO AUSGLOP_ITAB-GSBER. + 2102| MOVE BSEG-BUPLA TO AUSGLOP_ITAB-BUPLA. + 2103| MOVE BSEG-UMSKZ TO AUSGLOP_ITAB-UMSKZ. + 2104| MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT. + 2105| IF BSEG-SHKZG = 'H'. + 2106| BSEG-DMBTR = -1 * ( BSEG-DMBTR ). + 2107| ENDIF. + 2108| MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR. + 2109| + 2110| SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2111| AND BELNR = AUSGLOP_ITAB-BELNR + 2112| AND GJAHR = AUSGLOP_ITAB-GJAHR. + 2113| + 2114| AUSGLOP_ITAB-AWTYP = BKPF-AWTYP. + 2115| AUSGLOP_ITAB-AWKEY = BKPF-AWKEY. + 2116| AUSGLOP_ITAB-HWAER = BKPF-HWAER. + 2117| AUSGLOP_ITAB-WAERS = BKPF-WAERS. + 2118| AUSGLOP_ITAB-AUGBL = BKPF-BKTXT. + 2119| AUSGLOP_ITAB-BLDAT = BKPF-BLDAT. + 2120| AUSGLOP_ITAB-BUDAT = BKPF-BUDAT. + 2121| AUSGLOP_ITAB-BLART = BKPF-BLART. + 2122| *augbl이 세금계산서번호로만(숫자) 이루어진것을 체크한다. + 2123| PERFORM STRING_CHECK. + 2124| IF W_HTYPE = 'NUMC' AND AUSGLOP_ITAB-AUGDT NE 0. + 2125| MODIFY AUSGLOP_ITAB. + 2126| ELSE. + 2127| DELETE AUSGLOP_ITAB. + 2128| ENDIF. + 2129| ELSE. + 2130| DELETE AUSGLOP_ITAB. + 2131| ENDIF. + 2132| ENDLOOP. +``` + +- **EN**: For each collected document, enrich with the customer line from BSEG and header data from BKPF, then drop rows whose tax invoice number is not numeric or that have no matching customer line. +- 테이블(파서): read [BSEG](/tables/BSEG.md), [BKPF](/tables/BKPF.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- 호출(파서): STRING_CHECK +- SAP 객체: BSEG, BKPF +- 업무 키워드: 고객 라인, 전표 헤더, 세금계산서번호 검증, 숫자형 체크, 대상 정리 +- English: Customer Line Item, Document Header, Validation, NUMERIC_CHECK +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BSEG`](#decl-zfir0141-35-bseg), [`SKUNNR`](#decl-zfir0141-630-skunnr), [`BKPF`](#decl-zfir0141-43-bkpf), [`W_HTYPE`](#decl-zfir0141-484-w_htype) +- 위치: `abap://ZFIR0141/ZFIR0141#L2093-L2132` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C4` + +### FORM GET_SALES_TAX_SGTXT — `ZFIR0141` L4801-L4820 (20줄) + +*각 출력 대상 전표의 매출세(MWART='A') BSEG 라인 항목 텍스트(SGTXT)를 읽어 AUSGLOP_ITAB-SGTXT 에 저장한다.* + +> 이 unit 의 조각 1개가 16/20줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전표(BUKRS/BELNR/GJAHR)의 매출세 유형(MWART='A') BSEG 라인을 SELECT SINGLE 하여 항목 텍스트 SGTXT 를 AUSGLOP_ITAB 에 MODIFY 로 반영해 세금계산서 품목명 원천으로 사용한다. + +```abap + 4803| LOOP AT AUSGLOP_ITAB. + 4804| + 4805| * SELECT SINGLE * FROM bseg WHERE belnr = ausglop_itab-belnr + 4806| * AND mwart = 'A'. + 4807| * 아래와 같이 고침 2003.10.16 + 4808| + 4809| SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4810| AND BELNR = AUSGLOP_ITAB-BELNR + 4811| AND GJAHR = AUSGLOP_ITAB-GJAHR + 4812| AND MWART = 'A'. + 4813| + 4814| IF SY-SUBRC EQ 0. + 4815| MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT. + 4816| MODIFY AUSGLOP_ITAB. + 4817| ENDIF. + 4818| ENDLOOP. +``` + +- **EN**: Read the output tax (MWART='A') line item from BSEG for each document and store its text SGTXT in AUSGLOP_ITAB. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSEG +- 업무 키워드: 매출세, 전표 항목 텍스트, 세금 라인 +- English: Output Tax, Line Item Text, BSEG +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BSEG`](#decl-zfir0141-35-bseg) +- 위치: `abap://ZFIR0141/ZFIR0141#L4803-L4818` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_SALES_TAX_SGTXT#C1` + +### FORM STRING_CHECK — `ZFIR0141` L3541-L3551 (11줄) + +*세금계산서번호(AUSGLOP_ITAB-AUGBL)가 숫자형인지 FM NUMERIC_CHECK 로 판정해 W_HTYPE 에 담는다.* + +> 이 unit 의 조각 1개가 6/11줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] AUSGLOP_ITAB-AUGBL 을 FM NUMERIC_CHECK 에 넘겨 데이터 유형(HTYPE, NUMC 여부)을 받아 세금계산서번호 형식 검증에 사용한다. + +```abap + 3544| CALL FUNCTION 'NUMERIC_CHECK' + 3545| EXPORTING + 3546| STRING_IN = AUSGLOP_ITAB-AUGBL + 3547| IMPORTING + 3548| * STRING_OUT = + 3549| HTYPE = W_HTYPE. +``` + +- **EN**: Call FM NUMERIC_CHECK on the tax invoice number to obtain its type (NUMC or not) for format validation. +- 호출(파서): NUMERIC_CHECK +- SAP 객체: NUMERIC_CHECK +- 업무 키워드: 세금계산서번호, 숫자형 검증 +- English: NUMERIC_CHECK, Validation, Tax Invoice Number +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`W_HTYPE`](#decl-zfir0141-484-w_htype) +- 위치: `abap://ZFIR0141/ZFIR0141#L3544-L3549` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#STRING_CHECK#C1` + +### FORM DISPLAY_LIST — `ZFIR0141` L2406-L2522 (117줄) + +*발행된 세금계산서를 번호(AUGBL) 단위로 금액을 합산해 AUSGLOP_ITAB2 로 요약하고 고객명·사업자번호와 함께 체크박스 리스트로 표시한다.* + +> 이 unit 의 조각 3개가 103/117줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 동일 세금계산서번호·발행일의 항목은 AUSGLOP_ITAB2 에 전표금액(DMBTR)·공급가액·세액을 누적하고, 새 번호는 STRING_CHECK 로 숫자형 확인 후 TX 전표유형 번호범위(8000000000~)이면 최신 전기일(BUDAT1)과 함께 AUSGLOP_ITAB2 에 APPEND 한다. + +```abap + 2410| LOOP AT AUSGLOP_ITAB. + 2411| LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = AUSGLOP_ITAB-AUGBL + 2412| AND AUGDT = AUSGLOP_ITAB-AUGDT. + 2413| AUG = 'X'. + 2414| AUSGLOP_ITAB2-DMBTR = AUSGLOP_ITAB2-DMBTR + AUSGLOP_ITAB-DMBTR. + 2415| AUSGLOP_ITAB2-HWBAS = AUSGLOP_ITAB2-HWBAS + AUSGLOP_ITAB-HWBAS. + 2416| AUSGLOP_ITAB2-HWSTE = AUSGLOP_ITAB2-HWSTE + AUSGLOP_ITAB-HWSTE. + 2417| MODIFY AUSGLOP_ITAB2. + 2418| ENDLOOP. + 2419| + 2420| IF AUG <> 'X'. + 2421| CLEAR L_AUGBL. + 2422| * ausglop_itab-augbl의 type 체크 + 2423| PERFORM STRING_CHECK. + 2424| + 2425| * IF w_htype = 'NUMC' AND ausglop_itab-augdt NE 0. + 2426| * MOVE-CORRESPONDING ausglop_itab TO ausglop_itab2. + 2427| * APPEND ausglop_itab2. + 2428| * ENDIF. + 2429| IF W_HTYPE = 'NUMC' AND AUSGLOP_ITAB-AUGDT NE 0. + 2430| WRITE AUSGLOP_ITAB-AUGBL TO L_AUGBL. + 2431| + 2432| * 전표 번호 범위 체크 + 2433| * 전표유형 TX 의 번호 범위가 8000000000 번대 + 2434| IF L_AUGBL >= 8000000000 AND L_AUGBL =< 81999999999. + 2435| MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_ITAB2. + 2436| + 2437| LOOP AT AUSGLOP_ITAB WHERE AUGBL = L_AUGBL . + 2438| + 2439| MOVE-CORRESPONDING AUSGLOP_ITAB TO IT_BUDAT. + 2440| APPEND IT_BUDAT. + 2441| ENDLOOP. + 2442| SORT IT_BUDAT BY BUDAT DESCENDING . + 2443| + 2444| LOOP AT IT_BUDAT . + 2445| + 2446| SY-TABIX = 1. + 2447| AUSGLOP_ITAB2-BUDAT1 = IT_BUDAT-BUDAT. + 2448| EXIT. + 2449| ENDLOOP. + 2450| + 2451| REFRESH IT_BUDAT. CLEAR IT_BUDAT. + 2452| + 2453| APPEND AUSGLOP_ITAB2. + 2454| CLEAR AUSGLOP_ITAB2. + 2455| ENDIF. + 2456| ENDIF. + 2457| + 2458| ENDIF. + 2459| + 2460| CLEAR AUG. + 2461| + 2462| ENDLOOP. +``` + +- **EN**: Summarize rows per tax invoice number into AUSGLOP_ITAB2 by accumulating amounts, and for new numeric numbers in the TX document number range append a new row with the latest posting date. +- 테이블(파서): read - / write [AUSGLOP_ITAB2](/tables/AUSGLOP_ITAB2.md) +- 호출(파서): STRING_CHECK +- 업무 키워드: 세금계산서 번호, 금액 합산, 번호 범위, 전표유형 TX, 최신 전기일 +- English: Tax Invoice Number, Aggregation, Number Range, Posting Date +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUSGLOP_ITAB2`](#decl-zfir0141-215-ausglop_itab2), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUG`](#decl-zfir0141-131-aug), [`L_AUGBL`](#decl-zfir0141-2407-l_augbl), [`W_HTYPE`](#decl-zfir0141-484-w_htype), [`IT_BUDAT`](#decl-zfir0141-159-it_budat), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L2410-L2462` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C1` + +#### [output] 재발행/취소·세금계산서/추가시트 옵션 조합에 따라 제목 텍스트(B01~B04)를 쓰고 T001 을 읽은 뒤 리스트 헤더(세금계산서번호·발행일·고객·고객명·사업자번호·사업장·금액·공급가액·세액)를 출력한다. + +```abap + 2465| IF REPRINT = 'X' AND CHK_PRTI = 'X'. + 2466| WRITE: TEXT-B01. + 2467| ELSEIF REPRINT = 'X' AND CHK_PRAD = 'X'. + 2468| WRITE: TEXT-B03. + 2469| ELSEIF CANCEL = 'X' AND CHK_PRTI = 'X'. + 2470| WRITE: TEXT-B02. + 2471| ELSEIF CANCEL = 'X' AND CHK_PRAD = 'X'. + 2472| WRITE: TEXT-B04. + 2473| ENDIF. + 2474| + 2475| SKIP. + 2476| + 2477| FORMAT COLOR COL_HEADING INTENSIFIED. + 2478| + 2479| SET COUNTRY 'KR'. + 2480| SELECT SINGLE * FROM T001 WHERE BUKRS = SBUKRS. + 2481| + 2482| WRITE:/3 TEXT-B05, "'Tax Inv. No.', + 2483| 15 TEXT-B06, "'Tax. inv. date', + 2484| 30 TEXT-B07, "'Customer', + 2485| 40 TEXT-B11, "'Customer Name', + 2486| * 추가필드 2004.1.13 + 2487| 60 TEXT-B12, "사업자번호 stcd2 + 2488| 72 TEXT-B13, "사업장 bupla + 2489| 82 TEXT-B08, "'Doc. Amt', + 2490| 103 TEXT-B09, "'Base Amt', + 2491| 122 TEXT-B10. "'Tax Amt'. +``` + +- **EN**: Print the list title depending on reprint/cancel and form options, read T001 and write the column header line. +- 테이블(파서): read [T001](/tables/T001.md) / write - +- SAP 객체: T001 +- 업무 키워드: 리스트 헤더, 재발행, 취소, 제목 +- English: List Header, Reprint, Cancel +- 정의부(복사 시 함께 필요): [`REPRINT`](#decl-zfir0141-485-reprint), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`CHK_PRAD`](#decl-zfir0141-682-chk_prad), [`CANCEL`](#decl-zfir0141-486-cancel), [`T001`](#decl-zfir0141-40-t001), [`SBUKRS`](#decl-zfir0141-629-sbukrs) +- 위치: `abap://ZFIR0141/ZFIR0141#L2465-L2491` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C2` + +#### [output] 요약된 세금계산서마다 KNA1 에서 고객명·사업자번호를 조회하고 체크박스·번호·발행일·고객·사업장·전표금액·공급가액·세액을 회사 통화로 WRITE 하며 라인 번호(LIST_LINE)를 저장해 이후 선택 처리에 사용한다. + +```abap + 2498| LOOP AT AUSGLOP_ITAB2. + 2499| SELECT SINGLE NAME1 STCD2 + 2500| INTO (AUSGLOP_ITAB2-NAME1, STCD2) + 2501| FROM KNA1 + 2502| WHERE KUNNR = AUSGLOP_ITAB2-KUNNR. + 2503| + 2504| CHECK NOT AUSGLOP_ITAB2-AUGBL IS INITIAL. + 2505| * CHECK ausglop_itab2-augbl IS NUMERIC. + 2506| WRITE:/1 AUSGLOP_ITAB2-CHECK AS CHECKBOX, + 2507| 3 AUSGLOP_ITAB2-AUGBL, + 2508| 15 AUSGLOP_ITAB2-BUDAT1 ,"augdt, + 2509| 30 AUSGLOP_ITAB2-KUNNR, + 2510| 40 AUSGLOP_ITAB2-NAME1, + 2511| 60 STCD2, "사업자번호 추가 2003.1.13 + 2512| 72 AUSGLOP_ITAB2-BUPLA, + 2513| 77 AUSGLOP_ITAB2-DMBTR CURRENCY T001-WAERS, + 2514| 93 AUSGLOP_ITAB2-HWBAS CURRENCY T001-WAERS, + 2515| 120 AUSGLOP_ITAB2-HWSTE CURRENCY T001-WAERS. + 2516| + 2517| AUSGLOP_ITAB2-LIST_LINE = SY-LINNO. + 2518| MODIFY AUSGLOP_ITAB2. + 2519| CLEAR STCD2. + 2520| ENDLOOP. +``` + +- **EN**: For each summarized tax invoice, read customer name and tax number from KNA1, write the checkbox list line with amounts in company currency and store the list line number. +- 테이블(파서): read [KNA1](/tables/KNA1.md) / write [AUSGLOP_ITAB2](/tables/AUSGLOP_ITAB2.md) +- SAP 객체: KNA1 +- 업무 키워드: 체크박스 리스트, 고객명, 사업자번호, 세금계산서 목록 +- English: Checkbox, Customer Name, KNA1, List Output +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB2`](#decl-zfir0141-215-ausglop_itab2), [`STCD2`](#decl-zfir0141-2496-stcd2), [`KNA1`](#decl-zfir0141-41-kna1), [`T001`](#decl-zfir0141-40-t001) +- 위치: `abap://ZFIR0141/ZFIR0141#L2498-L2520` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C3` + +### FORM REPRINT — `ZFIR0141` L2531-L2766 (236줄) + +*세금계산서 재발행 메인 흐름으로 호출 프로그램에서 넘어온 선택 항목을 AUSGLOP_ITAB 에 옮기고 원천·세금코드·특별G/L·사업장·주소·품목·합계를 순서대로 준비한 뒤 출력 옵션(LIST/FULLLIST/SAP)에 따라 인쇄한다.* + +> 이 unit 의 조각 7개가 207/236줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 다른 프로그램에서 호출된 경우 SEL_AUSGLOP_ITAB 을 AUSGLOP_ITAB 으로 옮기며 발행일(AUGDT)을 입력 SBLDAT 로, 통합 세금계산서(SN1OP)면 FM LAST_DAY_OF_MONTHS 로 전기일의 말일로 세팅한다. + +```abap + 2535| IF PROG_NAME <> ' '. + 2536| DESCRIBE TABLE SEL_AUSGLOP_ITAB LINES G_LINES. "sy-tfill. + 2537| *only reprint is called + 2538| CHECK G_LINES > 0. + 2539| * CHECK sy-tfill > 0. + 2540| * values coming in from the calling program move values to ausglop_itab. + 2541| LOOP AT SEL_AUSGLOP_ITAB. + 2542| MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO AUSGLOP_ITAB. + 2543| * 세금계산서 발행일자 - smartbill 2006.07.21 + 2544| IF SBLDAT IS INITIAL. + 2545| IF SN1OP EQ 'X'. " 통합 세금계산서 발행일 경우 + 2546| * 전기일자의 말일. + 2547| CALL FUNCTION 'LAST_DAY_OF_MONTHS' + 2548| EXPORTING + 2549| DAY_IN = SEL_AUSGLOP_ITAB-BUDAT + 2550| IMPORTING + 2551| LAST_DAY_OF_MONTH = AUSGLOP_ITAB-AUGDT + 2552| EXCEPTIONS + 2553| DAY_IN_NO_DATE = 1 + 2554| OTHERS = 2. + 2555| ENDIF. + 2556| ELSE. + 2557| AUSGLOP_ITAB-AUGDT = SBLDAT. + 2558| ENDIF. + 2559| + 2560| APPEND AUSGLOP_ITAB. + 2561| ENDLOOP. + 2562| + 2563| * 주석처리 - 2006.08.16 + 2564| ** 영세율 세금계산서 체크. + 2565| * LOOP AT AUSGLOP_ITAB TRANSPORTING NO FIELDS + 2566| * WHERE MWSKZ IN SMWSKZ. + 2567| * EXIT. + 2568| * ENDLOOP. + 2569| * IF SY-SUBRC EQ 0. + 2570| * FL_TAX_RAT = '0'. + 2571| * ENDIF. + 2572| ENDIF. +``` + +- **EN**: When called externally, copy SEL_AUSGLOP_ITAB into AUSGLOP_ITAB and set the issue date from SBLDAT or, for consolidated invoices, the month-end of the posting date via LAST_DAY_OF_MONTHS. +- 호출(파서): LAST_DAY_OF_MONTHS +- SAP 객체: LAST_DAY_OF_MONTHS +- 업무 키워드: 재발행, 세금계산서 발행일, 통합 세금계산서, 월말일 +- English: Reprint, Issue Date, Consolidated Tax Invoice, LAST_DAY_OF_MONTHS +- 정의부(복사 시 함께 필요): [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SEL_AUSGLOP_ITAB`](#decl-zfir0141-408-sel_ausglop_itab), [`G_LINES`](#decl-zfir0141-487-g_lines), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`SBLDAT`](#decl-zfir0141-638-sbldat), [`SN1OP`](#decl-zfir0141-143-sn1op) +- 위치: `abap://ZFIR0141/ZFIR0141#L2535-L2572` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C1` + +#### [control_flow] FILL_CHECK_TABLE·GET_TAX_CODE·CHECK_G_L_INDICATOR 로 원천 유형·사업자번호·특별G/L 을 채운 뒤 FI 전표(BKPF) 항목은 CHECK_ITAB 에 AWTYP_FI 를 표시하고 없으면 SAVE_UMSKZ 와 함께 새로 APPEND 한다. + +```abap + 2575| PERFORM FILL_CHECK_TABLE. + 2576| + 2577| * Getting the tax code 1 or tax code 2 + 2578| PERFORM GET_TAX_CODE. + 2579| + 2580| * check special g_l-indicator + 2581| PERFORM CHECK_G_L_INDICATOR. + 2582| * if document is a special g_l transaction document. + 2583| + 2584| LOOP AT AUSGLOP_ITAB. + 2585| IF PROG_NAME = ' '. + 2586| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 2587| ENDIF. + 2588| + 2589| IF AUSGLOP_ITAB-AWTYP = 'BKPF'. + 2590| + 2591| CLEAR CHECK_ITAB. + 2592| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2593| AND KUNNR = AUSGLOP_ITAB-KUNNR + 2594| AND STCD = AUSGLOP_ITAB-STCD + 2595| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 2596| CHECK_ITAB-AWTYP_FI = AUSGLOP_ITAB-AWTYP. + 2597| MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS. + 2598| MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR. + 2599| MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD. + 2600| MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL. + 2601| MODIFY CHECK_ITAB. + 2602| ENDLOOP. + 2603| + 2604| * if check_itab not already filled : + 2605| IF SY-SUBRC <> 0. + 2606| CHECK_ITAB-AWTYP_FI = AUSGLOP_ITAB-AWTYP. + 2607| MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS. + 2608| MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR. + 2609| MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD. + 2610| MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL. + 2611| MOVE AUSGLOP_ITAB-UMSKZ TO CHECK_ITAB-SAVE_UMSKZ. + 2612| APPEND CHECK_ITAB. + 2613| ENDIF. + 2614| + 2615| ENDIF. + 2616| + 2617| ENDLOOP. +``` + +- **EN**: Fill the check table, tax codes and special G/L indicators, then mark FI-originated rows in CHECK_ITAB (AWTYP_FI) or append new entries with the saved special G/L indicator. +- 테이블(파서): read - / write [CHECK_ITAB](/tables/CHECK_ITAB.md) +- 호출(파서): FILL_CHECK_TABLE, GET_TAX_CODE, CHECK_G_L_INDICATOR +- SAP 객체: BKPF +- 업무 키워드: 체크 테이블, FI 전표, 특별 G/L, 원천 유형 +- English: Check Table, FI Document, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L2575-L2617` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C2` + +#### [validation] 추가 시트 인쇄(CHK_PRAD)인데 순수 FI 전표만으로 발행된 세금계산서면 오류 E203 을 내고, 각 항목의 발행 사업장 주소를 GET_BUPLA 로 수집한다. + +```abap + 2619| LOOP AT AUSGLOP_ITAB. + 2620| IF PROG_NAME = ' '. + 2621| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 2622| ENDIF. + 2623| + 2624| * Check if Tax invoice not issued from pure fi-documents + 2625| IF CHK_PRAD = 'X'. + 2626| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2627| AND KUNNR = AUSGLOP_ITAB-KUNNR + 2628| AND STCD = AUSGLOP_ITAB-STCD + 2629| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 2630| + 2631| IF CHECK_ITAB-AWTYP_FI = 'BKPF' AND CHECK_ITAB-AWTYP_SD = ' '. + 2632| MESSAGE E203 WITH AUSGLOP_ITAB-AUGBL. + 2633| ENDIF. + 2634| ENDLOOP. + 2635| ENDIF. + 2636| + 2637| *----------------------------------------------------------------------* + 2638| * get base amount and tax amount from bset + 2639| *----------------------------------------------------------------------* + 2640| + 2641| * PERFORM get_taxes. + 2642| + 2643| *----------------------------------------------------------------------* + 2644| * get issuer business place data + 2645| *----------------------------------------------------------------------* + 2646| PERFORM GET_BUPLA. + 2647| + 2648| ENDLOOP. +``` + +- **EN**: Raise error E203 when the additional sheet is requested for a pure FI-document tax invoice, and collect the issuing business place address via GET_BUPLA. +- 호출(파서): GET_BUPLA +- 업무 키워드: 추가 시트, 순수 FI 전표 검증, 사업장 주소 +- English: Additional Sheet, Validation, Business Place +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`CHK_PRAD`](#decl-zfir0141-682-chk_prad), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L2619-L2648` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C3` + +#### [sql_select] 본사 사업장 'K000' 의 종사업장 번호(STATE_INSC)를 J_1BBRANCH 에서 조회해 세금계산서에 표시할 값으로 보관한다. + +```abap + 2658| CLEAR L_STATE_INSC. + 2659| SELECT SINGLE STATE_INSC INTO L_STATE_INSC + 2660| FROM J_1BBRANCH + 2661| WHERE BUKRS = SBUKRS + 2662| AND BRANCH = 'K000'. +``` + +- **EN**: Read the sub-business place number STATE_INSC of branch 'K000' from J_1BBRANCH for printing. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 종사업장, 사업장 마스터 +- English: Business Place, J_1BBRANCH +- 정의부(복사 시 함께 필요): [`L_STATE_INSC`](#decl-zfir0141-134-l_state_insc), [`J_1BBRANCH`](#decl-zfir0141-47-j_1bbranch), [`SBUKRS`](#decl-zfir0141-629-sbukrs) +- 위치: `abap://ZFIR0141/ZFIR0141#L2658-L2662` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C4` + +#### [calculation] GET_ADDRESS 로 고객 주소, FILL_TABLES 로 품목·합계 테이블을 만든 뒤 FI 합계(ALL_ITEMS_FI_ITAB)의 공급가액·세액을 KRW 편집으로 4번째 라인 MATZEIL4_ITAB 에 채운다. + +```abap + 2669| PERFORM GET_ADDRESS. + 2670| + 2671| + 2672| *----------------------------------------------------------------------* + 2673| * filling of the internal table ausglop_mat_itab with + 2674| * material-related data. For FI documents, fill aggregated table + 2675| *----------------------------------------------------------------------* + 2676| PERFORM FILL_TABLES. + 2677| + 2678| * Filling the base amount and tax amount fields of the 4th line in case + 2679| * fi + sd-data or only fi-data. + 2680| + 2681| LOOP AT MATZEIL4_ITAB. + 2682| LOOP AT ALL_ITEMS_FI_ITAB WHERE BUKRS = MATZEIL4_ITAB-BUKRS + 2683| AND KUNNR = MATZEIL4_ITAB-KUNNR + 2684| AND STCD = MATZEIL4_ITAB-STCD + 2685| AND AUGBL = MATZEIL4_ITAB-AUGBL. + 2686| WRITE ALL_ITEMS_FI_ITAB-NETWR TO MATZEIL4_ITAB-NETWR + 2687| CURRENCY 'KRW'. + 2688| WRITE ALL_ITEMS_FI_ITAB-MWSBP TO MATZEIL4_ITAB-MWSBP + 2689| CURRENCY 'KRW'. + 2690| MODIFY MATZEIL4_ITAB. + 2691| ENDLOOP. + 2692| ENDLOOP. +``` + +- **EN**: Collect customer addresses and material tables, then fill the fourth line MATZEIL4_ITAB with the FI totals in KRW. +- 테이블(파서): read - / write [MATZEIL4_ITAB](/tables/MATZEIL4_ITAB.md) +- 호출(파서): GET_ADDRESS, FILL_TABLES +- 업무 키워드: 고객 주소, 품목 테이블, FI 합계, 4번째 라인 +- English: Address, Material Line, FI Totals, Item Line 4 +- 정의부(복사 시 함께 필요): [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`ALL_ITEMS_FI_ITAB`](#decl-zfir0141-299-all_items_fi_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L2669-L2692` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C5` + +#### [aggregation] 품목을 세금계산서별로 정렬해 4번째 이후 품목을 ALL_MAT_ITAB 에 COLLECT(FLAG='X')하여 '외' 요약 합계를 만들고 전체 품목을 ALL_ITEMS_ITAB 에 COLLECT 한 뒤 GET_TOTALS 로 FI 세금 합계와 대사하며 SD 전용 합계 ALL_ITEMS_SD_ITAB 을 만든다. + +```abap + 2697| CLEAR : ALL_MAT_ITAB[], AUSGLOP_MAT_ITAB, COUNT. + 2698| + 2699| SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING. + 2700| + 2701| LOOP AT AUSGLOP_MAT_ITAB. + 2702| IF AUSGLOP_MAT_ITAB NE SPACE. + 2703| AT NEW AUGBL. + 2704| COUNT = 0. + 2705| ENDAT. + 2706| COUNT = COUNT + 1. + 2707| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_MAT_ITAB. + 2708| * IF count le 4. + 2709| * append all_items_itab. + 2710| IF COUNT GE 4. + 2711| COLLECT ALL_MAT_ITAB. + 2712| ALL_MAT_ITAB-FLAG = 'X'. + 2713| MODIFY ALL_MAT_ITAB INDEX SY-TABIX TRANSPORTING FLAG . + 2714| * ELSE. + 2715| * append all_mat_itab. + 2716| ENDIF. + 2717| ENDIF. + 2718| ENDLOOP. + 2719| + 2720| LOOP AT AUSGLOP_MAT_ITAB. + 2721| IF AUSGLOP_MAT_ITAB NE SPACE. + 2722| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_ITEMS_ITAB. + 2723| COLLECT ALL_ITEMS_ITAB. + 2724| ENDIF. + 2725| ENDLOOP. + 2726| + 2727| + 2728| * checking if currency conversion to KRW has been successfully done: + 2729| * the sum over all item values = document value + 2730| * if not then add the difference to first item when printing the + 2731| * tax invoice + 2732| * GET TOTALS... + 2733| + 2734| PERFORM GET_TOTALS. + 2735| + 2736| * filling all_items_sd_itab with only sd-data : to print + 2737| * in the first line the total amount from pure sd-data. + 2738| * to be printed in case of fi + sd data and number of materials > 4. + 2739| + 2740| REFRESH ALL_ITEMS_SD_ITAB. + 2741| + 2742| LOOP AT AUSGLOP_MAT_ITAB. + 2743| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_ITEMS_SD_ITAB. + 2744| COLLECT ALL_ITEMS_SD_ITAB. + 2745| ENDLOOP. +``` + +- **EN**: Aggregate materials from the fourth line onward into ALL_MAT_ITAB for the summary line, collect all items into ALL_ITEMS_ITAB, reconcile with FI totals via GET_TOTALS and build the SD-only totals table. +- 호출(파서): GET_TOTALS +- 업무 키워드: 품목 집계, 요약 라인, 합계 대사, SD 합계 +- English: COLLECT, Summary Line, Reconciliation, Totals +- 정의부(복사 시 함께 필요): [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`ALL_MAT_ITAB`](#decl-zfir0141-278-all_mat_itab), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`COUNT`](#decl-zfir0141-124-count), [`AUGBL`](#decl-zfir0141-461-augbl), [`ALL_ITEMS_SD_ITAB`](#decl-zfir0141-286-all_items_sd_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2697-L2745` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C6` + +#### [control_flow] USER_EXIT3 로 고객사 가공을 거치고 사업장 주소 중복을 제거한 뒤 출력 옵션에 따라 리스트(LIST, PF-STATUS LIST2), 전체 리스트 인쇄(FULLLIST → LIST_OUTPUT), SAPscript 출력(SAP → SAP_SCRIPT)으로 분기한다. + +```abap + 2747| PERFORM USER_EXIT3. + 2748| + 2749| SORT BUPLA_ADRESSE BY BRANCH AUGBL. + 2750| + 2751| DELETE ADJACENT DUPLICATES FROM BUPLA_ADRESSE COMPARING BRANCH AUGBL + 2752| STCD2 STCD1. + 2753| + 2754| * 출력옵션 체크 -------------------------------------------------------- + 2755| IF LIST = 'X'. + 2756| SET PF-STATUS 'LIST2'. + 2757| PERFORM USER_EXIT3. + 2758| + 2759| ELSEIF FULLLIST = 'X'. + 2760| PERFORM LIST_OUTPUT. + 2761| + 2762| ELSEIF SAP = 'X'. + 2763| PERFORM SAP_SCRIPT. + 2764| ENDIF. +``` + +- **EN**: Apply the user exit, dedupe business place addresses and branch by output option to list display, full list printing (LIST_OUTPUT) or SAPscript printing (SAP_SCRIPT). +- 호출(파서): USER_EXIT3, USER_EXIT3, LIST_OUTPUT, SAP_SCRIPT +- 업무 키워드: 출력 옵션, 리스트, SAPscript, User Exit +- English: Output Option, List, SAPscript, User Exit +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`LIST`](#decl-zfir0141-669-list), [`FULLLIST`](#decl-zfir0141-667-fulllist), [`SAP`](#decl-zfir0141-665-sap) +- 위치: `abap://ZFIR0141/ZFIR0141#L2747-L2764` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#REPRINT#C7` + +### FORM FILL_CHECK_TABLE — `ZFIR0141` L1502-L1553 (52줄) + +*출력 대상 전표마다 BKPF 로 원천 유형(AWTYP/AWKEY)을 확인하고 SD 빌링 원천이면 CHECK_ITAB 에 등록한 뒤 VBRK 의 빌링 유형·통화·환율 정보를 AUSGLOP_ITAB 에 채운다.* + +> 이 unit 의 조각 2개가 38/52줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회계전표 헤더 BKPF 를 읽어 다른 프로그램에서 호출된 경우 참조 트랜잭션 유형(AWTYP)·참조키(AWKEY)·현지통화(HWAER)를 AUSGLOP_ITAB 에 세팅한다. + +```abap + 1511| SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1512| AND BELNR = AUSGLOP_ITAB-BELNR + 1513| AND GJAHR = AUSGLOP_ITAB-GJAHR. + 1514| IF SY-SUBRC = 0. + 1515| IF PROG_NAME NE SY-CPROG. + 1516| MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP. + 1517| MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY. + 1518| MOVE BKPF-HWAER TO AUSGLOP_ITAB-HWAER. + 1519| ENDIF. + 1520| ENDIF. +``` + +- **EN**: Read the accounting document header BKPF and, when called from another program, copy reference transaction type, reference key and local currency to AUSGLOP_ITAB. +- 테이블(파서): read [BKPF](/tables/BKPF.md) / write - +- SAP 객체: BKPF +- 업무 키워드: 회계전표 헤더, 참조 트랜잭션, 참조키, 현지통화 +- English: Accounting Document Header, Reference Transaction, AWKEY, Local Currency +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0141-43-bkpf), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name) +- 위치: `abap://ZFIR0141/ZFIR0141#L1511-L1520` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#FILL_CHECK_TABLE#C1` + +#### [sql_select] 원천이 SD 빌링(VBRK)이면 CHECK_ITAB 에 회사코드·고객·세금계산서번호·사업자번호와 AWTYP_SD 를 등록하고 빌링 헤더 VBRK 에서 빌링번호·빌링유형·빌링일·통화·환율·환율유형(없으면 'M')·환율일을 AUSGLOP_ITAB 에 채운다. + +```abap + 1522| IF BKPF-AWTYP = 'VBRK'. + 1523| MOVE BKPF-AWTYP TO CHECK_ITAB-AWTYP_SD. + 1524| MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS. + 1525| MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR. + 1526| MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL. + 1527| MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD. + 1528| APPEND CHECK_ITAB. + 1529| + 1530| * getting sd-related data for the selected document from table VBRK + 1531| SELECT SINGLE * FROM VBRK WHERE VBELN = BKPF-AWKEY. + 1532| + 1533| IF SY-SUBRC = 0. + 1534| MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN. + 1535| MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART. + 1536| MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT. + 1537| MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP. + 1538| MOVE VBRK-WAERK TO AUSGLOP_ITAB-WAERK. + 1539| MOVE VBRK-KURRF TO AUSGLOP_ITAB-KURRF. + 1540| IF VBRK-KURST <> ' '. + 1541| MOVE VBRK-KURST TO AUSGLOP_ITAB-KURST. + 1542| ELSE. + 1543| AUSGLOP_ITAB-KURST = 'M'. + 1544| ENDIF. + 1545| MOVE VBRK-KURRF_DAT TO AUSGLOP_ITAB-KURRF_DAT. + 1546| ENDIF. + 1547| * ENDSELECT. + 1548| ENDIF. + 1549| MODIFY AUSGLOP_ITAB. +``` + +- **EN**: For SD billing origin, register the row in CHECK_ITAB and read billing header VBRK to fill billing number, type, date, currency, exchange rate, rate type (default 'M') and rate date. +- 테이블(파서): read [VBRK](/tables/VBRK.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: VBRK +- 업무 키워드: SD 빌링, 빌링 헤더, 환율, 환율유형, 통화, 세금계산서 체크 테이블 +- English: Billing Document, VBRK, Exchange Rate, Rate Type, Currency +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0141-43-bkpf), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`VBRK`](#decl-zfir0141-38-vbrk) +- 위치: `abap://ZFIR0141/ZFIR0141#L1522-L1549` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#FILL_CHECK_TABLE#C2` + +### FORM GET_TAX_CODE — `ZFIR0141` L891-L919 (29줄) + +*일회성 고객 전표의 BSEC 에서 사업자번호(STCD2 우선, 없으면 주민번호 STCD1)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 세팅한다.* + +> 이 unit 의 조각 1개가 18/29줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전표의 일회성 고객 데이터 BSEC 를 읽어 STCD2(사업자번호) 가 있으면 그것을, 없으면 STCD1 을 세금 식별번호 STCD 로 AUSGLOP_ITAB 에 저장하고 동일 세금계산서의 CHECK_ITAB-STCD 에도 반영한다. + +```abap + 898| SELECT SINGLE * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 899| AND BELNR = AUSGLOP_ITAB-BELNR + 900| AND GJAHR = AUSGLOP_ITAB-GJAHR. + 901| IF SY-SUBRC = 0. + 902| IF BSEC-STCD2 = ' '. + 903| MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD. + 904| ELSE. + 905| MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD. + 906| ENDIF. + 907| MODIFY AUSGLOP_ITAB. + 908| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 909| AND KUNNR = AUSGLOP_ITAB-KUNNR + 910| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 911| MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD. + 912| MODIFY CHECK_ITAB. + 913| ENDLOOP. + 914| + 915| ENDIF. +``` + +- **EN**: Read one-time customer data BSEC and set the tax number (STCD2, else STCD1) as STCD on AUSGLOP_ITAB and the matching CHECK_ITAB rows. +- 테이블(파서): read [BSEC](/tables/BSEC.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md), [CHECK_ITAB](/tables/CHECK_ITAB.md) +- SAP 객체: BSEC +- 업무 키워드: 일회성 고객, 사업자등록번호, 주민등록번호, 세금 식별번호 +- English: One-Time Customer, BSEC, Tax Number +- 정의부(복사 시 함께 필요): [`BSEC`](#decl-zfir0141-36-bsec), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L898-L915` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_TAX_CODE#C1` + +### FORM CHECK_G_L_INDICATOR — `ZFIR0141` L925-L956 (32줄) + +*출력 대상 전표의 BSEG 에서 특별 G/L 지시자(UMSKZ)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB(SAVE_UMSKZ)에 저장한다.* + +> 이 unit 의 조각 1개가 20/32줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전표(BUKRS/BELNR/GJAHR)의 BSEG 라인 중 특별 G/L 지시자가 있는 항목을 SELECT 하여 AUSGLOP_ITAB-UMSKZ 에 넣고 같은 세금계산서의 CHECK_ITAB-SAVE_UMSKZ 에도 반영해 선수금 등 특별 G/L 거래를 식별한다. + +```abap + 932| SELECT UMSKZ + 933| FROM BSEG + 934| INTO UMSKZ + 935| WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 936| AND BELNR = AUSGLOP_ITAB-BELNR + 937| AND GJAHR = AUSGLOP_ITAB-GJAHR + 938| AND UMSKZ <> ' '. + 939| + 940| IF SY-SUBRC = 0. + 941| MOVE UMSKZ TO AUSGLOP_ITAB-UMSKZ. + 942| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 943| AND KUNNR = AUSGLOP_ITAB-KUNNR + 944| AND STCD = AUSGLOP_ITAB-STCD + 945| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 946| MOVE BSEG-UMSKZ TO CHECK_ITAB-SAVE_UMSKZ. + 947| MODIFY CHECK_ITAB. + 948| ENDLOOP. + 949| MODIFY AUSGLOP_ITAB. + 950| ENDIF. + 951| ENDSELECT. +``` + +- **EN**: Select non-blank special G/L indicators from BSEG for the document and store them in AUSGLOP_ITAB and CHECK_ITAB to identify special G/L transactions such as down payments. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write [CHECK_ITAB](/tables/CHECK_ITAB.md), [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSEG +- 업무 키워드: 특별 G/L 지시자, 선수금, 전표 라인, 세금계산서 체크 +- English: Special G/L Indicator, Down Payment, BSEG +- 정의부(복사 시 함께 필요): [`UMSKZ`](#decl-zfir0141-125-umskz), [`BSEG`](#decl-zfir0141-35-bseg), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L932-L951` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#CHECK_G_L_INDICATOR#C1` + +### FORM GET_BUPLA — `ZFIR0141` L1562-L1633 (72줄) + +*세금계산서 발행 사업장(BUPLA)의 주소와 J_1BBRANCH 사업장 마스터(대표자·업태·업종)를 읽어 BUPLA_ADRESSE 에 세금계산서번호와 함께 추가한다.* + +> 이 unit 의 조각 1개가 60/72줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] FM GET_BUPLA_ADDRESS 로 회사코드·사업장의 주소를 받아 BUPLA_ADRESSE 에 옮기고 J_1BBRANCH 에서 사업장 마스터(명칭·대표자 KR_REPRES·업태·업종·사업자번호)를 읽어 합친 뒤 발행일과 세금계산서번호(AUGBL)를 붙여 APPEND 한다. + +```abap + 1567| CALL FUNCTION 'GET_BUPLA_ADDRESS' + 1568| EXPORTING + 1569| BUKRS = SBUKRS + 1570| BUPLA = AUSGLOP_ITAB-BUPLA + 1571| IMPORTING + 1572| ADRESSE = ADRESSE. + 1573| + 1574| MOVE-CORRESPONDING ADRESSE TO BUPLA_ADRESSE. + 1575| + 1576| SELECT SINGLE * FROM J_1BBRANCH WHERE BUKRS = SBUKRS + 1577| AND BRANCH = AUSGLOP_ITAB-BUPLA. + 1578| IF SY-SUBRC = 0. + 1579| + 1580| MOVE-CORRESPONDING J_1BBRANCH TO BUPLA_ADRESSE. + 1581| ** clear BUPLA_adresse-name1 + 1582| * bupla_adress-name1 = '(주)보루네오가구'. + 1583| + 1584| + 1585| * CLEAR BUPLA_ADRESSE-KR_REPRES. + 1586| + 1587| ** "세금계산서 처음출력시 대표자 출력조건 2004.11.27 수정 + 1588| * IF PROG_NAME = 'YFIR0601'. + 1589| * + 1590| * WA_ITAB2-BUDAT1 = AUSGLOP_ITAB-BUDAT . + 1591| * + 1592| * ELSE. "세금계산서 재인쇄시 로직 + 1593| * + 1594| * + 1595| * LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = AUSGLOP_ITAB-AUGBL + 1596| * AND CHECK = 'X' . + 1597| * SY-TABIX = 1. + 1598| * WA_ITAB2-BUDAT1 = AUSGLOP_ITAB2-BUDAT1. + 1599| * EXIT. + 1600| * ENDLOOP. + 1601| * ENDIF. + 1602| * read table ausglop_itab2 into wa_itab2 with key augbl = + 1603| * ausglop_itab-augbl. + 1604| * if sy-subrc = 0. + 1605| * move wa_itab2-budat1 to ausglop_itab2-budat1. + 1606| * endif. + 1607| + 1608| * bif용 주석처리 + 1609| * IF WA_ITAB2-BUDAT1 <= '20040417' . + 1610| * BUPLA_ADRESSE-KR_REPRES = '임창빈'. + 1611| * MOVE WA_ITAB2-BUDAT1 TO BUPLA_ADRESSE-BUDAT1. + 1612| * MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL. + 1613| * ELSEIF WA_ITAB2-BUDAT1 >= '20040418' . + 1614| * BUPLA_ADRESSE-KR_REPRES = '한순현'. + 1615| * MOVE WA_ITAB2-BUDAT1 TO BUPLA_ADRESSE-BUDAT1. + 1616| * MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL. + 1617| * ENDIF. + 1618| + 1619| MOVE WA_ITAB2-BUDAT1 TO BUPLA_ADRESSE-BUDAT1. + 1620| MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL. + 1621| + 1622| APPEND BUPLA_ADRESSE. + 1623| + 1624| CLEAR WA_ITAB2. + 1625| BUPLA = J_1BBRANCH-BRANCH. + 1626| ENDIF. +``` + +- **EN**: Get the business place address via FM GET_BUPLA_ADDRESS, merge business place master data from J_1BBRANCH (name, representative, business/industry type) and append to BUPLA_ADRESSE with the tax invoice number. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- 호출(파서): GET_BUPLA_ADDRESS +- SAP 객체: GET_BUPLA_ADDRESS, J_1BBRANCH +- 업무 키워드: 사업장 주소, 사업장 마스터, 대표자, 업태, 업종, 공급자 정보 +- English: Business Place, J_1BBRANCH, GET_BUPLA_ADDRESS, Supplier +- 정의부(복사 시 함께 필요): [`SBUKRS`](#decl-zfir0141-629-sbukrs), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADRESSE`](#decl-zfir0141-99-adresse), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`J_1BBRANCH`](#decl-zfir0141-47-j_1bbranch), [`AUSGLOP_ITAB2`](#decl-zfir0141-215-ausglop_itab2), [`WA_ITAB2`](#decl-zfir0141-234-wa_itab2), [`BUPLA`](#decl-zfir0141-126-bupla) +- 위치: `abap://ZFIR0141/ZFIR0141#L1567-L1626` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_BUPLA#C1` + +### FORM GET_ADDRESS — `ZFIR0141` L1642-L1661 (20줄) + +*출력 대상 각 고객의 KNA1 을 조회해 일회성 고객 여부(XCPDK)에 따라 마스터 주소 또는 BSEC 일회성 주소를 ADDRESS_ITAB 에 채운다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 선택된 AUSGLOP_ITAB 항목마다 고객 마스터 KNA1 을 SELECT SINGLE 하고 XCPDK 가 아니면 GET_ADDRESS_OF_CUSTOMER, 일회성 고객이면 GET_ADDRESS_OF_CPD_CUSTOMER 로 주소 정보를 수집한다. + +```abap + 1644| LOOP AT AUSGLOP_ITAB. + 1645| + 1646| IF PROG_NAME = ' '. + 1647| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 1648| ENDIF. + 1649| * IF ausglop_itab-filkd = ' '. + 1650| SELECT SINGLE * FROM KNA1 WHERE KUNNR = AUSGLOP_ITAB-KUNNR. + 1651| + 1652| + 1653| IF KNA1-XCPDK <> 'X'. + 1654| PERFORM GET_ADDRESS_OF_CUSTOMER. + 1655| ELSE. + 1656| PERFORM GET_ADDRESS_OF_CPD_CUSTOMER. + 1657| ENDIF. + 1658| ENDLOOP. +``` + +- **EN**: For each selected row read KNA1 and collect the address via the customer master or one-time customer routine depending on XCPDK. +- 테이블(파서): read [KNA1](/tables/KNA1.md) / write - +- 호출(파서): GET_ADDRESS_OF_CUSTOMER, GET_ADDRESS_OF_CPD_CUSTOMER +- SAP 객체: KNA1 +- 업무 키워드: 고객 마스터 조회, 일회성 고객, 주소 수집 +- English: Customer Master, One-Time Customer, Address +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`KNA1`](#decl-zfir0141-41-kna1) +- 위치: `abap://ZFIR0141/ZFIR0141#L1644-L1658` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_ADDRESS#C1` + +### FORM GET_ADDRESS_OF_CUSTOMER — `ZFIR0141` L4060-L4085 (26줄) + +*고객 마스터 KNA1 의 주소·사업자번호·업태·업종·대표자·주소번호를 ADDRESS_ITAB 에 고객당 1건 추가한다.* + +> 이 unit 의 조각 1개가 22/26줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] KNA1 의 이름·우편번호·주소·도시·업태(J_1KFTBUS)·업종(J_1KFTIND)·대표자(J_1KFREPRE)·STCD1/STCD2·주소번호(ADRNR)를 ADDRESS_ITAB 에 옮기고 사업자번호(STCD2 우선, 없으면 STCD1)를 STCD 로 정한 뒤 동일 고객이 없을 때만 APPEND 한다. + +```abap + 4062| MOVE KNA1-KUNNR TO ADDRESS_ITAB-KUNNR. + 4063| MOVE KNA1-NAME1 TO ADDRESS_ITAB-NAME. + 4064| MOVE KNA1-PSTLZ TO ADDRESS_ITAB-PSTLZ. + 4065| MOVE KNA1-STRAS TO ADDRESS_ITAB-STRAS. + 4066| MOVE KNA1-ORT01 TO ADDRESS_ITAB-ORT01. + 4067| MOVE KNA1-ORT02 TO ADDRESS_ITAB-ORT02. + 4068| MOVE KNA1-J_1KFTBUS TO ADDRESS_ITAB-BUSTYP. + 4069| MOVE KNA1-J_1KFTIND TO ADDRESS_ITAB-INDTYP. + 4070| MOVE KNA1-J_1KFREPRE TO ADDRESS_ITAB-REPRE. + 4071| MOVE KNA1-STCD1 TO ADDRESS_ITAB-STCD1. + 4072| MOVE KNA1-STCD2 TO ADDRESS_ITAB-STCD2. + 4073| MOVE KNA1-ADRNR TO ADDRESS_ITAB-ADRNR. " smartbill 2006.07.24 + 4074| IF KNA1-STCD2 = ' '. + 4075| MOVE KNA1-STCD1 TO ADDRESS_ITAB-STCD. + 4076| ELSE. + 4077| MOVE KNA1-STCD2 TO ADDRESS_ITAB-STCD. + 4078| ENDIF. + 4079| READ TABLE ADDRESS_ITAB WITH KEY KUNNR = KNA1-KUNNR. + 4080| IF SY-SUBRC <> 0. + 4081| * AT NEW kunnr. + 4082| APPEND ADDRESS_ITAB. + 4083| ENDIF. +``` + +- **EN**: Copy customer master address, Korean tax fields (business type, industry type, representative), tax numbers and address number from KNA1 into ADDRESS_ITAB once per customer. +- SAP 객체: KNA1 +- 업무 키워드: 고객 마스터, 주소, 사업자등록번호, 업태, 업종, 대표자 +- English: Customer Master, KNA1, Tax Number, Address +- 정의부(복사 시 함께 필요): [`KNA1`](#decl-zfir0141-41-kna1), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L4062-L4083` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_ADDRESS_OF_CUSTOMER#C1` + +### FORM GET_ADDRESS_OF_CPD_CUSTOMER — `ZFIR0141` L4095-L4136 (42줄) + +*일회성 고객(CPD)의 주소·사업자번호·업태·업종·대표자를 전표의 일회성 고객 데이터 BSEC 에서 읽어 ADDRESS_ITAB 에 추가하고 AUSGLOP_ITAB/CHECK_ITAB 의 STCD·XCPDK 를 갱신한다.* + +> 이 unit 의 조각 1개가 35/42줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전표(BUKRS/BELNR/GJAHR)의 일회성 고객 데이터 BSEC 를 읽어 이름·도시·우편번호·주소·STCD1/STCD2·업태(J_1KFTBUS)·업종(J_1KFTIND)·대표자(J_1KFREPRE)를 ADDRESS_ITAB 에 APPEND 하고, 사업자번호(STCD2 우선, 없으면 STCD1)를 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 반영하며 XCPDK='X' 로 일회성 고객임을 표시한다. + +```abap + 4100| SELECT * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4101| AND BELNR = AUSGLOP_ITAB-BELNR + 4102| AND GJAHR = AUSGLOP_ITAB-GJAHR. + 4103| IF SY-SUBRC = 0. + 4104| MOVE AUSGLOP_ITAB-BUKRS TO ADDRESS_ITAB-BUKRS. + 4105| MOVE AUSGLOP_ITAB-KUNNR TO ADDRESS_ITAB-KUNNR. + 4106| MOVE BSEC-NAME1 TO ADDRESS_ITAB-NAME. + 4107| MOVE BSEC-ORT01 TO ADDRESS_ITAB-ORT01. + 4108| MOVE BSEC-PSTLZ TO ADDRESS_ITAB-PSTLZ. + 4109| MOVE BSEC-STRAS TO ADDRESS_ITAB-STRAS. + 4110| MOVE BSEC-STCD1 TO ADDRESS_ITAB-STCD1. + 4111| MOVE BSEC-STCD2 TO ADDRESS_ITAB-STCD2. + 4112| IF BSEC-STCD2 = ' '. + 4113| MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD. + 4114| ELSE. + 4115| MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD. + 4116| ENDIF. + 4117| + 4118| MOVE AUSGLOP_ITAB-STCD TO ADDRESS_ITAB-STCD. + 4119| + 4120| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4121| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4122| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4123| MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD. + 4124| AUSGLOP_ITAB-XCPDK = 'X'. + 4125| MODIFY CHECK_ITAB. + 4126| ENDLOOP. + 4127| + 4128| MOVE BSEC-J_1KFTBUS TO ADDRESS_ITAB-BUSTYP. + 4129| MOVE BSEC-J_1KFTIND TO ADDRESS_ITAB-INDTYP. + 4130| MOVE BSEC-J_1KFREPRE TO ADDRESS_ITAB-REPRE. + 4131| APPEND ADDRESS_ITAB. + 4132| MODIFY AUSGLOP_ITAB. + 4133| ENDIF. + 4134| ENDSELECT. +``` + +- **EN**: Read one-time customer data from BSEC for the document, append address, tax numbers, business/industry type and representative to ADDRESS_ITAB, and set STCD and XCPDK on AUSGLOP_ITAB and CHECK_ITAB. +- 테이블(파서): read [BSEC](/tables/BSEC.md) / write [CHECK_ITAB](/tables/CHECK_ITAB.md), [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSEC +- 업무 키워드: 일회성 고객, 주소, 사업자등록번호, 업태, 업종, 대표자 +- English: One-Time Customer, BSEC, Tax Number, Address +- 정의부(복사 시 함께 필요): [`BSEC`](#decl-zfir0141-36-bsec), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L4100-L4134` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#GET_ADDRESS_OF_CPD_CUSTOMER#C1` + +### FORM FILL_TABLES — `ZFIR0141` L1670-L1871 (202줄) + +*출력 대상 세금계산서의 품목 테이블(AUSGLOP_MAT_ITAB)·항목 합계(ALL_ITEMS_ITAB/ALL_ITEMS_FI_ITAB)·특별G/L 라인 정보(CHECK_ITAB, MATZEIL4_ITAB)를 SD 빌링(VBRP)과 FI 전표로부터 채운다.* + +> 이 unit 의 조각 5개가 180/202줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] FI 전표(BKPF) 원천 항목에 대해 CHECK_TEXT 를 호출해 전표 텍스트에서 자재·단위·수량을 파싱하여 SD 유형 품목으로 변환한다. + +```abap + 1675| LOOP AT AUSGLOP_ITAB WHERE AWTYP = 'BKPF'. + 1676| IF PROG_NAME = ' '. + 1677| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 1678| ENDIF. + 1679| PERFORM CHECK_TEXT. + 1680| ENDLOOP. +``` + +- **EN**: For FI-originated rows, call CHECK_TEXT to parse material/unit/quantity from the line item text. +- 호출(파서): CHECK_TEXT +- SAP 객체: BKPF +- 업무 키워드: FI 전표, 전표 텍스트 파싱, 품목 변환 +- English: FI Document, Line Item Text, Material +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`PROG_NAME`](#decl-zfir0141-462-prog_name) +- 위치: `abap://ZFIR0141/ZFIR0141#L1675-L1680` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C1` + +#### [sql_select] SD 빌링(VBRK) 항목은 빌링 품목 VBRP 를 수량 0 제외로 읽어 자재·품목텍스트·단위·수량을 옮기고 특소세(KZWI2) 보정, 대변(FAREG 4/5) 부호 반전, CONVERT_TO_LOCAL_CURRENCY 현지통화 환산, 반품(SHKZG='S') 부호 반전 후 AUSGLOP_MAT_ITAB 에 COLLECT 하고 IT_VBRP 에 전기일·세금계산서번호와 함께 보관하며 품목 수 LINE_COUNT 를 센다. + +```abap + 1688| IF AUSGLOP_ITAB-AWTYP = 'VBRK' AND AUSGLOP_ITAB-FLAG = ' '. + 1689| MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_MAT_ITAB. + 1690| + 1691| SELECT * FROM VBRP WHERE VBELN = AUSGLOP_ITAB-VBELN + 1692| AND FKIMG <> '0'. + 1693| CLEAR AUSGLOP_MAT_ITAB-FKIMG. + 1694| + 1695| MOVE VBRP-MATNR TO AUSGLOP_MAT_ITAB-MATNR. + 1696| * Material description + 1697| MOVE VBRP-ARKTX TO AUSGLOP_MAT_ITAB-ARKTX. + 1698| * MOVE vbrp-fkimg TO ausglop_mat_itab-fkimg. + 1699| MOVE VBRP-VRKME TO AUSGLOP_MAT_ITAB-VRKME. + 1700| * 특소세가 있을 경우 20060424 sms + 1701| IF NOT VBRP-KZWI2 IS INITIAL. + 1702| VBRP-NETWR = VBRP-NETWR + VBRP-KZWI2. "정가+ + 1703| VBRP-MWSBP = VBRP-MWSBP - VBRP-KZWI2. "세액- + 1704| ENDIF. + 1705| * 특소세가 있을 경우 끝 + 1706| + 1707| IF VBRP-FAREG = 4 OR VBRP-FAREG = 5. + 1708| VBRP-NETWR = VBRP-NETWR * -1. + 1709| VBRP-MWSBP = VBRP-MWSBP * -1. + 1710| ELSE. + 1711| MOVE VBRP-FKIMG TO AUSGLOP_MAT_ITAB-FKIMG. + 1712| ENDIF. + 1713| + 1714| MOVE VBRP-NETWR TO AUSGLOP_MAT_ITAB-NETWR. + 1715| MOVE VBRP-MWSBP TO AUSGLOP_MAT_ITAB-MWSBP. + 1716| * 정가, 세액의 통화단위 변환 + 1717| PERFORM CONVERT_TO_LOCAL_CURRENCY. + 1718| + 1719| MOVE AUSGLOP_MAT_ITAB-NETWR TO AUSGLOP_MAT_ITAB-HWBAS. + 1720| MOVE AUSGLOP_MAT_ITAB-MWSBP TO AUSGLOP_MAT_ITAB-MWSBP. + 1721| + 1722| * in case of a material return + 1723| IF AUSGLOP_ITAB-SHKZG = 'S'. + 1724| AUSGLOP_MAT_ITAB-NETWR = ( -1 ) * AUSGLOP_MAT_ITAB-NETWR. + 1725| AUSGLOP_MAT_ITAB-MWSBP = ( -1 ) * AUSGLOP_MAT_ITAB-MWSBP. + 1726| AUSGLOP_MAT_ITAB-FKIMG = ( -1 ) * AUSGLOP_MAT_ITAB-FKIMG. + 1727| ENDIF. + 1728| COLLECT AUSGLOP_MAT_ITAB. + 1729| ENDSELECT. + 1730| + 1731| SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING. + 1732| + 1733| SELECT * FROM VBRP WHERE VBELN = AUSGLOP_ITAB-VBELN + 1734| AND FKIMG <> '0'. + 1735| MOVE-CORRESPONDING VBRP TO IT_VBRP. + 1736| MOVE AUSGLOP_ITAB-BUDAT TO IT_VBRP-BUDAT. + 1737| MOVE AUSGLOP_ITAB-AUGBL TO IT_VBRP-AUGBL. + 1738| APPEND IT_VBRP. + 1739| ENDSELECT. + 1740| + 1741| * number of item lines in ausglop_mat_itab --> number of sold materials + 1742| LINE_COUNT = 0. + 1743| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1744| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1745| AND STCD = AUSGLOP_ITAB-STCD + 1746| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1747| LINE_COUNT = LINE_COUNT + 1. + 1748| ENDLOOP. +``` + +- **EN**: For SD billing rows, read billing items VBRP, adjust for special consumption tax (KZWI2), reverse sign for credit memos (FAREG 4/5) and returns (SHKZG='S'), convert to local currency and COLLECT into AUSGLOP_MAT_ITAB; keep VBRP rows with posting date and count material lines. +- 테이블(파서): read [VBRP](/tables/VBRP.md) / write - +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: VBRP, CONVERT_TO_LOCAL_CURRENCY +- 업무 키워드: 빌링 품목, 특소세, 대변 메모, 반품, 현지통화 환산, 품목 집계 +- English: Billing Item, VBRP, Credit Memo, Returns, Currency Conversion, COLLECT +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`VBRP`](#decl-zfir0141-39-vbrp), [`AUGBL`](#decl-zfir0141-461-augbl), [`IT_VBRP`](#decl-zfir0141-490-it_vbrp), [`LINE_COUNT`](#decl-zfir0141-93-line_count) +- 위치: `abap://ZFIR0141/ZFIR0141#L1688-L1748` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C2` + +#### [aggregation] FI 전표(BKPF) 항목은 현지통화 공급가액(HWBAS)·세액(HWSTE)을 NETWR/MWSBP 로 하여 전표번호 단위로 ALL_ITEMS_ITAB 과 ALL_ITEMS_FI_ITAB 에 COLLECT 하여 세금계산서별 FI 합계를 만든다. + +```abap + 1751| ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'. + 1752| MOVE-CORRESPONDING AUSGLOP_ITAB TO ALL_ITEMS_ITAB. + 1753| MOVE AUSGLOP_ITAB-HWBAS TO ALL_ITEMS_ITAB-NETWR. + 1754| MOVE AUSGLOP_ITAB-HWSTE TO ALL_ITEMS_ITAB-MWSBP. + 1755| + 1756| AT NEW BELNR. + 1757| COLLECT ALL_ITEMS_ITAB. + 1758| ENDAT. + 1759| ENDIF. + 1760| + 1761| * if cleared documents are sd-documents and fi-documents or pure FI-data + 1762| * sum over tax amount and base amount + 1763| + 1764| IF AUSGLOP_ITAB-AWTYP = 'BKPF'. + 1765| MOVE AUSGLOP_ITAB-BUKRS TO ALL_ITEMS_FI_ITAB-BUKRS. + 1766| MOVE AUSGLOP_ITAB-KUNNR TO ALL_ITEMS_FI_ITAB-KUNNR. + 1767| MOVE AUSGLOP_ITAB-STCD TO ALL_ITEMS_FI_ITAB-STCD. + 1768| MOVE AUSGLOP_ITAB-AUGBL TO ALL_ITEMS_FI_ITAB-AUGBL. + 1769| MOVE ALL_ITEMS_ITAB-HWBAS TO ALL_ITEMS_FI_ITAB-NETWR. + 1770| MOVE ALL_ITEMS_ITAB-HWSTE TO ALL_ITEMS_FI_ITAB-MWSBP. + 1771| AT NEW BELNR. + 1772| COLLECT ALL_ITEMS_FI_ITAB. + 1773| ENDAT. + 1774| ENDIF. +``` + +- **EN**: For FI documents, COLLECT tax base and tax amount per document into ALL_ITEMS_ITAB and ALL_ITEMS_FI_ITAB as tax invoice totals. +- SAP 객체: BKPF +- 업무 키워드: FI 합계, 공급가액, 세액, 전표 집계 +- English: FI Document, Tax Base, Tax Amount, COLLECT +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`ALL_ITEMS_FI_ITAB`](#decl-zfir0141-299-all_items_fi_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L1751-L1774` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C3` + +#### [sql_select] 세금계산서 번호가 바뀔 때 CHECK_ITAB 별로 저장된 특별 G/L 지시자(SAVE_UMSKZ)와 다른 FI 라인 수 LINE_COUNT2 를 세고, FI 원천이면 4번째 라인용 MATZEIL4_ITAB 을 만들되 특별 G/L 이 하나면 T074T 의 지시자 텍스트(LTEXT)를, 아니면 TEXT-030 을 품목명으로 넣는다. + +```abap + 1777| AT NEW AUGBL. + 1778| IF AUSGLOP_ITAB-AUGBL NE AUGBL. + 1779| CLEAR CHECK_ITAB. + 1780| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1781| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1782| AND STCD = AUSGLOP_ITAB-STCD + 1783| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1784| + 1785| CHECK_ITAB-LINE_COUNT2 = 0. + 1786| + 1787| LOOP AT AUSGLOP_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1788| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1789| AND STCD = AUSGLOP_ITAB-STCD + 1790| AND AUGBL = AUSGLOP_ITAB-AUGBL + 1791| AND UMSKZ <> CHECK_ITAB-SAVE_UMSKZ + 1792| AND AWTYP = 'BKPF'. + 1793| + 1794| CHECK_ITAB-LINE_COUNT2 = CHECK_ITAB-LINE_COUNT2 + 1. + 1795| ENDLOOP. + 1796| MODIFY CHECK_ITAB. + 1797| ENDLOOP. + 1798| + 1799| * Filling matzeil4_itab for printing the fourth line + 1800| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1801| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1802| AND STCD = AUSGLOP_ITAB-STCD + 1803| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1804| + 1805| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 1806| MOVE AUSGLOP_ITAB-BUKRS TO MATZEIL4_ITAB-BUKRS. + 1807| MOVE AUSGLOP_ITAB-KUNNR TO MATZEIL4_ITAB-KUNNR. + 1808| MOVE AUSGLOP_ITAB-STCD TO MATZEIL4_ITAB-STCD. + 1809| MOVE AUSGLOP_ITAB-AUGBL TO MATZEIL4_ITAB-AUGBL. + 1810| + 1811| * check if a special g_l indicator exists. + 1812| IF CHECK_ITAB-SAVE_UMSKZ <> ' '. + 1813| * if exactly one special g_l indicator + 1814| IF CHECK_ITAB-LINE_COUNT2 = 0. + 1815| SELECT SINGLE * FROM T074T WHERE SPRAS = T001-SPRAS + 1816| * AND koart = bseg-koart + 1817| AND KOART = 'D' + 1818| AND SHBKZ = CHECK_ITAB-SAVE_UMSKZ. + 1819| MOVE T074T-LTEXT TO MATZEIL4_ITAB-MATNR. + 1820| * if more than one special g_l indicator + 1821| ELSE. + 1822| MOVE TEXT-030 TO MATZEIL4_ITAB-MATNR. + 1823| ENDIF. + 1824| ELSE. + 1825| MOVE TEXT-030 TO MATZEIL4_ITAB-MATNR. + 1826| ENDIF. + 1827| *proposed design... + 1828| READ TABLE MATZEIL4_ITAB WITH KEY BUKRS = CHECK_ITAB-BUKRS + 1829| KUNNR = CHECK_ITAB-KUNNR + 1830| AUGBL = CHECK_ITAB-AUGBL. + 1831| IF SY-SUBRC NE 0. + 1832| APPEND MATZEIL4_ITAB. + 1833| ENDIF. + 1834| *end of proposed design. + 1835| ENDIF. + 1836| ENDLOOP. + 1837| ENDIF. + 1838| ENDAT. +``` + +- **EN**: At each new tax invoice, count FI lines with a different special G/L indicator and build MATZEIL4_ITAB for the fourth line using the T074T special G/L text or TEXT-030. +- 테이블(파서): read [T074T](/tables/T074T.md) / write [CHECK_ITAB](/tables/CHECK_ITAB.md) +- SAP 객체: T074T, T001 +- 업무 키워드: 특별 G/L 지시자, 4번째 라인, 지시자 텍스트, 라인 수 +- English: Special G/L Indicator, T074T, Item Line 4 +- 정의부(복사 시 함께 필요): [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`UMSKZ`](#decl-zfir0141-125-umskz), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`T074T`](#decl-zfir0141-50-t074t), [`T001`](#decl-zfir0141-40-t001) +- 위치: `abap://ZFIR0141/ZFIR0141#L1777-L1838` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C4` + +#### [calculation] IT_VBRP 를 자재·전기일로 정렬하고 각 품목(AUSGLOP_MAT_ITAB)에 동일 자재·세금계산서번호의 전기일을 YYYYMMDD 로 세팅한 뒤 세금계산서번호·일자·자재 순으로 정렬한다. + +```abap + 1842| SORT IT_VBRP BY MATNR BUDAT. + 1843| DATA : L_MATNR LIKE VBRP-MATNR. CLEAR L_MATNR. + 1844| * LOOP AT it_vbrp. + 1845| * IF it_vbrp-matnr = l_matnr. + 1846| * DELETE it_vbrp. + 1847| * ENDIF. + 1848| * MOVE it_vbrp-matnr TO l_matnr. + 1849| * ENDLOOP. + 1850| + 1851| + 1852| + 1853| LOOP AT AUSGLOP_MAT_ITAB. + 1854| + 1855| READ TABLE IT_VBRP WITH KEY MATNR = AUSGLOP_MAT_ITAB-MATNR + 1856| AUGBL = AUSGLOP_MAT_ITAB-AUGBL. + 1857| IF SY-SUBRC EQ 0. + 1858| + 1859| MOVE IT_VBRP-BUDAT TO AUSGLOP_MAT_ITAB-YYYYMMDD. + 1860| + 1861| ENDIF. + 1862| MODIFY AUSGLOP_MAT_ITAB. + 1863| CLEAR AUSGLOP_MAT_ITAB. + 1864| ENDLOOP. + 1865| + 1866| + 1867| * SORT ausglop_mat_itab BY augbl yyyymmdd matnr ASCENDING. + 1868| SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING. +``` + +- **EN**: Assign the posting date of the matching VBRP row to each material line as YYYYMMDD and sort AUSGLOP_MAT_ITAB by invoice number, date and material. +- 테이블(파서): read - / write [AUSGLOP_MAT_ITAB](/tables/AUSGLOP_MAT_ITAB.md) +- 업무 키워드: 전기일 매핑, 품목 정렬, 세금계산서 품목 +- English: Posting Date, Sort, Material Line +- 정의부(복사 시 함께 필요): [`IT_VBRP`](#decl-zfir0141-490-it_vbrp), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L1842-L1868` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C5` + +### FORM CHECK_TEXT — `ZFIR0141` L2269-L2357 (89줄) + +*FI 전표의 항목 텍스트(BSEG-SGTXT)를 '자재,단위,수량' 형식으로 파싱하여 SD 빌링처럼 취급할 품목 정보를 AUSGLOP_MAT_ITAB 에 만들고 원천 유형을 VBRK 로 표시한다.* + +> 이 unit 의 조각 2개가 79/89줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 전표(BUKRS/BELNR/GJAHR)의 비어 있지 않은 항목 텍스트 SGTXT 를 BSEG 에서 읽고 FM STRING_SPLIT 을 ',' 구분자로 3번 호출해 자재(MATERIAL)·단위(UNIT)·수량(QTY)을 분리한다. + +```abap + 2275| SELECT SINGLE SGTXT INTO SGTXT FROM BSEG + 2276| WHERE + 2277| BUKRS = AUSGLOP_ITAB-BUKRS + 2278| AND BELNR = AUSGLOP_ITAB-BELNR + 2279| AND GJAHR = AUSGLOP_ITAB-GJAHR + 2280| AND SGTXT NE ' '. + 2281| + 2282| + 2283| WRITE SGTXT LEFT-JUSTIFIED TO SGTXT. + 2284| CALL FUNCTION 'STRING_SPLIT' + 2285| EXPORTING + 2286| DELIMITER = ',' + 2287| STRING = SGTXT + 2288| IMPORTING + 2289| HEAD = MATERIAL + 2290| TAIL = BAL_TEXT + 2291| EXCEPTIONS + 2292| NOT_FOUND = 1 + 2293| NOT_VALID = 2 + 2294| TOO_LONG = 3 + 2295| TOO_SMALL = 4. + 2296| IF SY-SUBRC = 0. + 2297| WRITE BAL_TEXT LEFT-JUSTIFIED TO BAL_TEXT. + 2298| CALL FUNCTION 'STRING_SPLIT' + 2299| EXPORTING + 2300| DELIMITER = ',' + 2301| STRING = BAL_TEXT + 2302| IMPORTING + 2303| HEAD = UNIT + 2304| TAIL = BAL_TEXT + 2305| EXCEPTIONS + 2306| NOT_FOUND = 1 + 2307| NOT_VALID = 2 + 2308| TOO_LONG = 3 + 2309| TOO_SMALL = 4. + 2310| + 2311| IF SY-SUBRC = 0. + 2312| * write bal_text left-justified to bal_text. + 2313| CALL FUNCTION 'STRING_SPLIT' + 2314| EXPORTING + 2315| DELIMITER = ',' + 2316| STRING = BAL_TEXT + 2317| IMPORTING + 2318| HEAD = QTY + 2319| TAIL = BAL_TEXT + 2320| EXCEPTIONS + 2321| NOT_FOUND = 1 + 2322| NOT_VALID = 2 + 2323| TOO_LONG = 3 + 2324| TOO_SMALL = 4. + 2325| +``` + +- **EN**: Read the non-empty line item text SGTXT from BSEG and split it by comma with FM STRING_SPLIT into material, unit and quantity. +- 테이블(파서): read [BSEG](/tables/BSEG.md) / write - +- 호출(파서): STRING_SPLIT, STRING_SPLIT, STRING_SPLIT +- SAP 객체: BSEG, STRING_SPLIT +- 업무 키워드: 전표 항목 텍스트, 자재, 단위, 수량, 문자열 분리 +- English: Line Item Text, BSEG, STRING_SPLIT, Material, Quantity +- 정의부(복사 시 함께 필요): [`SGTXT`](#decl-zfir0141-127-sgtxt), [`BSEG`](#decl-zfir0141-35-bseg), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`MATERIAL`](#decl-zfir0141-2270-material), [`BAL_TEXT`](#decl-zfir0141-128-bal_text), [`UNIT`](#decl-zfir0141-2271-unit), [`QTY`](#decl-zfir0141-2272-qty) +- 위치: `abap://ZFIR0141/ZFIR0141#L2275-L2325` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#CHECK_TEXT#C1` + +#### [calculation] 파싱에 성공하면 해당 항목을 SD 빌링(AWTYP='VBRK', FLAG='X')으로 표시하고 자재·단위·수량(소수 3자리 보정 ×1000)·공급가액(HWBAS)·세액(HWSTE)을 AUSGLOP_MAT_ITAB 에 COLLECT 하며 CHECK_ITAB 의 AWTYP_SD 를 VBRK 로 갱신한다. + +```abap + 2326| IF SY-SUBRC = 0. + 2327| + 2328| WRITE BAL_TEXT LEFT-JUSTIFIED TO BAL_TEXT. + 2329| * ausglop_itab-matnr = material. + 2330| * ausglop_itab-vrkme = unit. + 2331| * ausglop_itab-fkmig = qty. + 2332| AUSGLOP_ITAB-AWTYP = 'VBRK'. + 2333| AUSGLOP_ITAB-FLAG = 'X'. + 2334| MODIFY AUSGLOP_ITAB. + 2335| MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_MAT_ITAB. + 2336| AUSGLOP_MAT_ITAB-MATNR = MATERIAL. + 2337| AUSGLOP_MAT_ITAB-VRKME = UNIT. + 2338| *offset 3 decimal places in domain of fkimg... + 2339| QTY = QTY * 1000. + 2340| AUSGLOP_MAT_ITAB-FKIMG = QTY. + 2341| AUSGLOP_MAT_ITAB-NETWR = AUSGLOP_MAT_ITAB-HWBAS. + 2342| AUSGLOP_MAT_ITAB-MWSBP = AUSGLOP_MAT_ITAB-HWSTE. + 2343| COLLECT AUSGLOP_MAT_ITAB. + 2344| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 2345| AND KUNNR = AUSGLOP_ITAB-KUNNR + 2346| AND STCD = AUSGLOP_ITAB-STCD + 2347| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 2348| + 2349| * check_itab-awtyp_fi = ' ' . + 2350| CHECK_ITAB-AWTYP_SD = 'VBRK'. + 2351| MODIFY CHECK_ITAB. + 2352| ENDLOOP. + 2353| ENDIF. +``` + +- **EN**: On successful parsing, flag the row as SD-type (VBRK), collect material, unit, quantity (scaled by 1000), tax base and tax into AUSGLOP_MAT_ITAB and set AWTYP_SD='VBRK' in CHECK_ITAB. +- 테이블(파서): read - / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md), [CHECK_ITAB](/tables/CHECK_ITAB.md) +- SAP 객체: VBRK +- 업무 키워드: 품목 정보 생성, SD 빌링 취급, 수량 보정, 공급가액, 세액 +- English: Material Line, Billing Type, Quantity, COLLECT +- 정의부(복사 시 함께 필요): [`BAL_TEXT`](#decl-zfir0141-128-bal_text), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`MATERIAL`](#decl-zfir0141-2270-material), [`UNIT`](#decl-zfir0141-2271-unit), [`QTY`](#decl-zfir0141-2272-qty), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L2326-L2353` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#CHECK_TEXT#C2` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFIR0141` L4557-L4603 (47줄) + +*SD 품목의 외화 공급가액·세액을 전표의 환율 정보로 현지통화(KRW)로 환산한다.* + +> 이 unit 의 조각 1개가 43/47줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 판매 통화(WAERK)의 품목 공급가액(NETWR)과 세액(MWSBP)을 환율일(KURRF_DAT)·환율(KURRF)·환율유형(KURST) 기준으로 FM CONVERT_TO_LOCAL_CURRENCY 로 현지통화(HWAER)로 환산하고 실패 시 E013 오류를 낸다. + +```abap + 4559| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 4560| EXPORTING + 4561| CLIENT = SY-MANDT + 4562| DATE = AUSGLOP_ITAB-KURRF_DAT + 4563| FOREIGN_AMOUNT = AUSGLOP_MAT_ITAB-NETWR + 4564| FOREIGN_CURRENCY = AUSGLOP_ITAB-WAERK + 4565| LOCAL_CURRENCY = AUSGLOP_ITAB-HWAER + 4566| RATE = AUSGLOP_ITAB-KURRF + 4567| TYPE_OF_RATE = AUSGLOP_ITAB-KURST + 4568| IMPORTING + 4569| LOCAL_AMOUNT = AUSGLOP_MAT_ITAB-NETWR + 4570| EXCEPTIONS + 4571| NO_RATE_FOUND = 1 + 4572| OVERFLOW = 2 + 4573| NO_FACTORS_FOUND = 3 + 4574| NO_SPREAD_FOUND = 4 + 4575| DERIVED_2_TIMES = 5 + 4576| OTHERS = 6. + 4577| IF SY-SUBRC <> 0. + 4578| MESSAGE E013. + 4579| ENDIF. + 4580| + 4581| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 4582| EXPORTING + 4583| CLIENT = SY-MANDT + 4584| DATE = AUSGLOP_ITAB-KURRF_DAT + 4585| FOREIGN_AMOUNT = AUSGLOP_MAT_ITAB-MWSBP + 4586| FOREIGN_CURRENCY = AUSGLOP_ITAB-WAERK + 4587| LOCAL_CURRENCY = AUSGLOP_ITAB-HWAER + 4588| RATE = AUSGLOP_ITAB-KURRF + 4589| TYPE_OF_RATE = AUSGLOP_ITAB-KURST + 4590| IMPORTING + 4591| LOCAL_AMOUNT = AUSGLOP_MAT_ITAB-MWSBP + 4592| EXCEPTIONS + 4593| NO_RATE_FOUND = 1 + 4594| OVERFLOW = 2 + 4595| NO_FACTORS_FOUND = 3 + 4596| NO_SPREAD_FOUND = 4 + 4597| DERIVED_2_TIMES = 5 + 4598| OTHERS = 6. + 4599| IF SY-SUBRC <> 0. + 4600| MESSAGE E013. + 4601| ENDIF. +``` + +- **EN**: Convert the item net value and tax amount from the sales currency to the local currency with FM CONVERT_TO_LOCAL_CURRENCY using the document exchange rate, date and rate type; raise error E013 on failure. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY, CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY +- 업무 키워드: 환율 환산, 현지통화, 외화, 공급가액, 세액 +- English: Currency Conversion, Local Currency, Exchange Rate, Rate Type +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L4559-L4601` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM GET_TOTALS — `ZFIR0141` L1880-L1916 (37줄) + +*세금계산서별 FI 세금 합계(HWBAS/HWSTE)와 SD 품목 합계(NETWR/MWSBP)를 비교하여 차이(DELTAN/DELTAM)를 기록하고 SD 합계를 FI 세금 합계로 맞춘다.* + +> 이 unit 의 조각 1개가 32/37줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 세금계산서(BUKRS/KUNNR/STCD/AUGBL)별로 선택된 AUSGLOP_ITAB 의 공급가액·세액을 SUM_TAXES 에 COLLECT 하고, SD 품목 합계(NETWR+MWSBP)와 다르면 차액을 DELTAN/DELTAM 에 저장한 뒤 ALL_ITEMS_ITAB 의 NETWR/MWSBP 를 FI 세금 합계로 대체하여 환산 오차를 보정한다. + +```abap + 1882| LOOP AT ALL_ITEMS_ITAB. + 1883| LOOP AT AUSGLOP_ITAB WHERE BUKRS = ALL_ITEMS_ITAB-BUKRS + 1884| AND KUNNR = ALL_ITEMS_ITAB-KUNNR + 1885| AND STCD = ALL_ITEMS_ITAB-STCD + 1886| AND AUGBL = ALL_ITEMS_ITAB-AUGBL. + 1887| IF PROG_NAME = ' '. + 1888| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 1889| ENDIF. + 1890| + 1891| MOVE-CORRESPONDING AUSGLOP_ITAB TO SUM_TAXES. + 1892| COLLECT SUM_TAXES. + 1893| ENDLOOP. + 1894| + 1895| LOOP AT SUM_TAXES WHERE BUKRS = ALL_ITEMS_ITAB-BUKRS + 1896| AND KUNNR = ALL_ITEMS_ITAB-KUNNR + 1897| AND STCD = ALL_ITEMS_ITAB-STCD + 1898| AND AUGBL = ALL_ITEMS_ITAB-AUGBL. + 1899| + 1900| VALUE1 = SUM_TAXES-HWBAS + SUM_TAXES-HWSTE. + 1901| VALUE2 = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 1902| IF ( VALUE1 <> VALUE2 ). + 1903| ALL_ITEMS_ITAB-DELTAN = + 1904| SUM_TAXES-HWBAS - ALL_ITEMS_ITAB-NETWR. + 1905| ALL_ITEMS_ITAB-DELTAM = + 1906| SUM_TAXES-HWSTE - ALL_ITEMS_ITAB-MWSBP. + 1907| + 1908| ALL_ITEMS_ITAB-NETWR = SUM_TAXES-HWBAS. + 1909| ALL_ITEMS_ITAB-MWSBP = SUM_TAXES-HWSTE. + 1910| ENDIF. + 1911| MODIFY ALL_ITEMS_ITAB. + 1912| ENDLOOP. + 1913| ENDLOOP. +``` + +- **EN**: Collect FI tax base and tax per tax invoice into SUM_TAXES, compare with the SD item totals, store the differences and align ALL_ITEMS_ITAB amounts with the FI totals to correct rounding/conversion errors. +- 테이블(파서): read - / write [ALL_ITEMS_ITAB](/tables/ALL_ITEMS_ITAB.md) +- 업무 키워드: 합계 검증, 공급가액 차이, 세액 차이, 환산 오차 보정, 세금계산서 합계 +- English: Total Reconciliation, Tax Base, Tax Amount, Delta, COLLECT +- 정의부(복사 시 함께 필요): [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SUM_TAXES`](#decl-zfir0141-310-sum_taxes), [`VALUE1`](#decl-zfir0141-121-value1), [`VALUE2`](#decl-zfir0141-122-value2) +- 위치: `abap://ZFIR0141/ZFIR0141#L1882-L1913` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#GET_TOTALS#C1` + +### FORM USER_EXIT3 — `ZFIR0141` L2865-L2893 (29줄) + +*세금계산서 출력 직전 모든 출력 내부테이블과 옵션을 한국 세금계산서 리스트 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 에 넘겨 고객사 로직으로 가공한다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 영수/청구·인쇄옵션·양식 종류·품목 라인 MATZEIL1~4·SAPscript 양식명·시뮬레이션·본사 사업장과 AUSGLOP_ITAB 등 출력 테이블들을 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 로 전달해 세금계산서 출력 데이터를 고객사 요구에 맞게 수정할 수 있게 한다. + +```abap + 2867| CALL FUNCTION 'KR_USER_EXIT_LIST_TAXINVOICE' + 2868| EXPORTING + 2869| YRECEIPT = RECEIPT + 2870| YCHK_PRTI = CHK_PRTI + 2871| YSTA1 = STA1 + 2872| ZMATZEIL1 = MATZEIL1 + 2873| ZMATZEIL2 = MATZEIL2 + 2874| ZMATZEIL3 = MATZEIL3 + 2875| ZMATZEIL4 = MATZEIL4 + 2876| YPROG_NAME = PROG_NAME + 2877| SFORM_NAME = SAP_FORM "Note 975866 + 2878| YSIM = SIM "Note 1019954 + 2879| YBUPLA_HQ = BUPLA_HQ + 2880| TABLES + 2881| ZAUSGLOP_ITAB = AUSGLOP_ITAB + 2882| ZALL_ITEMS_ITAB = ALL_ITEMS_ITAB + 2883| ZAUSGLOP_MAT_ITAB = AUSGLOP_MAT_ITAB + 2884| ZADDRESS_ITAB = ADDRESS_ITAB + 2885| ZBUPLA_ADRESSE = BUPLA_ADRESSE + 2886| ZCHECK_ITAB = CHECK_ITAB + 2887| ZALL_MAT_ITAB = ALL_MAT_ITAB + 2888| ZMATZEIL4_ITAB = MATZEIL4_ITAB + 2889| ZALL_ITEMS_SD_ITAB = ALL_ITEMS_SD_ITAB. +``` + +- **EN**: Call user exit FM KR_USER_EXIT_LIST_TAXINVOICE with print options, item lines, form name and all output tables so customer-specific tax invoice adjustments can be applied. +- 호출(파서): KR_USER_EXIT_LIST_TAXINVOICE +- SAP 객체: KR_USER_EXIT_LIST_TAXINVOICE +- 업무 키워드: User Exit, 세금계산서 출력, 고객사 로직, 출력 테이블 +- English: User Exit, Tax Invoice, Print Option, SAPscript Form +- 정의부(복사 시 함께 필요): [`RECEIPT`](#decl-zfir0141-700-receipt), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`STA1`](#decl-zfir0141-655-sta1), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SAP_FORM`](#decl-zfir0141-132-sap_form), [`SIM`](#decl-zfir0141-130-sim), [`BUPLA_HQ`](#decl-zfir0141-137-bupla_hq) 외 9건 +- 위치: `abap://ZFIR0141/ZFIR0141#L2867-L2889` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#USER_EXIT3#C1` + +### FORM LIST_OUTPUT — `ZFIR0141` L2902-L2937 (36줄) + +*시뮬레이션이거나 직접 실행이면 세금계산서를 WRITE 리스트로 인쇄(PRINT_INVOICES)하고 인쇄 파라미터를 설정하며, 그 외에는 스마트빌 전송(SMARTBILL_TRANS)으로 분기한다.* + +> 이 unit 의 조각 1개가 26/36줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 시뮬레이션(SIM='X') 또는 직접 실행이면 SALL/DSALL/SAVE 를 제외한 PF-STATUS LIST1 을 설정하고 PRINT_INVOICES 로 세금계산서를 인쇄한 뒤 GET_PRINT_PARAMETERS 로 X_90_120 레이아웃 인쇄 파라미터를 무대화 설정하며, 그렇지 않으면 SMARTBILL_TRANS 로 전자세금계산서를 전송한다. + +```abap + 2906| IF SIM EQ 'X' OR PROG_NAME = ' '. + 2907| * SET PF-STATUS 'LIST1'. + 2908| PERFORM EXCL_FCODE01 USING 'SALL' 'DSALL' 'SAVE'. + 2909| SET PF-STATUS 'LIST1' EXCLUDING IT_FCODE. + 2910| + 2911| * 세금계산서 인쇄 + 2912| PERFORM PRINT_INVOICES. + 2913| + 2914| CALL FUNCTION 'GET_PRINT_PARAMETERS' + 2915| EXPORTING + 2916| IN_PARAMETERS = PRIPAR + 2917| LAYOUT = 'X_90_120' + 2918| LINE_COUNT = 90 + 2919| LINE_SIZE = 120 + 2920| NO_DIALOG = 'X' + 2921| IMPORTING + 2922| OUT_PARAMETERS = PRIPAR + 2923| VALID = VAL. + 2924| + 2925| IF SY-SUBRC <> 0. + 2926| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 2927| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 2928| ENDIF. + 2929| ELSE. + 2930| PERFORM SMARTBILL_TRANS. + 2931| ENDIF. +``` + +- **EN**: In simulation or standalone mode set PF-STATUS LIST1, print tax invoices and fetch print parameters (layout X_90_120) via GET_PRINT_PARAMETERS; otherwise transmit to Smartbill via SMARTBILL_TRANS. +- 호출(파서): EXCL_FCODE01, PRINT_INVOICES, GET_PRINT_PARAMETERS, SMARTBILL_TRANS +- SAP 객체: GET_PRINT_PARAMETERS +- 업무 키워드: 시뮬레이션, 세금계산서 인쇄, 인쇄 파라미터, 스마트빌 전송 +- English: Simulation, Print Parameters, GET_PRINT_PARAMETERS, Smartbill +- 정의부(복사 시 함께 필요): [`SIM`](#decl-zfir0141-130-sim), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`IT_FCODE`](#decl-zfir0141-147-it_fcode), [`PRIPAR`](#decl-zfir0141-479-pripar), [`VAL`](#decl-zfir0141-480-val) +- 위치: `abap://ZFIR0141/ZFIR0141#L2906-L2931` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#LIST_OUTPUT#C1` + +### FORM PRINT_INVOICES — `ZFIR0141` L3316-L3532 (217줄) + +*선택된 세금계산서(AUGBL)별로 공급자용·공급받는자용 2부를 WRITE 리스트 형식으로 인쇄하며 제목·번호·거래처·합계·품목·영수/청구 구분을 순서대로 출력한다.* + +> 이 unit 의 조각 5개가 181/217줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 출력 대상을 고객·사업장·세금계산서번호 순으로 정렬하고 직접 실행(PROG_NAME 공백)이면 체크된 항목만 인쇄 대상으로 한다. + +```abap + 3327| SORT AUSGLOP_ITAB BY KUNNR BUPLA AUGBL. + 3328| + 3329| LOOP AT AUSGLOP_ITAB. + 3330| + 3331| + 3332| + 3333| IF PROG_NAME = ' '. + 3334| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 3335| ENDIF. +``` + +- **EN**: Sort output rows by customer, business place and tax invoice number and restrict to checked rows when run standalone. +- 업무 키워드: 정렬, 선택 항목, 인쇄 대상 +- English: Sort, Selection, Tax Invoice +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BUPLA`](#decl-zfir0141-126-bupla), [`AUGBL`](#decl-zfir0141-461-augbl), [`PROG_NAME`](#decl-zfir0141-462-prog_name) +- 위치: `abap://ZFIR0141/ZFIR0141#L3327-L3335` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C1` + +#### [aggregation] 세금계산서 번호가 바뀔 때 해당 번호의 전표를 DOC_CNT_ITAB 에 모아 전기일·전표번호로 정렬하고 마지막 전표를 읽은 뒤 발행일자를 입력 SBLDAT 우선(없으면 반제일 AUGDT)으로 정해 연·월·일(YY1/MM1/DD1)을 세팅한다. + +```abap + 3347| AT NEW AUGBL. + 3348| *추가로직 + 3349| CLEAR : YY1 , MM1 , DD1. + 3350| CLEAR L_LINES. + 3351| + 3352| CLEAR DOC_CNT_ITAB. + 3353| REFRESH DOC_CNT_ITAB. + 3354| + 3355| LOOP AT AUSGLOP_ITAB WHERE AUGBL = AUSGLOP_ITAB-AUGBL. + 3356| + 3357| MOVE AUSGLOP_ITAB TO DOC_CNT_ITAB. + 3358| APPEND DOC_CNT_ITAB. + 3359| ENDLOOP. + 3360| + 3361| + 3362| SORT DOC_CNT_ITAB BY BUDAT BELNR . + 3363| + 3364| DESCRIBE TABLE DOC_CNT_ITAB LINES L_LINES. + 3365| + 3366| READ TABLE DOC_CNT_ITAB INDEX L_LINES. + 3367| + 3368| * 세금계산서 발행일자 + 3369| IF SBLDAT IS INITIAL. + 3370| DOC_CNT_ITAB-BUDAT = AUSGLOP_ITAB-AUGDT. + 3371| ELSE. + 3372| DOC_CNT_ITAB-BUDAT = SBLDAT. + 3373| ENDIF. + 3374| + 3375| * IF SN1OP EQ 'X'. " 통합 세금계산서 발행일 경우 + 3376| ** 전기일자의 말일. + 3377| * CALL FUNCTION 'LAST_DAY_OF_MONTHS' + 3378| * EXPORTING + 3379| * DAY_IN = DOC_CNT_ITAB-BUDAT + 3380| * IMPORTING + 3381| * LAST_DAY_OF_MONTH = DOC_CNT_ITAB-BUDAT + 3382| * EXCEPTIONS + 3383| * DAY_IN_NO_DATE = 1 + 3384| * OTHERS = 2. + 3385| * ENDIF. + 3386| + 3387| YY1 = DOC_CNT_ITAB-BUDAT+2(2). + 3388| MM1 = DOC_CNT_ITAB-BUDAT+4(2). + 3389| DD1 = DOC_CNT_ITAB-BUDAT+6(2). +``` + +- **EN**: At each new tax invoice number, collect its documents, and derive the issue date (SBLDAT or clearing date AUGDT) into year/month/day fields. +- 업무 키워드: 세금계산서 발행일, 반제일, 전표 집계, AT NEW +- English: Issue Date, Clearing Date, Document Count +- 정의부(복사 시 함께 필요): [`AUGBL`](#decl-zfir0141-461-augbl), [`YY1`](#decl-zfir0141-115-yy1), [`MM1`](#decl-zfir0141-115-mm1), [`DD1`](#decl-zfir0141-115-dd1), [`L_LINES`](#decl-zfir0141-114-l_lines), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`DOC_CNT_ITAB`](#decl-zfir0141-232-doc_cnt_itab), [`SBLDAT`](#decl-zfir0141-638-sbldat) +- 위치: `abap://ZFIR0141/ZFIR0141#L3347-L3389` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C2` + +#### [output] 공급자용·공급받는자용 2부(COPY 1,2)를 WHILE 로 반복하며 판매 품목 수(LINE_COUNT)를 세고 양식 상단 테두리·제목(TAX_INVOICE_TITLE_CHANGE)·세금계산서 번호 칸(TRUNCATE_TAXNUM)을 WRITE 한다. + +```abap + 3394| IF AUSGLOP_ITAB-AUGBL NE AUGBL. + 3395| + 3396| + 3397| CLEAR COPY. + 3398| WHILE COPY < 2. + 3399| COPY = COPY + 1. + 3400| READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX. + 3401| CLEAR AUSGLOP_MAT_ITAB. + 3402| CLEAR ALL_ITEMS_ITAB. + 3403| + 3404| * number of item lines in ausglop_mat_itab --> number of sold + 3405| * materials + 3406| LINE_COUNT = 0. + 3407| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 3408| AND KUNNR = AUSGLOP_ITAB-KUNNR + 3409| AND STCD = AUSGLOP_ITAB-STCD + 3410| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 3411| LINE_COUNT = LINE_COUNT + 1. + 3412| ENDLOOP. + 3413| + 3414| * new-page. + 3415| WRITE:/ TEXT-CA1, 117 TEXT-CA2. + 3416| WRITE:/ TEXT-CA2, + 3417| 85 TEXT-WA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3418| 97 TEXT-CA2, + 3419| 110 TEXT-CA2, + 3420| 114 TEXT-WA2 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3421| 117 TEXT-CA2. + 3422| WRITE:/ TEXT-CA2, + 3423| 97 TEXT-CA4, + 3424| 117 TEXT-CA2. + 3425| * start of tax invoice title change + 3426| * create text elements w11 and w12 for this change + 3427| PERFORM TAX_INVOICE_TITLE_CHANGE. + 3428| * end of tax invoice title change + 3429| + 3430| PERFORM TRUNCATE_TAXNUM. + 3431| + 3432| WRITE:/ TEXT-CA2, + 3433| 81 TEXT-WA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3434| 97 TAX_NUM, 117 TEXT-CA2. + 3435| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Loop twice for supplier and buyer copies, count material lines and print the form header with title and boxed tax invoice number. +- 호출(파서): TAX_INVOICE_TITLE_CHANGE, TRUNCATE_TAXNUM +- 업무 키워드: 2부 인쇄, 공급자용, 공급받는자용, 세금계산서 번호, 제목 +- English: Supplier Copy, Buyer Copy, Tax Invoice Number, Title +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`COPY`](#decl-zfir0141-464-copy), [`SEL_INDEX`](#decl-zfir0141-96-sel_index), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`TAX_NUM`](#decl-zfir0141-475-tax_num) +- 위치: `abap://ZFIR0141/ZFIR0141#L3394-L3435` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C3` + +#### [output] 고객 유형별 파트1(KIND_OF_CUSTOMERS)·합계 라인(PRINT_SUM_LINE)·품목 라인 채우기(FILL_ITEM_TABLES) 후 종사업장 표시, 전표 건수(G_LINES)와 세율 플래그(FL_TAX_RAT)에 따른 비고 텍스트(TEXT-001/002/003), 공급가액·세액 합계(FILL_AMOUNT)를 WRITE 한다. + +```abap + 3437| WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR. + 3438| WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH. + 3439| WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY. + 3440| + 3441| * 고객종류에 따라(On-Time, Master) + 3442| PERFORM KIND_OF_CUSTOMERS. + 3443| + 3444| *----------------------------------------------------------------------* + 3445| * print total amount and total tax amount in appropriate cases on the + 3446| * tax invoice + 3447| *----------------------------------------------------------------------* + 3448| PERFORM PRINT_SUM_LINE. + 3449| + 3450| *----------------------------------------------------------------------* + 3451| * Print items + 3452| *----------------------------------------------------------------------* + 3453| + 3454| * Item라인에 보여주기위한 테이블(matzeil1,matzeil2,matzeil3,matzeil4)을 + 3455| * 채운다. + 3456| PERFORM FILL_ITEM_TABLES. + 3457| + 3458| * 년월일, 비고, Item공급가액 합, 세액합. + 3459| WRITE:/ TEXT-CA2, + 3460| 2 TEXT-YA3 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3461| 58 TEXT-CA2, 117 TEXT-CA2, + 3462| + 3463| 60 '종사업장 :', + 3464| 71 L_STATE_INSC. + 3465| + 3466| + 3467| * 비고 + 3468| IF G_LINES > 1 AND FL_TAX_RAT EQ '0'. + 3469| WRITE:/ TEXT-C10, + 3470| 58 TEXT-CA2, + 3471| 60 TEXT-001, + 3472| 117 TEXT-CA2. + 3473| ELSEIF G_LINES EQ 1 AND FL_TAX_RAT EQ '0'. + 3474| WRITE:/ TEXT-C10, + 3475| 58 TEXT-CA2, + 3476| 60 TEXT-003, + 3477| 117 TEXT-CA2. + 3478| ELSEIF G_LINES > 1 AND FL_TAX_RAT EQ '1'. + 3479| WRITE:/ TEXT-C10, + 3480| 58 TEXT-CA2, + 3481| 60 TEXT-002, + 3482| 117 TEXT-CA2. + 3483| ELSE. + 3484| WRITE:/ TEXT-C10, + 3485| 58 TEXT-CA2, + 3486| 117 TEXT-CA2. + 3487| ENDIF. + 3488| + 3489| * 공급가액,세액 합계 + 3490| PERFORM FILL_AMOUNT USING FELD1A FELD1B. + 3491| + 3492| * 내역 (Item Print). + 3493| WRITE:/ TEXT-CA2, + 3494| 2 TEXT-YA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3495| 117 TEXT-CA2. + 3496| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print part 1 by customer type, the sum line, the remark text chosen by document count and tax rate flag, and the boxed tax base/tax amount totals. +- 호출(파서): KIND_OF_CUSTOMERS, PRINT_SUM_LINE, FILL_ITEM_TABLES, FILL_AMOUNT +- 업무 키워드: 파트1, 합계 라인, 비고, 세율, 공급가액 합계, 세액 합계, 종사업장 +- English: Sum Line, Remark, Tax Rate, Tax Base, Business Place +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BYEAR`](#decl-zfir0141-117-byear), [`BMONTH`](#decl-zfir0141-118-bmonth), [`BDAY`](#decl-zfir0141-119-bday), [`L_STATE_INSC`](#decl-zfir0141-134-l_state_insc), [`G_LINES`](#decl-zfir0141-487-g_lines), [`FL_TAX_RAT`](#decl-zfir0141-488-fl_tax_rat), [`FELD1A`](#decl-zfir0141-101-feld1a), [`FELD1B`](#decl-zfir0141-104-feld1b) +- 위치: `abap://ZFIR0141/ZFIR0141#L3437-L3496` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C4` + +#### [output] 원천 유형(VBRK=SD 빌링/BKPF=FI 전표)에 따라 WRITE_ITEM_SD 또는 WRITE_ITEM_FI 로 품목 4줄을 인쇄하고 영수(RECEIPT='X')/청구 구분에 따라 CHECK_RECEIPT/CHECK_BILLING 으로 하단을 출력한 뒤 NEW-PAGE 한다. + +```abap + 3498| IF AUSGLOP_ITAB-AWTYP = 'VBRK'. + 3499| PERFORM WRITE_ITEM_SD USING MATZEIL1. + 3500| PERFORM WRITE_ITEM_SD USING MATZEIL2. + 3501| PERFORM WRITE_ITEM_SD USING MATZEIL3. + 3502| PERFORM WRITE_ITEM_SD USING MATZEIL4. + 3503| ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'. + 3504| PERFORM WRITE_ITEM_FI USING MATZEIL1. + 3505| PERFORM WRITE_ITEM_FI USING MATZEIL2. + 3506| PERFORM WRITE_ITEM_FI USING MATZEIL3. + 3507| PERFORM WRITE_ITEM_FI USING MATZEIL4. + 3508| * PERFORM write_lines_fi. + 3509| ENDIF. + 3510| + 3511| IF RECEIPT = 'X'. + 3512| PERFORM CHECK_RECEIPT. + 3513| ELSE. + 3514| PERFORM CHECK_BILLING. + 3515| ENDIF. + 3516| DO 2 TIMES. + 3517| WRITE: /. + 3518| ENDDO. + 3519| WRITE : / TEXT-CA1. + 3520| DO 2 TIMES. + 3521| WRITE: /. + 3522| ENDDO. + 3523| ENDWHILE. + 3524| NEW-PAGE. +``` + +- **EN**: Print four item lines via the SD or FI routine depending on the reference type, then the receipt or billing footer, and start a new page. +- 호출(파서): WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_FI, WRITE_ITEM_FI, WRITE_ITEM_FI, WRITE_ITEM_FI, CHECK_RECEIPT, CHECK_BILLING +- SAP 객체: VBRK, BKPF +- 업무 키워드: 품목 라인 인쇄, 영수, 청구, SD 빌링, FI 전표, 새 페이지 +- English: Item Line, Receipt, Billing, Billing Document, FI Document +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`RECEIPT`](#decl-zfir0141-700-receipt) +- 위치: `abap://ZFIR0141/ZFIR0141#L3498-L3524` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C5` + +### FORM TAX_INVOICE_TITLE_CHANGE — `ZFIR0141` L3905-L3961 (57줄) + +*세금계산서 제목 라인을 부수(COPY 1=공급자용, 2=공급받는자용)와 양식 종류(STA1 일반세금계산서/STA2 세금계산서)에 따라 다른 텍스트로 인쇄하고 시뮬레이션이면 표시를 덧붙인다.* + +> 이 unit 의 조각 1개가 52/57줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] COPY(공급자용/공급받는자용)와 STA1/STA2(일반세금계산서/세금계산서) 조합에 따라 제목 TEXT-WA3/W11/W10/W12 를 WRITE 하고 시뮬레이션(SIM='X')이면 TEXT-W17 강조 표시를 추가한 뒤 TEXT-CA7 을 우측에 출력한다. + +```abap + 3908| IF COPY = 1 AND STA1 = 'X'. + 3909| WRITE:/ TEXT-CA2, + 3910| 41 TEXT-WA3 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3911| 117 TEXT-CA2. + 3912| + 3913| IF SIM = 'X'. + 3914| WRITE:/ TEXT-CA2, + 3915| 41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON, + 3916| 117 TEXT-CA2. + 3917| ENDIF. + 3918| + 3919| WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2. + 3920| * 공급자용(세금계산서) + 3921| ELSEIF COPY = 1 AND STA2 = 'X'. + 3922| WRITE:/ TEXT-CA2, + 3923| 41 TEXT-W11 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3924| 117 TEXT-CA2. + 3925| IF SIM = 'X'. + 3926| WRITE: / TEXT-CA2, + 3927| 41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON, + 3928| 117 TEXT-CA2. + 3929| ENDIF. + 3930| + 3931| WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2. + 3932| * 공급받는자용(일반세금계산서) + 3933| ELSEIF COPY = 2 AND STA1 = 'X'. + 3934| WRITE:/ TEXT-CA2, + 3935| 41 TEXT-W10 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3936| 117 TEXT-CA2. + 3937| + 3938| IF SIM = 'X'. + 3939| WRITE:/ TEXT-CA2, + 3940| 41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON, + 3941| 117 TEXT-CA2. + 3942| ENDIF. + 3943| + 3944| WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2. + 3945| * 공급받는자용(세금계산서) + 3946| ELSEIF COPY = 2 AND STA2 = 'X'. + 3947| WRITE:/ TEXT-CA2, + 3948| 41 TEXT-W12 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3949| 117 TEXT-CA2. + 3950| + 3951| IF SIM = 'X'. + 3952| WRITE:/ TEXT-CA2, + 3953| 41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON, + 3954| 117 TEXT-CA2. + 3955| ENDIF. + 3956| + 3957| WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2. + 3958| + 3959| ENDIF. +``` + +- **EN**: Print the tax invoice title text depending on copy (supplier/buyer) and form type (general tax invoice/tax invoice), adding a simulation marker when SIM='X'. +- 업무 키워드: 세금계산서 제목, 공급자용, 공급받는자용, 일반세금계산서, 시뮬레이션 +- English: Tax Invoice, Title, Supplier Copy, Buyer Copy, Simulation +- 정의부(복사 시 함께 필요): [`COPY`](#decl-zfir0141-464-copy), [`STA1`](#decl-zfir0141-655-sta1), [`SIM`](#decl-zfir0141-130-sim), [`STA2`](#decl-zfir0141-657-sta2) +- 위치: `abap://ZFIR0141/ZFIR0141#L3908-L3959` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#TAX_INVOICE_TITLE_CHANGE#C1` + +### FORM TRUNCATE_TAXNUM — `ZFIR0141` L2946-L2964 (19줄) + +*세금계산서 번호(AUGBL)를 10자리로 편집해 세금계산서 양식의 번호란 자릿수 칸(TAX_NUM)에 한 자리씩 배치한다.* + +> 이 unit 의 조각 1개가 14/19줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 반제전표번호 기반 세금계산서 번호를 EDIT MASK 로 좌측 정렬한 뒤 각 자리를 2칸 간격의 TAX_NUM 위치에 WRITE 하여 세금계산서 일련번호 칸 형식으로 변환한다. + +```abap + 2949| MOVE AUSGLOP_ITAB-AUGBL TO TAX_NO. + 2950| WRITE TAX_NO TO TAX_INV_NO USING EDIT MASK 'LL__________'. + 2951| *WRITE TAX_INV_NO TO TAX_INV_NO USING EDIT MASK 'RR__________'. + 2952| + 2953| WRITE TAX_INV_NO TO TAX_NUM+1(1). + 2954| WRITE TAX_INV_NO+1 TO TAX_NUM+3(1). + 2955| WRITE TAX_INV_NO+2 TO TAX_NUM+5(1). + 2956| WRITE TAX_INV_NO+3 TO TAX_NUM+7(1). + 2957| WRITE TAX_INV_NO+4 TO TAX_NUM+9(1). + 2958| WRITE TAX_INV_NO+5 TO TAX_NUM+11(1). + 2959| WRITE TAX_INV_NO+6 TO TAX_NUM+13(1). + 2960| WRITE TAX_INV_NO+7 TO TAX_NUM+15(1). + 2961| WRITE TAX_INV_NO+8 TO TAX_NUM+17(1). + 2962| WRITE TAX_INV_NO+9 TO TAX_NUM+19(1). +``` + +- **EN**: Format the tax invoice number (clearing document AUGBL) and spread its digits into the boxed serial number field TAX_NUM of the form. +- 업무 키워드: 세금계산서 번호, 일련번호 칸, 자릿수 배치 +- English: Tax Invoice Number, Digit Boxes, EDIT MASK +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`TAX_NO`](#decl-zfir0141-473-tax_no), [`TAX_INV_NO`](#decl-zfir0141-474-tax_inv_no), [`TAX_NUM`](#decl-zfir0141-475-tax_num) +- 위치: `abap://ZFIR0141/ZFIR0141#L2949-L2962` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#TRUNCATE_TAXNUM#C1` + +### FORM KIND_OF_CUSTOMERS — `ZFIR0141` L3970-L4020 (51줄) + +*고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 세금계산서 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1/1-2 로 인쇄한다.* + +> 이 unit 의 조각 2개가 44/51줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 일회성 고객(XCPDK='X')이면 고객번호·사업자번호로 ADDRESS_ITAB 을 READ 하고 사업장·세금계산서번호에 해당하는 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1 로 공급자/공급받는자 정보를 인쇄한다. + +```abap + 3974| IF AUSGLOP_ITAB-XCPDK = 'X'. + 3975| + 3976| READ TABLE ADDRESS_ITAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR + 3977| STCD = AUSGLOP_ITAB-STCD. + 3978| + 3979| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 3980| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 3981| * Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고) + 3982| PERFORM WRITE_PART1-1. + 3983| IF SY-SUBRC = 0. + 3984| EXIT. + 3985| ENDIF. + 3986| ENDLOOP. +``` + +- **EN**: For one-time (CPD) customers, read the address by customer and tax number, find the business place address and print part 1 via WRITE_PART1-1. +- 호출(파서): WRITE_PART1-1 +- 업무 키워드: 일회성 고객, 사업장 주소, 공급받는자, 세금계산서 파트1 +- English: One-Time Customer, Business Place, Address, Tax Invoice +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L3974-L3986` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS#C1` + +#### [control_flow] 마스터 고객이면 KUNNR, 지점 고객이면 FILKD 기준으로 ADDRESS_ITAB 을 LOOP 하고 세금계산서 인쇄 모드(CHK_PRTI)에서 BUPLA_ADRESSE 를 찾아 WRITE_PART1-2 로 파트1을 인쇄한다(지점 고객 분기는 출력 호출이 비어 있음). + +```abap + 3988| ELSE. + 3989| IF AUSGLOP_ITAB-FILKD = ' '. + 3990| + 3991| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-KUNNR. + 3992| + 3993| IF CHK_PRTI = 'X'. + 3994| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 3995| AND AUGBL = AUSGLOP_ITAB-AUGBL . + 3996| + 3997| * Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고) + 3998| PERFORM WRITE_PART1-2. + 3999| IF SY-SUBRC = 0. + 4000| EXIT. + 4001| ENDIF. + 4002| ENDLOOP. + 4003| ENDIF. + 4004| ENDLOOP. + 4005| ELSE. + 4006| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-FILKD. + 4007| IF CHK_PRTI = 'X'. + 4008| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 4009| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4010| IF SY-SUBRC = 0. + 4011| EXIT. + 4012| ENDIF. + 4013| + 4014| ENDLOOP. + 4015| ENDIF. + 4016| ENDLOOP. + 4017| ENDIF. + 4018| ENDIF. +``` + +- **EN**: For master customers (by KUNNR) or branch customers (by FILKD), loop the address and business place tables and print part 1 via WRITE_PART1-2. +- 호출(파서): WRITE_PART1-2 +- 업무 키워드: 마스터 고객, 지점 고객, 사업장 주소, 파트1 인쇄 +- English: Customer Master, Branch, Business Place, Tax Invoice +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L3988-L4018` · confidence 0.75 · `ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS#C2` + +### FORM WRITE_PART1-1 — `ZFIR0141` L3645-L3764 (120줄) + +*세금계산서 파트1(공급자 보관용 1번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.* + +> 이 unit 의 조각 2개가 114/120줄(95%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] FILL_VAT_NUMBER 로 공급자(사업장 STCD2)와 공급받는자(고객 STCD2)의 사업자등록번호를 자릿수 칸에 인쇄하고 사업장·고객 주소 문자열(ADDRESS_BUPLA/ADDRESS_COMP)을 만든다. + +```abap + 3647| PERFORM FILL_VAT_NUMBER USING BUPLA_ADRESSE-STCD2 + 3648| ADDRESS_ITAB-STCD2. + 3649| + 3650| + 3651| CONCATENATE BUPLA_ADRESSE-CITY1 + 3652| * CONCATENATE bupla_adresse-city1 bupla_adresse-city2 + 3653| BUPLA_ADRESSE-STREET INTO ADDRESS_BUPLA SEPARATED BY SPACE. + 3654| + 3655| CONCATENATE ADDRESS_ITAB-ORT01 + 3656| * CONCATENATE address_itab-ort01 address_itab-ort02 + 3657| ADDRESS_ITAB-STRAS INTO ADDRESS_COMP SEPARATED BY SPACE. +``` + +- **EN**: Print supplier and buyer tax registration numbers via FILL_VAT_NUMBER and build the business place and customer address strings. +- 호출(파서): FILL_VAT_NUMBER +- 업무 키워드: 사업자등록번호, 공급자, 공급받는자, 주소 +- English: Tax Number, Supplier, Buyer, Address +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`ADDRESS_BUPLA`](#decl-zfir0141-478-address_bupla), [`ADDRESS_COMP`](#decl-zfir0141-477-address_comp) +- 위치: `abap://ZFIR0141/ZFIR0141#L3647-L3657` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1#C1` + +#### [output] 세금계산서 파트1 양식에 공급자 상호(NAME1)·대표자(KR_REPRES)·주소·업종·업태와 공급받는자 상호·대표자·주소·업태·업종을 양식 컬럼 위치에 맞춰 WRITE 한다. + +```abap + 3660| WRITE:/ TEXT-CA2, + 3661| 4 TEXT-CA2, + 3662| 5 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3663| 9 TEXT-CA2, + 3664| *2005년 11월3일 현업요청에의해 회사이름만 출력(사업자명 배제) + 3665| 10 BUPLA_ADRESSE-NAME1, "bupla_adresse-name1, + 3666| 35 TEXT-CA2, + 3667| 31 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3668| 42 TEXT-CA2, + 3669| 43 BUPLA_ADRESSE-KR_REPRES, "공급자 대표자 성명 + 3670| 59 TEXT-CA2, + 3671| 60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3672| 62 TEXT-CA2, + 3673| 63 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3674| 67 TEXT-CA2, + 3675| 68 ADDRESS_ITAB-NAME, + 3676| 93 TEXT-CA2, + 3677| 94 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3678| 100 TEXT-CA2, + 3679| 101 ADDRESS_ITAB-REPRE, "공급반는자 대표자 성명 + 3680| 117 TEXT-CA2. + 3681| *이름1 + 3682| WRITE:/ TEXT-CA2, + 3683| 2 '급' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3684| 4 TEXT-CA2, + 3685| 5 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3686| 9 TEXT-CA2, + 3687| 35 TEXT-CA2, + 3688| 36 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3689| 40 TEXT-CA2, + 3690| 59 TEXT-CA2, + 3691| 60 '받' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3692| 62 TEXT-CA2, + 3693| 63 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3694| 67 TEXT-CA2, + 3695| 93 TEXT-CA2, + 3696| 94 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3697| 100 TEXT-CA2, + 3698| 117 TEXT-CA2. + 3699| + 3700| *이름 다음 선1 + 3701| WRITE:/ TEXT-CA2, + 3702| 2 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3703| 4 TEXT-CA9, 63 TEXT-CA9, 59 TEXT-CA2, + 3704| 60 '는' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3705| 62 TEXT-CA2. + 3706| + 3707| *주소1 + 3708| WRITE:/ TEXT-CA2, + 3709| 2 '자' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3710| 4 TEXT-CA2, + 3711| 5 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3712| 9 TEXT-CA2, + 3713| 10 ADDRESS_BUPLA, + 3714| 59 TEXT-CA2, + 3715| 60 '자' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3716| 62 TEXT-CA2, + 3717| 63 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3718| 67 TEXT-CA2, + 3719| 68 ADDRESS_COMP, + 3720| 117 TEXT-CA2. + 3721| + 3722| WRITE:/ TEXT-CA2, + 3723| 4 TEXT-CA9, + 3724| 59 TEXT-CA2, + 3725| 63 TEXT-CA9, + 3726| 60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3727| 62 TEXT-CA2. + 3728| * 업종/ 업태 + 3729| WRITE:/ TEXT-CA2, + 3730| 4 TEXT-CA2, + 3731| 5 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3732| 9 TEXT-CA2, + 3733| 10 BUPLA_ADRESSE-KR_INDTYPE, + 3734| 35 TEXT-CA2, + 3735| 36 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3736| 40 TEXT-CA2, + 3737| 41 BUPLA_ADRESSE-KR_BUSTYPE, 59 TEXT-CA2, + 3738| 60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3739| 62 TEXT-CA2, + 3740| 63 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3741| 67 TEXT-CA2, + 3742| *2004.5.28업종과 업태필드 교체... + 3743| * 68 address_itab-indtyp, + 3744| 68 ADDRESS_ITAB-BUSTYP, + 3745| 93 TEXT-CA2, + 3746| 94 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3747| 100 TEXT-CA2, 101 ADDRESS_ITAB-INDTYP, 117 TEXT-CA2. + 3748| * 100 text-ca2, 101 address_itab-bustyp, 117 text-ca2. + 3749| + 3750| WRITE:/ TEXT-CA1, 117 TEXT-CA2. + 3751| + 3752| WRITE:/ TEXT-CA2, + 3753| 4 TEXT-YA9 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3754| 10 TEXT-CA2, + 3755| 20 TEXT-XA9 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3756| 38 TEXT-CA2, + 3757| 46 TEXT-YA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3758| 58 TEXT-CA2, + 3759| 63 TEXT-YA2 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3760| 117 TEXT-CA2. + 3761| + 3762| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print supplier name, representative, address, industry and business type together with the buyer's data in the part 1 area of the tax invoice form. +- 업무 키워드: 세금계산서 파트1, 상호, 대표자, 업종, 업태, 주소 출력 +- English: Tax Invoice, Supplier, Buyer, Business Type, WRITE +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`ADDRESS_BUPLA`](#decl-zfir0141-478-address_bupla), [`ADDRESS_COMP`](#decl-zfir0141-477-address_comp) +- 위치: `abap://ZFIR0141/ZFIR0141#L3660-L3762` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1#C2` + +### FORM FILL_VAT_NUMBER — `ZFIR0141` L2973-L3020 (48줄) + +*공급자(B)와 공급받는자(C)의 사업자등록번호 10자리를 세금계산서 양식의 사업자등록번호 칸(VAT_BUS/VAT_COM)에 한 자리씩 배치해 WRITE 한다.* + +> 이 unit 의 조각 2개가 41/48줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 사업장 사업자번호 B 와 고객 사업자번호 C 를 EDIT MASK 로 정렬한 뒤 각 자리를 3-2-5 구분(하이픈 위치 건너뜀)의 VAT_BUS/VAT_COM 칸 위치에 WRITE 하여 사업자등록번호 칸 형식으로 변환한다. + +```abap + 2975| WRITE B TO BVAT USING EDIT MASK 'LL__________'. + 2976| WRITE BVAT TO BVAT USING EDIT MASK 'RR__________'. + 2977| + 2978| WRITE BVAT TO VAT_BUS+1(1). + 2979| WRITE BVAT+1 TO VAT_BUS+3(1). + 2980| WRITE BVAT+2 TO VAT_BUS+5(1). + 2981| WRITE BVAT+3 TO VAT_BUS+9(1). + 2982| WRITE BVAT+4 TO VAT_BUS+11(1). + 2983| WRITE BVAT+5 TO VAT_BUS+15(1). + 2984| WRITE BVAT+6 TO VAT_BUS+17(1). + 2985| WRITE BVAT+7 TO VAT_BUS+19(1). + 2986| WRITE BVAT+8 TO VAT_BUS+21(1). + 2987| WRITE BVAT+9 TO VAT_BUS+23(1). + 2988| + 2989| WRITE C TO CVAT USING EDIT MASK 'LL__________'. + 2990| WRITE CVAT TO CVAT USING EDIT MASK 'RR__________'. + 2991| + 2992| WRITE CVAT TO VAT_COM+1(1). + 2993| WRITE CVAT+1 TO VAT_COM+3(1). + 2994| WRITE CVAT+2 TO VAT_COM+5(1). + 2995| WRITE CVAT+3 TO VAT_COM+9(1). + 2996| WRITE CVAT+4 TO VAT_COM+11(1). + 2997| WRITE CVAT+5 TO VAT_COM+15(1). + 2998| WRITE CVAT+6 TO VAT_COM+17(1). + 2999| WRITE CVAT+7 TO VAT_COM+19(1). + 3000| WRITE CVAT+8 TO VAT_COM+21(1). + 3001| WRITE CVAT+9 TO VAT_COM+23(1). +``` + +- **EN**: Format supplier and buyer tax registration numbers and spread the digits into the boxed VAT number fields VAT_BUS and VAT_COM (3-2-5 layout). +- 업무 키워드: 사업자등록번호, 자릿수 칸, 공급자, 공급받는자 +- English: Tax Number, VAT Registration, Digit Boxes +- 정의부(복사 시 함께 필요): [`BVAT`](#decl-zfir0141-465-bvat), [`VAT_BUS`](#decl-zfir0141-466-vat_bus), [`CVAT`](#decl-zfir0141-467-cvat), [`VAT_COM`](#decl-zfir0141-468-vat_com) +- 위치: `abap://ZFIR0141/ZFIR0141#L2975-L3001` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#FILL_VAT_NUMBER#C1` + +#### [output] 세금계산서 상단에 공급자·공급받는자 사업자등록번호 칸(VAT_BUS/VAT_COM)과 구분선을 양식 위치에 WRITE 한다. + +```abap + 3005| WRITE: / TEXT-CA2, + 3006| 4 TEXT-CA2, + 3007| 5 TEXT-WA5 COLOR COL_BACKGROUND INTENSIFIED OFF, 35 VAT_BUS, + 3008| 59 TEXT-CA2, + 3009| 62 TEXT-CA2, 63 TEXT-WA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3010| 93 VAT_COM, 117 TEXT-CA2, + 3011| *사업자등록번호 다음 선 + 3012| / TEXT-CA2, + 3013| 2 '공' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3014| 4 TEXT-CA9, + 3015| 59 TEXT-CA9, + 3016| 61 TEXT-CA2, + 3017| 60 '공' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3018| 62 TEXT-CA9, 117 TEXT-CA2. +``` + +- **EN**: Print the supplier and buyer tax registration number boxes and separator lines on the tax invoice header. +- 업무 키워드: 세금계산서 상단, 사업자등록번호 출력 +- English: Tax Invoice, WRITE +- 정의부(복사 시 함께 필요): [`VAT_BUS`](#decl-zfir0141-466-vat_bus), [`VAT_COM`](#decl-zfir0141-468-vat_com) +- 위치: `abap://ZFIR0141/ZFIR0141#L3005-L3018` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_VAT_NUMBER#C2` + +### FORM WRITE_PART1-2 — `ZFIR0141` L3773-L3896 (124줄) + +*세금계산서 파트1(공급자/공급받는자 보관용 2번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.* + +> 이 unit 의 조각 2개가 119/124줄(96%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] FILL_VAT_NUMBER 로 공급자(사업장 STCD2)와 공급받는자(고객 STCD2)의 사업자등록번호를 자릿수 칸에 인쇄하고 사업장·고객 주소 문자열(ADDRESS_BUPLA/ADDRESS_COMP)을 만든다. + +```abap + 3775| PERFORM FILL_VAT_NUMBER USING BUPLA_ADRESSE-STCD2 + 3776| ADDRESS_ITAB-STCD2. + 3777| + 3778| CONCATENATE BUPLA_ADRESSE-CITY1 + 3779| * CONCATENATE bupla_adresse-city1 bupla_adresse-city2 + 3780| BUPLA_ADRESSE-STREET INTO ADDRESS_BUPLA SEPARATED BY SPACE. + 3781| + 3782| CONCATENATE ADDRESS_ITAB-ORT01 + 3783| * CONCATENATE address_itab-ort01 address_itab-ort02 + 3784| ADDRESS_ITAB-STRAS INTO ADDRESS_COMP SEPARATED BY SPACE. +``` + +- **EN**: Print supplier and buyer tax registration numbers via FILL_VAT_NUMBER and build the business place and customer address strings. +- 호출(파서): FILL_VAT_NUMBER +- 업무 키워드: 사업자등록번호, 공급자, 공급받는자, 주소 +- English: Tax Number, Supplier, Buyer, Address +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`ADDRESS_BUPLA`](#decl-zfir0141-478-address_bupla), [`ADDRESS_COMP`](#decl-zfir0141-477-address_comp) +- 위치: `abap://ZFIR0141/ZFIR0141#L3775-L3784` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-2#C1` + +#### [output] 세금계산서 파트1 양식에 공급자 상호(NAME1)·대표자(KR_REPRES)·주소·업종·업태와 공급받는자 상호·대표자·주소·업태·업종을 양식 컬럼 위치에 맞춰 WRITE 한다. + +```abap + 3786| WRITE:/ TEXT-CA2, + 3787| 4 TEXT-CA2, + 3788| 5 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3789| 9 TEXT-CA2, + 3790| *2005년 11월3일 회사이름출력시 사업장 배제.. 수정자 박진성 + 3791| 10 BUPLA_ADRESSE-NAME1, + 3792| 35 TEXT-CA2, + 3793| 36 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3794| 42 TEXT-CA2, + 3795| 43 BUPLA_ADRESSE-KR_REPRES, "공급자 대표자 성명 + 3796| 59 TEXT-CA2, + 3797| 60 '급' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3798| 62 TEXT-CA2, + 3799| 63 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3800| 67 TEXT-CA2, + 3801| 68 ADDRESS_ITAB-NAME, + 3802| 93 TEXT-CA2, + 3803| 94 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3804| 100 TEXT-CA2, + 3805| 101 ADDRESS_ITAB-REPRE, " 공급받는자 대표자 성명 + 3806| 117 TEXT-CA2. + 3807| + 3808| *이름2 + 3809| WRITE:/ TEXT-CA2, + 3810| 2 '급' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3811| 4 TEXT-CA2, + 3812| 5 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3813| 9 TEXT-CA2, + 3814| 35 TEXT-CA2, + 3815| 36 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3816| 42 TEXT-CA2, + 3817| 59 TEXT-CA2, + 3818| 60 '받' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3819| 62 TEXT-CA2, + 3820| 63 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3821| 67 TEXT-CA2, + 3822| 93 TEXT-CA2, + 3823| 94 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3824| 100 TEXT-CA2, + 3825| 117 TEXT-CA2. + 3826| + 3827| *이름 다음 선2 + 3828| WRITE:/ TEXT-CA2, + 3829| 2 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3830| 4 TEXT-CA9, + 3831| 59 TEXT-CA9, + 3832| 60 '는' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3833| 62 TEXT-CA9, + 3834| 117 TEXT-CA2. + 3835| + 3836| *주소2 + 3837| WRITE:/ TEXT-CA2, + 3838| 2 '자' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3839| 4 TEXT-CA2, + 3840| 5 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3841| 9 TEXT-CA2, + 3842| 10 ADDRESS_BUPLA, + 3843| 59 TEXT-CA2, + 3844| 60 '자' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3845| 62 TEXT-CA2, + 3846| 63 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3847| 67 TEXT-CA2, + 3848| 68 ADDRESS_COMP, + 3849| 117 TEXT-CA2. + 3850| + 3851| WRITE:/ TEXT-CA2, + 3852| 4 TEXT-CA9, + 3853| 59 TEXT-CA2, + 3854| 60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3855| 62 TEXT-CA9, + 3856| 117 TEXT-CA2. + 3857| + 3858| * 업종/업태 + 3859| WRITE:/ TEXT-CA2, + 3860| 4 TEXT-CA2, + 3861| 5 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3862| 9 TEXT-CA2, + 3863| 10 BUPLA_ADRESSE-KR_INDTYPE, + 3864| 35 TEXT-CA2, + 3865| 36 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3866| 42 TEXT-CA2, 43 BUPLA_ADRESSE-KR_BUSTYPE, + 3867| 59 TEXT-CA2, + 3868| 60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3869| 62 TEXT-CA2, + 3870| 63 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3871| 67 TEXT-CA2, + 3872| *2004.5.28 업종과 업태 필드교체.. + 3873| * 68 address_itab-indtyp, + 3874| 68 ADDRESS_ITAB-BUSTYP, + 3875| 93 TEXT-CA2, + 3876| 94 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3877| 100 TEXT-CA2, + 3878| 101 ADDRESS_ITAB-INDTYP, + 3879| 117 TEXT-CA2. + 3880| + 3881| WRITE:/ TEXT-CA1, + 3882| 117 TEXT-CA2. + 3883| + 3884| WRITE:/ TEXT-CA2, + 3885| 4 TEXT-YA9 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3886| 10 TEXT-CA2, + 3887| 18 TEXT-XA9 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3888| 38 TEXT-CA2, + 3889| 43 TEXT-YA1 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3890| 58 TEXT-CA2, + 3891| 63 TEXT-YA2 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3892| 117 TEXT-CA2. + 3893| + 3894| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print supplier name, representative, address, industry and business type together with the buyer's data in the part 1 area of the tax invoice form. +- 업무 키워드: 세금계산서 파트1, 상호, 대표자, 업종, 업태, 주소 출력 +- English: Tax Invoice, Supplier, Buyer, Business Type, WRITE +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`ADDRESS_BUPLA`](#decl-zfir0141-478-address_bupla), [`ADDRESS_COMP`](#decl-zfir0141-477-address_comp) +- 위치: `abap://ZFIR0141/ZFIR0141#L3786-L3894` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-2#C2` + +### FORM PRINT_SUM_LINE — `ZFIR0141` L1014-L1136 (123줄) + +*세금계산서 합계 라인용으로 원천 유형(SD 전용/FI 전용/SD+FI)에 따라 총금액(FELD3)·공급가액(FELD1A)·세액(FELD1B) 문자열과 공란수(COUNT1)를 만든다.* + +> 이 unit 의 조각 3개가 111/123줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 현재 세금계산서의 항목을 LOOP 하며 SD 전용(VBRK) 건은 NETWR+MWSBP 총금액을 FELD3 에, 공급가액 NETWR 을 EDIT MASK 로 FELD1A 에 넣고 12자리 기준 공란수 COUNT1(음수면 1 감소)을 계산하며 세액 MWSBP 를 FELD1B 에(0 이면 '0') 세팅한다. + +```abap + 1016| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1017| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1018| AND STCD = AUSGLOP_ITAB-STCD + 1019| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1020| + 1021| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = CHECK_ITAB-BUKRS + 1022| AND KUNNR = CHECK_ITAB-KUNNR + 1023| AND STCD = CHECK_ITAB-STCD + 1024| AND AUGBL = CHECK_ITAB-AUGBL. + 1025| + 1026| * only sd-data + 1027| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 1028| IF CHECK_ITAB-AWTYP_FI = ' '. + 1029| + 1030| TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 1031| + 1032| WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'. + 1033| * CURRENCY t001-waers USING EDIT MASK 'V____________'. + 1034| SHIFT FELD3 LEFT DELETING LEADING '0'. + 1035| + 1036| WRITE ALL_ITEMS_ITAB-NETWR TO FELD1A + 1037| CURRENCY T001-WAERS USING EDIT MASK 'V____________'. + 1038| SHIFT FELD1A LEFT DELETING LEADING '0'. + 1039| COUNT1 = 12 - STRLEN( FELD1A ). + 1040| SHIFT FELD1A RIGHT DELETING TRAILING ' '. + 1041| + 1042| IF FELD1A < 0. + 1043| COUNT1 = COUNT1 - 1. + 1044| ENDIF. + 1045| + 1046| IF ALL_ITEMS_ITAB-MWSBP <> 0. + 1047| WRITE ALL_ITEMS_ITAB-MWSBP TO FELD1B + 1048| CURRENCY T001-WAERS USING EDIT MASK 'V___________'. + 1049| SHIFT FELD1B LEFT DELETING LEADING '0'. + 1050| SHIFT FELD1B RIGHT DELETING TRAILING ' '. + 1051| ELSE. + 1052| WRITE TEXT-ZER TO FELD1B. + 1053| * 0 instead of "Zero tax" + 1054| WRITE '0' TO FELD1B RIGHT-JUSTIFIED. + 1055| ENDIF. + 1056| + 1057| ENDIF. + 1058| ENDIF. +``` + +- **EN**: For pure SD billing items, compute the total amount, format tax base into FELD1A with blank count COUNT1 and tax amount into FELD1B (or '0' when zero). +- SAP 객체: VBRK, T001 +- 업무 키워드: 합계 라인, 총금액, 공급가액, 세액, 공란수, SD 빌링 +- English: Sum Line, Total Amount, Tax Base, Tax Amount, Blank Count +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`TOT_AMOUNT`](#decl-zfir0141-120-tot_amount), [`FELD3`](#decl-zfir0141-107-feld3), [`FELD1A`](#decl-zfir0141-101-feld1a), [`T001`](#decl-zfir0141-40-t001), [`COUNT1`](#decl-zfir0141-109-count1), [`FELD1B`](#decl-zfir0141-104-feld1b) +- 위치: `abap://ZFIR0141/ZFIR0141#L1016-L1058` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C1` + +#### [calculation] FI 전용(BKPF) 건은 총금액을 FELD3 에, 현지통화 공급가액 HWBAS 를 FELD1A 에 넣고 공란수 COUNT1 을 계산하며 세액 HWSTE 를 FELD1B 에(0 이면 '0') 세팅한다. + +```abap + 1061| IF CHECK_ITAB-AWTYP_SD = ' '. + 1062| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 1063| + 1064| TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 1065| + 1066| WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'. + 1067| * CURRENCY t001-waers USING EDIT MASK 'V____________'. + 1068| SHIFT FELD3 LEFT DELETING LEADING '0'. + 1069| + 1070| WRITE ALL_ITEMS_ITAB-HWBAS CURRENCY T001-WAERS TO FELD1A. + 1071| + 1072| WRITE ALL_ITEMS_ITAB-HWBAS TO FELD1A + 1073| CURRENCY T001-WAERS USING EDIT MASK 'V____________'. + 1074| SHIFT FELD1A LEFT DELETING LEADING '0'. + 1075| COUNT1 = 12 - STRLEN( FELD1A ). + 1076| SHIFT FELD1A RIGHT DELETING TRAILING ' '. + 1077| + 1078| IF FELD1A < 0. + 1079| COUNT1 = COUNT1 - 1. + 1080| ENDIF. + 1081| + 1082| IF ALL_ITEMS_ITAB-HWSTE <> 0. + 1083| WRITE ALL_ITEMS_ITAB-HWSTE CURRENCY T001-WAERS TO FELD1B. + 1084| + 1085| WRITE ALL_ITEMS_ITAB-HWSTE TO FELD1B + 1086| CURRENCY T001-WAERS USING EDIT MASK 'V___________'. + 1087| SHIFT FELD1B LEFT DELETING LEADING '0'. + 1088| SHIFT FELD1B RIGHT DELETING TRAILING ' '. + 1089| ELSE. + 1090| WRITE TEXT-ZER TO FELD1B. + 1091| * 0 instead of "zero tax" + 1092| WRITE '0' TO FELD1B RIGHT-JUSTIFIED. + 1093| ENDIF. + 1094| ENDIF. + 1095| ENDIF. +``` + +- **EN**: For pure FI documents, format total amount, local-currency tax base HWBAS with blank count and tax amount HWSTE into the sum line fields. +- SAP 객체: BKPF, T001 +- 업무 키워드: FI 전표, 공급가액, 세액, 공란수, 합계 라인 +- English: FI Document, Tax Base, Tax Amount, Blank Count +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`TOT_AMOUNT`](#decl-zfir0141-120-tot_amount), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`FELD3`](#decl-zfir0141-107-feld3), [`T001`](#decl-zfir0141-40-t001), [`FELD1A`](#decl-zfir0141-101-feld1a), [`COUNT1`](#decl-zfir0141-109-count1), [`FELD1B`](#decl-zfir0141-104-feld1b) +- 위치: `abap://ZFIR0141/ZFIR0141#L1061-L1095` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C2` + +#### [calculation] SD+FI 혼합 건은 NETWR+MWSBP 총금액을 FELD3 에, 공급가액 NETWR 을 FELD1A 에 넣고 공란수 COUNT1 을 계산하며 세액 MWSBP 를 FELD1B 에(0 이면 '0') 세팅한다. + +```abap + 1098| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 1099| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 1100| + 1101| TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 1102| + 1103| WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'. + 1104| * CURRENCY t001-waers USING EDIT MASK 'V____________'. + 1105| + 1106| SHIFT FELD3 LEFT DELETING LEADING '0'. + 1107| + 1108| WRITE ALL_ITEMS_ITAB-NETWR TO FELD1A + 1109| CURRENCY T001-WAERS USING EDIT MASK 'V____________'. + 1110| SHIFT FELD1A LEFT DELETING LEADING '0'. + 1111| COUNT1 = 12 - STRLEN( FELD1A ). + 1112| SHIFT FELD1A RIGHT DELETING TRAILING ' '. + 1113| + 1114| IF FELD1A < 0. + 1115| COUNT1 = COUNT1 - 1. + 1116| ENDIF. + 1117| + 1118| IF ALL_ITEMS_ITAB-MWSBP <> 0. + 1119| + 1120| WRITE ALL_ITEMS_ITAB-MWSBP TO FELD1B + 1121| CURRENCY T001-WAERS USING EDIT MASK 'V____________'. + 1122| SHIFT FELD1B LEFT DELETING LEADING '0'. + 1123| SHIFT FELD1B RIGHT DELETING TRAILING ' '. + 1124| ELSE. + 1125| WRITE TEXT-ZER TO FELD1B. + 1126| * 0 instead of "Zero tax" + 1127| WRITE '0' TO FELD1B RIGHT-JUSTIFIED. + 1128| ENDIF. + 1129| ENDIF. + 1130| ENDIF. +``` + +- **EN**: For mixed SD+FI documents, format total amount, tax base with blank count and tax amount into the sum line fields. +- SAP 객체: T001 +- 업무 키워드: SD+FI 혼합, 합계 라인, 공급가액, 세액, 공란수 +- English: Sum Line, Tax Base, Tax Amount, Blank Count +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`TOT_AMOUNT`](#decl-zfir0141-120-tot_amount), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`FELD3`](#decl-zfir0141-107-feld3), [`FELD1A`](#decl-zfir0141-101-feld1a), [`T001`](#decl-zfir0141-40-t001), [`COUNT1`](#decl-zfir0141-109-count1), [`FELD1B`](#decl-zfir0141-104-feld1b) +- 위치: `abap://ZFIR0141/ZFIR0141#L1098-L1130` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C3` + +### FORM FILL_ITEM_TABLES — `ZFIR0141` L4527-L4548 (22줄) + +*현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 인쇄용 품목 라인을 채우는 하위 FORM 을 호출한다.* + +> 이 unit 의 조각 1개가 11/22줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 별 CHECK_ITAB 을 LOOP 하며 PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI, PRINT_ITEM_PURE_FI 를 차례로 호출해 품목 라인 MATZEIL1~4 를 구성한다. + +```abap + 4536| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4537| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4538| AND STCD = AUSGLOP_ITAB-STCD + 4539| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4540| * SD-data + 4541| PERFORM PRINT_ITEM_PURE_SD. + 4542| * SD + FI-data + 4543| PERFORM PRINT_ITEM_SD_AND_FI. + 4544| * FI-data + 4545| PERFORM PRINT_ITEM_PURE_FI. + 4546| ENDLOOP. +``` + +- **EN**: Loop over CHECK_ITAB of the current tax invoice and dispatch to the pure-SD, SD+FI and pure-FI item filling routines. +- 호출(파서): PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI, PRINT_ITEM_PURE_FI +- 업무 키워드: 품목 라인 구성, 원천 유형, SD, FI +- English: Item Line, Billing Document, FI Document +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L4536-L4546` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_ITEM_TABLES#C1` + +### FORM PRINT_ITEM_PURE_SD — `ZFIR0141` L1143-L1190 (48줄) + +*순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(인쇄용).* + +> 이 unit 의 조각 2개가 37/48줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 원천이 SD 빌링(VBRK)이고 FI 전표가 없는 순수 SD 건에서 세금계산서 인쇄 모드이면 품목 수에 따라 MATZEIL1~4 를 초기화한 뒤 PRINT_LINES 로 최대 4개 품목 라인을 채운다. + +```abap + 1145| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 1146| + 1147| IF CHECK_ITAB-AWTYP_FI = ' '. + 1148| * if document is a pure SD-document --> print max. 4 lines + 1149| IF CHK_PRTI = 'X'. + 1150| CLEAR LINE_COUNT_PR. + 1151| * if number of lines < 5 + 1152| * 4th Mat line in tax invoice + 1153| CLEAR MATNUM. + 1154| CLEAR NUMBER. + 1155| + 1156| IF LINE_COUNT < 5. + 1157| PERFORM PRINT_LINES. + 1158| ELSE. + 1159| CLEAR MATZEIL1. + 1160| CLEAR MATZEIL2. + 1161| CLEAR MATZEIL3. + 1162| CLEAR MATZEIL4. + 1163| CLEAR COUNT. + 1164| + 1165| PERFORM PRINT_LINES. + 1166| ENDIF. +``` + +- **EN**: For pure SD billing documents in tax invoice print mode, reset item lines and call PRINT_LINES to fill up to four item lines. +- 호출(파서): PRINT_LINES, PRINT_LINES +- SAP 객체: VBRK +- 업무 키워드: 순수 SD 빌링, 품목 라인, 세금계산서 인쇄 +- English: Billing Document, Item Line, Tax Invoice +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`MATNUM`](#decl-zfir0141-281-matnum), [`NUMBER`](#decl-zfir0141-282-number), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`COUNT`](#decl-zfir0141-124-count) +- 위치: `abap://ZFIR0141/ZFIR0141#L1145-L1166` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD#C1` + +#### [calculation] 추가 시트 인쇄 시 해당 세금계산서의 품목별 평균 단가(NETWR/FKIMG)를 계산해 AUSGLOP_MAT_ITAB-UPRICE 에 MODIFY 한다. + +```abap + 1169| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1170| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1171| AND STCD = AUSGLOP_ITAB-STCD + 1172| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1173| + 1174| * calculating the unit price as the average price of the reported + 1175| * material + 1176| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 1177| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 1178| ( AUSGLOP_MAT_ITAB-FKIMG ). + 1179| ELSE. + 1180| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 1181| ENDIF. + 1182| MODIFY AUSGLOP_MAT_ITAB. + 1183| ENDLOOP. +``` + +- **EN**: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB. +- 테이블(파서): read - / write [AUSGLOP_MAT_ITAB](/tables/AUSGLOP_MAT_ITAB.md) +- 업무 키워드: 추가 시트, 평균 단가, 품목 +- English: Additional Sheet, Unit Price +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L1169-L1183` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD#C2` + +### FORM PRINT_LINES — `ZFIR0141` L1341-L1438 (98줄) + +*세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외' 요약 라인으로 만든다(인쇄용).* + +> 이 unit 의 조각 2개가 90/98줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 판매 품목을 세금계산서번호·일자·자재로 정렬한 뒤 현재 세금계산서의 품목을 순서대로 1~3번째 라인 MATZEIL1~3 에 품목텍스트(ARKTX)·일자와 함께 옮기고 FILL_ITEM_AMOUNT 로 단가·수량·금액을 채운다. + +```abap + 1343| SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING. + 1344| + 1345| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1346| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1347| AND STCD = AUSGLOP_ITAB-STCD + 1348| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1349| + 1350| LINE_COUNT_PR = LINE_COUNT_PR + 1. + 1351| + 1352| IF LINE_COUNT_PR = 1. + 1353| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1. + 1354| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL1-ARKTX. + 1355| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG. + 1356| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL1-BUDAT. + 1357| * correct currency conversion error + 1358| * LOOP AT all_items_itab WHERE bukrs = ausglop_itab-bukrs + 1359| * AND kunnr = ausglop_itab-kunnr + 1360| * AND stcd = ausglop_itab-stcd + 1361| * AND augbl = ausglop_itab-augbl. + 1362| * ausglop_mat_itab-netwr = + 1363| * ausglop_mat_itab-netwr + all_items_itab-deltan. + 1364| * ausglop_mat_itab-mwsbp = + 1365| * ausglop_mat_itab-mwsbp + all_items_itab-deltam. + 1366| * ENDLOOP. + 1367| + 1368| PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB + 1369| USING MATZEIL1. + 1370| ENDIF. + 1371| + 1372| IF LINE_COUNT_PR = 2. + 1373| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2. + 1374| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL2-ARKTX. + 1375| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL2-BUDAT. + 1376| * calculating the unit price as the average price of the reported + 1377| * material + 1378| + 1379| PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB + 1380| USING MATZEIL2. + 1381| + 1382| ENDIF. + 1383| + 1384| IF LINE_COUNT_PR = 3. + 1385| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3. + 1386| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL3-ARKTX. + 1387| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL3-BUDAT. + 1388| * calculating the unit price as the average price of the reported + 1389| * material + 1390| PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB + 1391| USING MATZEIL3. + 1392| ENDIF. +``` + +- **EN**: Sort material lines and fill tax invoice item lines 1-3 with material text, date and amounts via FILL_ITEM_AMOUNT. +- 호출(파서): FILL_ITEM_AMOUNT, FILL_ITEM_AMOUNT, FILL_ITEM_AMOUNT +- 업무 키워드: 품목 라인, 정렬, 세금계산서 품목, 단가 +- English: Item Line, Sort, Tax Invoice, Material Text +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3) +- 위치: `abap://ZFIR0141/ZFIR0141#L1343-L1392` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_LINES#C1` + +#### [output] 품목이 5개 미만이면 4번째 품목을 MATZEIL4 에 그대로 채우고, 5개 이상이면 ALL_MAT_ITAB 의 합계 금액(KRW 편집)과 4번째 자재명·'외' 표기로 나머지 품목을 요약한 4번째 라인을 만든다. + +```abap + 1395| IF LINE_COUNT > 4 AND LINE_COUNT_PR = 4. + 1396| MOVE AUSGLOP_MAT_ITAB-MATNR TO MATNUM. + 1397| NUMBER = LINE_COUNT - 4. + 1398| ENDIF. + 1399| + 1400| * Item 개수가 5개미만일 경우 + 1401| IF LINE_COUNT < 5. + 1402| IF LINE_COUNT_PR = 4. + 1403| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL4. + 1404| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX. + 1405| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 1406| * calculating the unit price as the average price of the reported + 1407| * material + 1408| PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB + 1409| USING MATZEIL4. + 1410| ENDIF. + 1411| * item 개수가 5개 이상일 경우 + 1412| ELSE. + 1413| READ TABLE ALL_MAT_ITAB WITH KEY BUKRS = AUSGLOP_ITAB-BUKRS + 1414| KUNNR = AUSGLOP_ITAB-KUNNR + 1415| STCD = AUSGLOP_ITAB-STCD + 1416| AUGBL = AUSGLOP_ITAB-AUGBL + 1417| FLAG = 'X'. + 1418| IF SY-SUBRC = 0. + 1419| * material description + 1420| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX. + 1421| WRITE ALL_MAT_ITAB-NETWR CURRENCY 'KRW' TO MATZEIL4-NETWR. + 1422| WRITE ALL_MAT_ITAB-MWSBP CURRENCY 'KRW' TO MATZEIL4-MWSBP. + 1423| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 1424| * 4th mat line in tax invoice + 1425| MOVE MATNUM TO MATZEIL4-MATNR. "2 + 1426| MOVE '외' TO MATZEIL4-VRKME. + 1427| * MOVE number TO matzeil4-fkimg. + 1428| + 1429| * WRITE number TO matzeil4-uprice USING EDIT MASK'_______________' + 1430| * RIGHT-JUSTIFIED. + 1431| * MOVE text-034 TO matzeil4-uprice+5(3). + 1432| ENDIF. + 1433| + 1434| ENDIF. +``` + +- **EN**: If fewer than five items, fill line 4 normally; otherwise build a summary fourth line with KRW totals from ALL_MAT_ITAB, the fourth material and the '외' (and others) marker. +- 호출(파서): FILL_ITEM_AMOUNT +- 업무 키워드: 요약 라인, 외 N건, 품목 수, 합계 금액 +- English: Summary Line, Item Count, Total Amount +- 정의부(복사 시 함께 필요): [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`MATNUM`](#decl-zfir0141-281-matnum), [`NUMBER`](#decl-zfir0141-282-number), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`ALL_MAT_ITAB`](#decl-zfir0141-278-all_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L1395-L1434` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_LINES#C2` + +### FORM FILL_ITEM_AMOUNT — `ZFIR0141` L3560-L3579 (20줄) + +*품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 KRW 통화 편집으로 세금계산서 품목 라인(MATZEIL)에 옮긴다.* + +> 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수량(FKIMG)이 있으면 공급가액(NETWR)/수량으로 평균 단가 UPRICE 를 계산하고, 단가·공급가액·부가세액(MWSBP)을 KRW 통화 편집으로, 수량은 그대로 세금계산서 품목 라인 구조 P_MATZEIL 에 넣는다. + +```abap + 3563| IF NOT P_MAT_ITAB-FKIMG IS INITIAL. + 3564| P_MAT_ITAB-UPRICE = ( P_MAT_ITAB-NETWR ) / ( P_MAT_ITAB-FKIMG ). + 3565| ELSE. + 3566| P_MAT_ITAB-UPRICE = ' '. + 3567| ENDIF. + 3568| + 3569| * 단가 + 3570| WRITE P_MAT_ITAB-UPRICE CURRENCY 'KRW' TO P_MATZEIL-UPRICE. + 3571| + 3572| * 수량 + 3573| MOVE P_MAT_ITAB-FKIMG TO P_MATZEIL-FKIMG. + 3574| * 공급가액 + 3575| WRITE P_MAT_ITAB-NETWR CURRENCY 'KRW' TO P_MATZEIL-NETWR. + 3576| * 부가세액 + 3577| WRITE P_MAT_ITAB-MWSBP CURRENCY 'KRW' TO P_MATZEIL-MWSBP . +``` + +- **EN**: Compute the average unit price as net value divided by quantity and write unit price, net value and VAT amount in KRW plus quantity into the tax invoice item line structure. +- 업무 키워드: 평균 단가, 수량, 공급가액, 부가세액, 품목 라인 +- English: Unit Price, Quantity, Net Value, VAT Amount +- 위치: `abap://ZFIR0141/ZFIR0141#L3563-L3577` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#FILL_ITEM_AMOUNT#C1` + +### FORM PRINT_ITEM_SD_AND_FI — `ZFIR0141` L1196-L1330 (135줄) + +*SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 KRW 편집 금액으로 채우고 품목별 평균 단가를 계산한다(인쇄용).* + +> 이 unit 의 조각 3개가 122/135줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] SD+FI 혼합 건에 대해 MATZEIL4_ITAB 의 공급가액·세액을 KRW 로 편집해 4번째 라인 MATZEIL4 에 넣고 특별 G/L 여부와 라인 수(LINE_COUNT2)에 따라 자재명/품목텍스트를 실제 자재 또는 TEXT-023 으로 세팅한 뒤 SDFI 플래그를 켠다. + +```abap + 1202| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1203| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1204| AND STCD = AUSGLOP_ITAB-STCD + 1205| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1206| + 1207| LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1208| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1209| AND STCD = AUSGLOP_ITAB-STCD + 1210| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1211| + 1212| WRITE MATZEIL4_ITAB-NETWR CURRENCY 'KRW' TO MATZEIL4-NETWR. + 1213| * MOVE matzeil4-netwr TO matzeil4-netwr. + 1214| WRITE MATZEIL4_ITAB-MWSBP CURRENCY 'KRW' TO MATZEIL4-MWSBP. + 1215| * MOVE matzeil4-mwsbp TO matzeil4-mwsbp. + 1216| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 1217| + 1218| IF CHECK_ITAB-SAVE_UMSKZ <> ' '. + 1219| IF CHECK_ITAB-LINE_COUNT2 = 0. + 1220| MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR. + 1221| WRITE MATZEIL4_ITAB-ARKTX TO MATZEIL4-ARKTX. + 1222| ELSE. + 1223| MOVE TEXT-023 TO MATZEIL4-MATNR. + 1224| MOVE TEXT-023 TO MATZEIL4-ARKTX. + 1225| ENDIF. + 1226| ELSEIF AUSGLOP_ITAB-FLAG = ' ' . + 1227| MOVE TEXT-023 TO MATZEIL4-MATNR. + 1228| MOVE TEXT-023 TO MATZEIL4-ARKTX. + 1229| ENDIF. + 1230| ENDLOOP. + 1231| ENDLOOP. + 1232| + 1233| SDFI = 'X'. +``` + +- **EN**: For mixed SD+FI clearing, write net value and tax in KRW into item line 4 and set the material text depending on the special G/L indicator, then flag SDFI. +- 업무 키워드: SD+FI 혼합, 품목 라인 4, 특별 G/L, 품목 텍스트 +- English: Billing Document, FI Document, Item Line, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`SDFI`](#decl-zfir0141-481-sdfi) +- 위치: `abap://ZFIR0141/ZFIR0141#L1202-L1233` · confidence 0.75 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C1` + +#### [calculation] 세금계산서 인쇄 시 품목 수가 4 미만이면 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 단가·수량·공급가액·세액을 KRW 편집으로 MATZEIL1~3 에 채우고, 4 이상이면 ALL_ITEMS_SD_ITAB 합계를 MATZEIL4 에 TEXT-030 품명으로 요약한다. + +```abap + 1235| IF CHK_PRTI = 'X'. + 1236| LINE_COUNT_PR = 0. + 1237| * if number of lines < 4 + 1238| IF LINE_COUNT < 4. + 1239| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1240| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1241| AND STCD = AUSGLOP_ITAB-STCD + 1242| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1243| LINE_COUNT_PR = LINE_COUNT_PR + 1. + 1244| + 1245| * calculating the unit price as the average price of the reported + 1246| * material + 1247| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 1248| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 1249| ( AUSGLOP_MAT_ITAB-FKIMG ). + 1250| ELSE. + 1251| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 1252| ENDIF. + 1253| + 1254| IF LINE_COUNT_PR = 1. + 1255| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1. + 1256| WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW' + 1257| TO MATZEIL1-UPRICE. + 1258| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG. + 1259| WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW' + 1260| TO MATZEIL1-NETWR. + 1261| WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW' + 1262| TO MATZEIL1-MWSBP. + 1263| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL1-BUDAT. + 1264| + 1265| ENDIF. + 1266| + 1267| IF LINE_COUNT_PR = 2. + 1268| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2. + 1269| WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW' + 1270| TO MATZEIL2-UPRICE. + 1271| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL2-FKIMG. + 1272| WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW' + 1273| TO MATZEIL2-NETWR. + 1274| WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW' + 1275| TO MATZEIL2-MWSBP. + 1276| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL2-BUDAT. + 1277| ENDIF. + 1278| + 1279| IF LINE_COUNT_PR = 3. + 1280| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3. + 1281| WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY T001-WAERS + 1282| TO MATZEIL3-UPRICE. + 1283| + 1284| WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW' + 1285| TO MATZEIL3-UPRICE. + 1286| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL3-FKIMG. + 1287| WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW' + 1288| TO MATZEIL3-NETWR. + 1289| WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW' + 1290| TO MATZEIL3-MWSBP. + 1291| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL3-BUDAT. + 1292| ENDIF. + 1293| + 1294| ENDLOOP. + 1295| + 1296| * if number of lines >=4 + 1297| ELSE. + 1298| LOOP AT ALL_ITEMS_SD_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1299| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1300| AND STCD = AUSGLOP_ITAB-STCD + 1301| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1302| WRITE ALL_ITEMS_ITAB-NETWR CURRENCY 'KRW' TO MATZEIL4-NETWR. + 1303| WRITE ALL_ITEMS_ITAB-MWSBP CURRENCY 'KRW' TO MATZEIL4-MWSBP. + 1304| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 1305| MOVE TEXT-030 TO MATZEIL4-MATNR. + 1306| ENDLOOP. + 1307| ENDIF. +``` + +- **EN**: When printing the tax invoice, compute the average unit price per material and fill item lines 1-3 in KRW if fewer than 4 lines, otherwise summarize SD totals into line 4 with text TEXT-030. +- SAP 객체: T001 +- 업무 키워드: 평균 단가, 품목 라인, 세금계산서 인쇄, 요약 라인 +- English: Unit Price, Item Line, Tax Invoice, Summary Line +- 정의부(복사 시 함께 필요): [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`T001`](#decl-zfir0141-40-t001), [`ALL_ITEMS_SD_ITAB`](#decl-zfir0141-286-all_items_sd_itab) 외 2건 +- 위치: `abap://ZFIR0141/ZFIR0141#L1235-L1307` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C2` + +#### [calculation] 추가 시트 인쇄 시 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 UPRICE 에 MODIFY 로 반영한다. + +```abap + 1310| ELSE. + 1311| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 1312| AND KUNNR = AUSGLOP_ITAB-KUNNR + 1313| AND STCD = AUSGLOP_ITAB-STCD + 1314| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 1315| * calculating the unit price as the average price of the reported + 1316| * material + 1317| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 1318| + 1319| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 1320| ( AUSGLOP_MAT_ITAB-FKIMG ). + 1321| ELSE. + 1322| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 1323| ENDIF. + 1324| MODIFY AUSGLOP_MAT_ITAB. + 1325| ENDLOOP. + 1326| ENDIF. +``` + +- **EN**: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB. +- 테이블(파서): read - / write [AUSGLOP_MAT_ITAB](/tables/AUSGLOP_MAT_ITAB.md) +- 업무 키워드: 추가 시트, 평균 단가, 품목 갱신 +- English: Additional Sheet, Unit Price +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L1310-L1326` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C3` + +### FORM PRINT_ITEM_PURE_FI — `ZFIR0141` L3588-L3636 (49줄) + +*순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 KRW 편집된 공급가액·세액으로 채운다.* + +> 이 unit 의 조각 1개가 42/49줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 원천이 FI 전표(BKPF)이고 SD 빌링이 없는 경우 ALL_ITEMS_ITAB 을 돌며 세금계산서번호로 AUSGLOP_ITAB 을 READ 해 전기일을 넣고 전표 항목 텍스트(SGTXT)를 '/' 로 SPLIT 해 품명·수량·단위로 분리하며 공급가액(HWBAS)·세액(HWSTE)을 KRW 로 편집해 MATZEIL1 에 넣고, 특별 G/L 지시자(SAVE_UMSKZ)가 있으면 MATZEIL1_ITAB 의 자재명으로 대체한다. + +```abap + 3594| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 3595| IF CHECK_ITAB-AWTYP_SD = ' '. + 3596| * if the cleared invoices are pure FI-documents fill first line + 3597| CLEAR MATZEIL1. + 3598| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 3599| AND KUNNR = AUSGLOP_ITAB-KUNNR + 3600| AND STCD = AUSGLOP_ITAB-STCD + 3601| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 3602| + 3603| * READ TABLE ausglop_itab INDEX l_lines. + 3604| READ TABLE AUSGLOP_ITAB WITH KEY AUGBL = ALL_ITEMS_ITAB-AUGBL. + 3605| + 3606| IF SY-SUBRC EQ 0. + 3607| MOVE AUSGLOP_ITAB-BUDAT TO MATZEIL1-BUDAT. + 3608| ENDIF. + 3609| + 3610| SPLIT AUSGLOP_ITAB-SGTXT AT '/' INTO MATZEIL1-MATNR + 3611| MATZEIL1-FKIMG + 3612| MATZEIL1-VRKME. + 3613| + 3614| WRITE ALL_ITEMS_ITAB-HWBAS TO MATZEIL1-NETWR CURRENCY 'KRW'. + 3615| WRITE ALL_ITEMS_ITAB-HWSTE TO MATZEIL1-MWSBP CURRENCY 'KRW'. + 3616| + 3617| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 3618| AND KUNNR = AUSGLOP_ITAB-KUNNR + 3619| AND STCD = AUSGLOP_ITAB-STCD + 3620| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 3621| IF CHECK_ITAB-SAVE_UMSKZ = ' '. + 3622| * MOVE text-030 TO matzeil1-matnr. + 3623| ELSE. + 3624| LOOP AT MATZEIL1_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 3625| AND KUNNR = AUSGLOP_ITAB-KUNNR + 3626| AND STCD = AUSGLOP_ITAB-STCD + 3627| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 3628| MOVE MATZEIL1_ITAB-MATNR TO MATZEIL1-MATNR. + 3629| ENDLOOP. + 3630| ENDIF. + 3631| ENDLOOP. + 3632| ENDLOOP. + 3633| ENDIF. + 3634| + 3635| ENDIF. +``` + +- **EN**: For pure FI documents, fill the first tax invoice item line MATZEIL1 by splitting the line item text SGTXT into material/quantity/unit and writing tax base and tax amount in KRW; override the material with MATZEIL1_ITAB when a special G/L indicator exists. +- SAP 객체: BKPF +- 업무 키워드: 순수 FI 전표, 품목 라인, 전표 텍스트 분리, 공급가액, 세액, 특별 G/L +- English: FI Document, Item Line, Line Item Text, Tax Base, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`MATZEIL1_ITAB`](#decl-zfir0141-385-matzeil1_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L3594-L3635` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_FI#C1` + +### FORM FILL_AMOUNT — `ZFIR0141` L3029-L3134 (106줄) + +*세금계산서 상단의 공급가액·세액을 자릿수별 칸(AMT_BASE/AMT_TAX)에 한 자리씩 배치하고 발행일·전표수·사업장 주소와 함께 WRITE 한다.* + +> 이 unit 의 조각 2개가 49/106줄(46%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 사업장 주소를 합치고 공급가액(A)과 세액(T)을 EDIT MASK 로 좌·우 정렬한 뒤 각 자리를 AMT_BASE/AMT_TAX 의 2칸 간격 위치에 한 자리씩 WRITE 하여 세금계산서 금액란(자릿수 칸) 형식으로 변환한다. + +```abap + 3036| CONCATENATE BUPLA_ADRESSE-CITY1 BUPLA_ADRESSE-STREET INTO L_AAA. + 3037| + 3038| ***** CLEAR : yy,mm,dd, l_last_date, l_date. + 3039| + 3040| WRITE A TO BASE USING EDIT MASK 'LL____________'. + 3041| WRITE BASE TO BASE USING EDIT MASK 'RR____________'. + 3042| + 3043| WRITE BASE+1 TO AMT_BASE+0(1). + 3044| WRITE BASE+2 TO AMT_BASE+2(1). + 3045| WRITE BASE+3 TO AMT_BASE+4(1). + 3046| WRITE BASE+4 TO AMT_BASE+6(1). + 3047| WRITE BASE+5 TO AMT_BASE+8(1). + 3048| WRITE BASE+6 TO AMT_BASE+10(1). + 3049| WRITE BASE+7 TO AMT_BASE+12(1). + 3050| WRITE BASE+8 TO AMT_BASE+14(1). + 3051| WRITE BASE+9 TO AMT_BASE+16(1). + 3052| WRITE BASE+10 TO AMT_BASE+18(1). + 3053| WRITE BASE+11 TO AMT_BASE+20(1). + 3054| + 3055| WRITE T TO TAX USING EDIT MASK 'LL___________'. + 3056| WRITE TAX TO TAX USING EDIT MASK 'RR___________'. + 3057| + 3058| WRITE TAX+1 TO AMT_TAX+0(1). + 3059| WRITE TAX+2 TO AMT_TAX+2(1). + 3060| WRITE TAX+3 TO AMT_TAX+4(1). + 3061| WRITE TAX+4 TO AMT_TAX+6(1). + 3062| WRITE TAX+5 TO AMT_TAX+8(1). + 3063| WRITE TAX+6 TO AMT_TAX+10(1). + 3064| WRITE TAX+7 TO AMT_TAX+12(1). + 3065| WRITE TAX+8 TO AMT_TAX+14(1). + 3066| WRITE TAX+9 TO AMT_TAX+16(1). + 3067| WRITE TAX+10 TO AMT_TAX+18(1). +``` + +- **EN**: Concatenate the business place address and split the tax base and tax amount digit by digit into the boxed amount fields AMT_BASE and AMT_TAX of the tax invoice form. +- 업무 키워드: 공급가액, 세액, 자릿수 칸, 금액 편집, 사업장 주소 +- English: Tax Base, Tax Amount, Digit Boxes, EDIT MASK +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`L_AAA`](#decl-zfir0141-3035-l_aaa), [`BASE`](#decl-zfir0141-469-base), [`AMT_BASE`](#decl-zfir0141-470-amt_base), [`TAX`](#decl-zfir0141-471-tax), [`AMT_TAX`](#decl-zfir0141-472-amt_tax) +- 위치: `abap://ZFIR0141/ZFIR0141#L3036-L3067` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#FILL_AMOUNT#C1` + +#### [output] 발행일(YY1/MM1/DD1)·전표 수(COUNT1)·자릿수별 공급가액·세액·사업장 주소를 세금계산서 상단 라인에 WRITE 한다. + +```abap + 3115| WRITE:/ TEXT-CA2, 2 TEXT-CA5, + 3116| 2 YY1, + 3117| 5 MM1, + 3118| 8 DD1, + 3119| * 2 byear, + 3120| * 5 bmonth, + 3121| * 8 bday, + 3122| 12 COUNT1, + 3123| 16 TEXT-CA2, 17 AMT_BASE, 39 AMT_TAX, 117 TEXT-CA2, + 3124| + 3125| 60 '주 소 :', + 3126| 71 L_AAA. + 3127| + 3128| + 3129| + 3130| + 3131| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print the issue date, document count, boxed tax base/tax amounts and address on the tax invoice header line. +- 업무 키워드: 세금계산서 상단, 발행일, 공급가액, 세액 출력 +- English: Tax Invoice, Issue Date, WRITE +- 정의부(복사 시 함께 필요): [`YY1`](#decl-zfir0141-115-yy1), [`MM1`](#decl-zfir0141-115-mm1), [`DD1`](#decl-zfir0141-115-dd1), [`COUNT1`](#decl-zfir0141-109-count1), [`AMT_BASE`](#decl-zfir0141-470-amt_base), [`AMT_TAX`](#decl-zfir0141-472-amt_tax), [`L_AAA`](#decl-zfir0141-3035-l_aaa) +- 위치: `abap://ZFIR0141/ZFIR0141#L3115-L3131` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_AMOUNT#C2` + +### FORM WRITE_ITEM_SD — `ZFIR0141` L4611-L4671 (61줄) + +*SD 빌링 기준 세금계산서 품목 라인 한 줄의 공급가액·세액 부호와 정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.* + +> 이 unit 의 조각 2개가 51/61줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전기일에서 월·일을 추출하고 공급가액(NETWR)·세액(MWSBP) 문자열의 '-' 부호를 앞으로 옮긴 뒤 CIRCULAR SHIFT 로 우측 정렬한다. + +```abap + 4616| MM = P_MATZEIL-BUDAT+4(2). DD = P_MATZEIL-BUDAT+6(2). + 4617| * 마이너스부호 앞으로 보낸다 + 4618| IF P_MATZEIL-NETWR CA '-'. + 4619| SHIFT P_MATZEIL-NETWR RIGHT CIRCULAR. + 4620| ENDIF. + 4621| CONDENSE P_MATZEIL-NETWR NO-GAPS. + 4622| * 오른쪽 정렬 + 4623| L_LEN = STRLEN( P_MATZEIL-NETWR ). + 4624| DO L_LEN TIMES. + 4625| SHIFT P_MATZEIL-NETWR CIRCULAR. + 4626| ENDDO. + 4627| * 마이너스부호 앞으로 보낸다 + 4628| IF P_MATZEIL-MWSBP CA '-'. + 4629| SHIFT P_MATZEIL-MWSBP RIGHT CIRCULAR. + 4630| ENDIF. + 4631| CONDENSE P_MATZEIL-MWSBP NO-GAPS. + 4632| * 오른쪽 정렬 + 4633| L_LEN = STRLEN( P_MATZEIL-MWSBP ). + 4634| DO L_LEN TIMES. + 4635| SHIFT P_MATZEIL-MWSBP CIRCULAR. + 4636| ENDDO. +``` + +- **EN**: Extract month/day from the posting date and normalize sign and right-alignment of net value and tax amount strings. +- 업무 키워드: 월/일 추출, 음수 부호, 우측 정렬, 금액 편집 +- English: Formatting, Sign Handling, Posting Date +- 정의부(복사 시 함께 필요): [`MM`](#decl-zfir0141-4613-mm), [`DD`](#decl-zfir0141-4613-dd), [`L_LEN`](#decl-zfir0141-4613-l_len) +- 위치: `abap://ZFIR0141/ZFIR0141#L4616-L4636` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD#C1` + +#### [output] 월/일(0 이면 공백)·자재·판매단위·수량·단가·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식 컬럼 위치에 WRITE 한다. + +```abap + 4640| WRITE: / TEXT-CA2. + 4641| IF MM = 0. WRITE: 2 ' '. ELSE. WRITE: 2 MM. ENDIF. + 4642| WRITE: 5 TEXT-CA2. + 4643| IF DD = 0. WRITE: 6 ' '. ELSE. WRITE: 6 DD. ENDIF. + 4644| WRITE:10 TEXT-CA2, + 4645| 11 P_MATZEIL-MATNR, + 4646| 38 TEXT-CA2, + 4647| 39 P_MATZEIL-VRKME, 44 TEXT-CA2, 45 P_MATZEIL-FKIMG(8), + 4648| + 4649| + 4650| 54 TEXT-CA2, + 4651| 55 P_MATZEIL-UPRICE CURRENCY 'KRW', 72 TEXT-CA2, + 4652| + 4653| 73 P_MATZEIL-NETWR CURRENCY 'KRW', 89 TEXT-CA2, + 4654| + 4655| 90 P_MATZEIL-MWSBP CURRENCY 'KRW', 103 TEXT-CA2, + 4656| + 4657| 117 TEXT-CA2. + 4658| + 4659| + 4660| * 수정전 로직 2004.4.23 + 4661| * 11 p_matzeil-matnr, + 4662| * 28 text-ca2, + 4663| * 29 p_matzeil-vrkme, 34 text-ca2, 35 p_matzeil-fkimg(8), + 4664| * 45 text-ca2, + 4665| * 46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2, + 4666| * 64 p_matzeil-netwr CURRENCY 'KRW', 82 text-ca2, + 4667| * 83 p_matzeil-mwsbp CURRENCY 'KRW', 98 text-ca2, + 4668| * 117 text-ca2. + 4669| WRITE: / TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print month/day, material, sales unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice columns. +- 업무 키워드: 세금계산서 인쇄, 품목 라인, SD 빌링, 공급가액, 세액 +- English: Tax Invoice, Item Line, Billing, WRITE +- 정의부(복사 시 함께 필요): [`MM`](#decl-zfir0141-4613-mm), [`DD`](#decl-zfir0141-4613-dd) +- 위치: `abap://ZFIR0141/ZFIR0141#L4640-L4669` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD#C2` + +### FORM WRITE_ITEM_FI — `ZFIR0141` L4679-L4773 (95줄) + +*FI 전표 기준 세금계산서 품목 라인 한 줄의 단가를 공급가액/수량으로 계산하고 금액 부호·정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.* + +> 이 unit 의 조각 3개가 82/95줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수량(FKIMG)을 숫자로 변환하고 FM Z_FI_COMMA_DEL 로 공급가액(NETWR)의 콤마를 제거한 뒤 공급가액/수량/100 으로 인쇄용 단가(L_DANGA)를 계산한다. + +```abap + 4688| WRITE P_MATZEIL-FKIMG TO LN_FKIMG. + 4689| + 4690| CALL FUNCTION 'Z_FI_COMMA_DEL' + 4691| EXPORTING + 4692| INPUT = P_MATZEIL-NETWR + 4693| IMPORTING + 4694| OUTPUT = LN_NETWR. + 4695| + 4696| * O으로 나눌수 없다. + 4697| IF LN_FKIMG NE ' ' OR LN_FKIMG NE 0. + 4698| L_DANGA = LN_NETWR / LN_FKIMG. + 4699| L_DANGA = L_DANGA / 100. + 4700| ENDIF. +``` + +- **EN**: Convert quantity to numeric, strip commas from net value via FM Z_FI_COMMA_DEL and compute the unit price as net value divided by quantity (scaled by 100). +- 호출(파서): Z_FI_COMMA_DEL +- SAP 객체: Z_FI_COMMA_DEL +- 업무 키워드: 단가 계산, 수량, 공급가액, 콤마 제거 +- English: Unit Price, Quantity, Net Value +- 정의부(복사 시 함께 필요): [`LN_FKIMG`](#decl-zfir0141-4681-ln_fkimg), [`LN_NETWR`](#decl-zfir0141-4681-ln_netwr), [`L_DANGA`](#decl-zfir0141-4680-l_danga) +- 위치: `abap://ZFIR0141/ZFIR0141#L4688-L4700` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C1` + +#### [calculation] 수량·공급가액·세액 문자열을 CIRCULAR SHIFT 로 우측 정렬하고 음수면 '-' 부호를 앞으로 옮겨 세금계산서 인쇄 형식으로 정리한다. + +```abap + 4702| L_LEN = STRLEN( P_MATZEIL-FKIMG ). + 4703| DO L_LEN TIMES. + 4704| SHIFT P_MATZEIL-FKIMG CIRCULAR. + 4705| ENDDO. + 4706| + 4707| * 마이너스부호 앞으로 보내고 오른쪽 정렬 + 4708| IF P_MATZEIL-NETWR CA '-'. + 4709| SHIFT P_MATZEIL-NETWR RIGHT CIRCULAR. + 4710| ENDIF. + 4711| CONDENSE P_MATZEIL-NETWR NO-GAPS. + 4712| + 4713| L_LEN = STRLEN( P_MATZEIL-NETWR ). + 4714| DO L_LEN TIMES. + 4715| SHIFT P_MATZEIL-NETWR CIRCULAR. + 4716| ENDDO. + 4717| + 4718| * 마이너스부호 앞으로 보내고 오른쪽 정렬 + 4719| IF P_MATZEIL-MWSBP CA '-'. + 4720| SHIFT P_MATZEIL-MWSBP RIGHT CIRCULAR. + 4721| ENDIF. + 4722| CONDENSE P_MATZEIL-MWSBP NO-GAPS. + 4723| + 4724| L_LEN = STRLEN( P_MATZEIL-MWSBP ). + 4725| DO L_LEN TIMES. + 4726| SHIFT P_MATZEIL-MWSBP CIRCULAR. + 4727| ENDDO. +``` + +- **EN**: Right-align quantity, net value and tax amount strings and move the minus sign to the front for printing. +- 업무 키워드: 우측 정렬, 음수 부호, 금액 편집 +- English: Formatting, Sign Handling +- 정의부(복사 시 함께 필요): [`L_LEN`](#decl-zfir0141-4680-l_len) +- 위치: `abap://ZFIR0141/ZFIR0141#L4702-L4727` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C2` + +#### [output] 월/일(0 이면 공백)·자재·단위·수량·단가(0 이면 공백)·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식 컬럼 위치에 WRITE 한다. + +```abap + 4729| WRITE: / TEXT-CA2. + 4730| IF MM = 0. WRITE: 2 ' '. ELSE. WRITE: 2 MM. ENDIF. + 4731| WRITE: 5 TEXT-CA2. + 4732| IF DD = 0. WRITE: 6 ' '. ELSE. WRITE: 6 DD. ENDIF. + 4733| WRITE:10 TEXT-CA2, + 4734| 11 P_MATZEIL-MATNR, 38 TEXT-CA2, + 4735| 39 P_MATZEIL-VRKME, 44 TEXT-CA2, 45 P_MATZEIL-FKIMG+5(8), + 4736| + 4737| 54 TEXT-CA2. + 4738| + 4739| IF L_DANGA EQ 0. + 4740| + 4741| WRITE:55 ' '. + 4742| + 4743| ELSE. + 4744| + 4745| WRITE:55 L_DANGA CURRENCY 'KRW'. + 4746| + 4747| ENDIF. + 4748| + 4749| + 4750| WRITE:72 TEXT-CA2, + 4751| * 46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2, + 4752| 73 P_MATZEIL-NETWR CURRENCY 'KRW', 89 TEXT-CA2, + 4753| 90 P_MATZEIL-MWSBP CURRENCY 'KRW', 103 TEXT-CA2, + 4754| 117 TEXT-CA2. + 4755| + 4756| + 4757| * 11 p_matzeil-matnr, 28 text-ca2, + 4758| * 29 p_matzeil-vrkme, 34 text-ca2, 35 p_matzeil-fkimg+5(8), + 4759| * 45 text-ca2. + 4760| * IF l_danga EQ 0. + 4761| * WRITE:46 ' '. + 4762| * ELSE. + 4763| * WRITE:46 l_danga CURRENCY 'KRW'. + 4764| * ENDIF. + 4765| * + 4766| * WRITE:63 text-ca2, + 4767| ** 46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2, + 4768| * 64 p_matzeil-netwr CURRENCY 'KRW', 82 text-ca2, + 4769| * 83 p_matzeil-mwsbp CURRENCY 'KRW', 98 text-ca2, + 4770| * 117 text-ca2. + 4771| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print month/day, material, unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice columns. +- 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액 +- English: Tax Invoice, Item Line, WRITE +- 정의부(복사 시 함께 필요): [`MM`](#decl-zfir0141-4680-mm), [`DD`](#decl-zfir0141-4680-dd), [`L_DANGA`](#decl-zfir0141-4680-l_danga) +- 위치: `abap://ZFIR0141/ZFIR0141#L4729-L4771` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C3` + +### FORM CHECK_RECEIPT — `ZFIR0141` L3232-L3266 (35줄) + +*세금계산서 하단 '영수' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 영수 체크 아이콘과 '이 금액을 영수함' 문구를 표시한다.* + +> 이 unit 의 조각 2개가 28/35줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 합계금액 FELD3 을 문자로 편집하고 음수면 '-' 부호를 맨 앞으로 옮긴 뒤 공백을 제거하고 CIRCULAR SHIFT 로 우측 정렬한다. + +```abap + 3236| WRITE FELD3 TO L_TOTAL. + 3237| + 3238| * 마이너스부호 앞으로 보낸다 + 3239| IF L_TOTAL CA '-'. + 3240| SHIFT L_TOTAL RIGHT CIRCULAR. + 3241| ENDIF. + 3242| CONDENSE L_TOTAL NO-GAPS. + 3243| * 오른쪽 정렬 + 3244| L_LEN = STRLEN( L_TOTAL ). + 3245| DO L_LEN TIMES. + 3246| SHIFT L_TOTAL CIRCULAR. + 3247| ENDDO. +``` + +- **EN**: Format the total amount, move the minus sign to the front, condense and right-align it for the tax invoice footer. +- 업무 키워드: 합계금액, 음수 부호, 우측 정렬 +- English: Total Amount, Sign Handling, Formatting +- 정의부(복사 시 함께 필요): [`FELD3`](#decl-zfir0141-107-feld3), [`L_TOTAL`](#decl-zfir0141-3233-l_total), [`L_LEN`](#decl-zfir0141-3233-l_len) +- 위치: `abap://ZFIR0141/ZFIR0141#L3236-L3247` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#CHECK_RECEIPT#C1` + +#### [output] 세금계산서 하단에 합계금액과 '영수' 구분(ICON_CHECKED) 및 '이 금액을 … 함' 문구를 양식 위치에 맞춰 WRITE 로 인쇄한다. + +```abap + 3249| WRITE:/ TEXT-CA2, 2 TEXT-YA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3250| 80 TEXT-CA2, 94 ICON_CHECKED AS ICON, + 3251| 98 TEXT-YA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3252| 117 TEXT-CA2. + 3253| + 3254| WRITE:/ TEXT-C13, + 3255| 84 '이 금액을' COLOR COL_BACKGROUND INTENSIFIED OFF, + 3256| 117 TEXT-CA2, + 3257| 105 '함' COLOR COL_BACKGROUND INTENSIFIED OFF. + 3258| + 3259| WRITE:/ TEXT-CA2, 2 TEXT-YA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3260| 3 L_TOTAL, 80 TEXT-CA2, + 3261| 98 TEXT-YA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3262| 117 TEXT-CA2. + 3263| + 3264| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print the tax invoice footer with the total amount, the receipt (영수) check icon and the receipt statement text. +- SAP 객체: ICON_CHECKED +- 업무 키워드: 세금계산서 하단, 영수 구분, 합계금액 출력 +- English: Tax Invoice, Receipt Indicator, WRITE +- 정의부(복사 시 함께 필요): [`L_TOTAL`](#decl-zfir0141-3233-l_total) +- 위치: `abap://ZFIR0141/ZFIR0141#L3249-L3264` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#CHECK_RECEIPT#C2` + +### FORM CHECK_BILLING — `ZFIR0141` L3275-L3307 (33줄) + +*세금계산서 하단 '청구' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 청구 체크 아이콘을 표시한다.* + +> 이 unit 의 조각 2개가 26/33줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 합계금액 FELD3 을 문자로 편집하고 음수면 '-' 부호를 맨 앞으로 옮긴 뒤 공백을 제거하고 CIRCULAR SHIFT 로 우측 정렬한다. + +```abap + 3279| WRITE FELD3 TO L_TOTAL. + 3280| + 3281| * 마이너스부호 앞으로 보낸다 + 3282| IF L_TOTAL CA '-'. + 3283| SHIFT L_TOTAL RIGHT CIRCULAR. + 3284| ENDIF. + 3285| CONDENSE L_TOTAL NO-GAPS. + 3286| * 오른쪽 정렬 + 3287| L_LEN = STRLEN( L_TOTAL ). + 3288| DO L_LEN TIMES. + 3289| SHIFT L_TOTAL CIRCULAR. + 3290| ENDDO. +``` + +- **EN**: Format the total amount, move the minus sign to the front, condense and right-align it for the tax invoice footer. +- 업무 키워드: 합계금액, 음수 부호, 우측 정렬, 금액 편집 +- English: Total Amount, Sign Handling, Formatting +- 정의부(복사 시 함께 필요): [`FELD3`](#decl-zfir0141-107-feld3), [`L_TOTAL`](#decl-zfir0141-3276-l_total), [`L_LEN`](#decl-zfir0141-3276-l_len) +- 위치: `abap://ZFIR0141/ZFIR0141#L3279-L3290` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#CHECK_BILLING#C1` + +#### [output] 세금계산서 하단에 합계금액과 '청구' 구분(ICON_CHECKED)을 양식 위치에 맞춰 WRITE 로 인쇄한다. + +```abap + 3292| WRITE:/ TEXT-CA2, 2 TEXT-YA5 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3293| 80 TEXT-CA2, 98 TEXT-YA7 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3294| 117 TEXT-CA2. + 3295| + 3296| WRITE:/ TEXT-C13, 117 TEXT-CA2. + 3297| + 3298| WRITE:/ TEXT-CA2, 2 TEXT-YA6 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3299| 3 L_TOTAL, + 3300| 80 TEXT-CA2, + 3301| 94 ICON_CHECKED AS ICON, + 3302| 98 TEXT-YA8 COLOR COL_BACKGROUND INTENSIFIED OFF, + 3303| 117 TEXT-CA2. + 3304| + 3305| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print the footer of the tax invoice with the total amount and the 'billing' (청구) check icon. +- SAP 객체: ICON_CHECKED +- 업무 키워드: 세금계산서 하단, 청구 구분, 합계금액 출력 +- English: Tax Invoice, Billing Indicator, WRITE +- 정의부(복사 시 함께 필요): [`L_TOTAL`](#decl-zfir0141-3276-l_total) +- 위치: `abap://ZFIR0141/ZFIR0141#L3292-L3305` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#CHECK_BILLING#C2` + +### FORM SMARTBILL_TRANS — `ZFIR0141` L4829-L5144 (316줄) + +*선택된 세금계산서를 스마트빌 전송용 헤더(GT_ZSBBSEG)·품목(GT_ZSBISSUE) 데이터로 변환하고 사업자단위과세 적용 시 공급자 정보를 대표 사업장으로 바꾼 뒤 이메일 확인 팝업(화면 100)을 띄운다.* + +> 이 unit 의 조각 10개가 208/316줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 출력 대상을 고객·사업장·세금계산서번호로 정렬하고 세금계산서(AUGBL)별 전표를 DOC_CNT_ITAB 에 모아 마지막 전표를 읽으며, 판매 품목 수(LINE_COUNT)를 세고 고객 유형별 헤더 파트1을 KIND_OF_CUSTOMERS_SMARTBILL 로 채운다. + +```abap + 4831| SORT AUSGLOP_ITAB BY KUNNR BUPLA AUGBL. + 4832| LOOP AT AUSGLOP_ITAB. + 4833| + 4834| LINE_COUNT_PR = 0. + 4835| SEL_INDEX = SY-TABIX. + 4836| GT_CNT = 0. + 4837| + 4838| * AT NEW AUGBL. + 4839| CLEAR L_LINES. + 4840| CLEAR DOC_CNT_ITAB. + 4841| REFRESH DOC_CNT_ITAB. + 4842| + 4843| LOOP AT AUSGLOP_ITAB WHERE AUGBL = AUSGLOP_ITAB-AUGBL. + 4844| + 4845| MOVE AUSGLOP_ITAB TO DOC_CNT_ITAB. + 4846| APPEND DOC_CNT_ITAB. + 4847| ENDLOOP. + 4848| + 4849| + 4850| SORT DOC_CNT_ITAB BY BUDAT BELNR . + 4851| + 4852| DESCRIBE TABLE DOC_CNT_ITAB LINES L_LINES. + 4853| + 4854| READ TABLE DOC_CNT_ITAB INDEX L_LINES. + 4855| + 4856| IF AUSGLOP_ITAB-AUGBL NE AUGBL. + 4857| READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX. + 4858| CLEAR AUSGLOP_MAT_ITAB. + 4859| CLEAR ALL_ITEMS_ITAB. + 4860| + 4861| * number of item lines in ausglop_mat_itab --> number of sold + 4862| * materials + 4863| LINE_COUNT = 0. + 4864| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4865| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4866| AND STCD = AUSGLOP_ITAB-STCD + 4867| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4868| LINE_COUNT = LINE_COUNT + 1. + 4869| ENDLOOP. + 4870| + 4871| * 고객종류에 따라(On-Time, Master) + 4872| PERFORM KIND_OF_CUSTOMERS_SMARTBILL. +``` + +- **EN**: Sort output rows, collect documents per tax invoice number, count sold material lines and fill supplier/buyer header data via KIND_OF_CUSTOMERS_SMARTBILL. +- 호출(파서): KIND_OF_CUSTOMERS_SMARTBILL +- 업무 키워드: 세금계산서 번호, 전표 집계, 품목 수, 고객 유형 +- English: Tax Invoice, Document Count, Customer Type, Smartbill +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BUPLA`](#decl-zfir0141-126-bupla), [`AUGBL`](#decl-zfir0141-461-augbl), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`SEL_INDEX`](#decl-zfir0141-96-sel_index), [`GT_CNT`](#decl-zfir0141-144-gt_cnt), [`L_LINES`](#decl-zfir0141-114-l_lines), [`DOC_CNT_ITAB`](#decl-zfir0141-232-doc_cnt_itab), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`LINE_COUNT`](#decl-zfir0141-93-line_count) +- 위치: `abap://ZFIR0141/ZFIR0141#L4831-L4872` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C1` + +#### [calculation] 세금계산서 헤더의 총금액(DMBTR)·총공급가액(HWBAS)·총세액(HWSTE)·통화 KRW 를 세팅하고 전표 건수(G_LINES)와 세율 플래그(FL_TAX_RAT)에 따라 비고(ZREMK)를 TEXT-001/002/003 으로 정한다. + +```abap + 4882| GT_ZSBBSEG-ZTTAT = AUSGLOP_ITAB-DMBTR. + 4883| * 총공급가액 + 4884| GT_ZSBBSEG-HWBAS = AUSGLOP_ITAB-HWBAS. + 4885| * 총세액 + 4886| GT_ZSBBSEG-HWSTE = AUSGLOP_ITAB-HWSTE. + 4887| * 통화 + 4888| GT_ZSBBSEG-HWAER = 'KRW'. + 4889| + 4890| * 비고 + 4891| IF G_LINES > 1 AND FL_TAX_RAT EQ '0'. + 4892| GT_ZSBBSEG-ZREMK = TEXT-001. + 4893| ELSEIF G_LINES EQ 1 AND FL_TAX_RAT EQ '0'. + 4894| GT_ZSBBSEG-ZREMK = TEXT-003. + 4895| ELSEIF G_LINES > 1 AND FL_TAX_RAT EQ '1'. + 4896| GT_ZSBBSEG-ZREMK = TEXT-002. + 4897| ELSE. + 4898| ENDIF. +``` + +- **EN**: Set total amount, tax base, tax amount and currency on the e-tax invoice header and choose the remark text based on document count and tax rate flag. +- SAP 객체: GT_ZSBBSEG +- 업무 키워드: 총금액, 공급가액, 세액, 비고, 세율 +- English: Total Amount, Tax Base, Tax Amount, Remark +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`G_LINES`](#decl-zfir0141-487-g_lines), [`FL_TAX_RAT`](#decl-zfir0141-488-fl_tax_rat) +- 위치: `abap://ZFIR0141/ZFIR0141#L4882-L4898` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C2` + +#### [control_flow] FILL_ITEM_TABLES_SMARTBILL 로 품목 라인 MATZEIL1~4 를 채운 뒤 원천 유형(VBRK=SD 빌링, BKPF=FI 전표)에 따라 WRITE_ITEM_SD_SMARTBILL 또는 WRITE_ITEM_FI_SMARTBILL 로 GT_ZSBISSUE 품목을 적재한다. + +```abap + 4907| PERFORM FILL_ITEM_TABLES_SMARTBILL. + 4908| + 4909| IF AUSGLOP_ITAB-AWTYP = 'VBRK'. + 4910| PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL1. + 4911| PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL2. + 4912| PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL3. + 4913| PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL4. + 4914| ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'. + 4915| PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL1. + 4916| PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL2. + 4917| PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL3. + 4918| PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL4. + 4919| * PERFORM write_lines_fi. + 4920| ENDIF. +``` + +- **EN**: Fill item lines and append them to GT_ZSBISSUE using the SD or FI item routine depending on the reference transaction type (VBRK/BKPF). +- 호출(파서): FILL_ITEM_TABLES_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL +- SAP 객체: VBRK, BKPF +- 업무 키워드: 품목 라인, SD 빌링, FI 전표, 스마트빌 품목 +- English: Billing Document, FI Document, Item, Reference Transaction +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4) +- 위치: `abap://ZFIR0141/ZFIR0141#L4907-L4920` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C3` + +#### [calculation] 헤더에 회사코드·고객·전표번호·회계연도·사업장·전기일을 넣고 발행일(ZMKDT)은 입력 SBLDAT 우선 아니면 반제일(AUGDT), 세금코드, 세금계산서 일련번호(AUGBL), 영수(1)/청구(18) 구분, 종류 '01', 빌링문서번호를 세팅해 GT_ZSBBSEG 에 APPEND 하고 품목을 정렬·중복 제거한다. + +```abap + 4942| GT_ZSBBSEG-BUKRS = AUSGLOP_ITAB-BUKRS. + 4943| GT_ZSBBSEG-KUNNR = AUSGLOP_ITAB-KUNNR. + 4944| GT_ZSBBSEG-BELNR = AUSGLOP_ITAB-BELNR. + 4945| GT_ZSBBSEG-GJAHR = AUSGLOP_ITAB-GJAHR. + 4946| GT_ZSBBSEG-BUPLA = AUSGLOP_ITAB-BUPLA. + 4947| GT_ZSBBSEG-BUDAT = AUSGLOP_ITAB-BUDAT. + 4948| * 세금계산서 발행일자 + 4949| IF SBLDAT IS INITIAL. + 4950| GT_ZSBBSEG-ZMKDT = AUSGLOP_ITAB-AUGDT. + 4951| ELSE. + 4952| GT_ZSBBSEG-ZMKDT = SBLDAT. + 4953| ENDIF. + 4954| * IF SN1OP EQ 'X'. " 통합 세금계산서 발행일 경우 + 4955| ** 전기일자의 말일. + 4956| * CALL FUNCTION 'LAST_DAY_OF_MONTHS' + 4957| * EXPORTING + 4958| * DAY_IN = DOC_CNT_ITAB-BUDAT + 4959| * IMPORTING + 4960| * LAST_DAY_OF_MONTH = GT_ZSBBSEG-ZMKDT + 4961| * EXCEPTIONS + 4962| * DAY_IN_NO_DATE = 1 + 4963| * OTHERS = 2. + 4964| * ELSE. + 4965| * GT_ZSBBSEG-ZMKDT = DOC_CNT_ITAB-BUDAT. + 4966| * ENDIF. + 4967| * 세금코드 + 4968| GT_ZSBBSEG-MWSKZ = AUSGLOP_ITAB-MWSKZ. + 4969| + 4970| * 세금계산서 일련번호 + 4971| GT_ZSBBSEG-ZSQNO = AUSGLOP_ITAB-AUGBL. + 4972| * 영수/청구 구분 + 4973| IF RECEIPT = 'X'. + 4974| GT_ZSBBSEG-ZRPTP = '1'. " 영수 + 4975| ELSE. + 4976| GT_ZSBBSEG-ZRPTP = '18'. " 청구 + 4977| ENDIF. + 4978| + 4979| * 세금계산서 종류 + 4980| GT_ZSBBSEG-ZDTIG = '01'. " 과세, 영세 + 4981| * 대금청구문서번호(Billing Doc) + 4982| GT_ZSBBSEG-VBELN = AUSGLOP_ITAB-VBELN. + 4983| + 4984| ENDIF. + 4985| CLEAR AUGBL. + 4986| + 4987| * ENDAT. + 4988| + 4989| APPEND GT_ZSBBSEG. + 4990| CLEAR : GT_ZSBBSEG, GT_CNT. + 4991| + 4992| ENDLOOP. + 4993| + 4994| SORT GT_ZSBISSUE BY KUNNR BUZEI. + 4995| + 4996| DELETE ADJACENT DUPLICATES FROM GT_ZSBISSUE + 4997| COMPARING KUNNR ZSQNO BUZEI. +``` + +- **EN**: Populate header keys, issue date (SBLDAT or clearing date), tax code, invoice sequence, receipt/billing type, invoice kind and billing document into GT_ZSBBSEG, then sort and dedupe GT_ZSBISSUE. +- SAP 객체: GT_ZSBBSEG, GT_ZSBISSUE +- 업무 키워드: 세금계산서 발행일, 영수/청구, 세금코드, 빌링문서, 일련번호, 중복 제거 +- English: Issue Date, Receipt, Billing, Tax Code, Billing Document +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`SBLDAT`](#decl-zfir0141-638-sbldat), [`RECEIPT`](#decl-zfir0141-700-receipt), [`AUGBL`](#decl-zfir0141-461-augbl), [`GT_CNT`](#decl-zfir0141-144-gt_cnt), [`GT_ZSBISSUE`](#decl-zfir0141-500-gt_zsbissue) +- 위치: `abap://ZFIR0141/ZFIR0141#L4942-L4997` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C4` + +#### [sql_select] 시스템ID·회사코드로 전자세금계산서 설정 ZDTI_CONFIG 를 조회해 사업자단위과세(ONEBUPLA) 적용이고 발행일이 적용 시작일(BUPLADATE) 이후이면 FLAG_ONEBUPLA 를 켠다. + +```abap + 5001| READ TABLE GT_ZSBBSEG INDEX 1. + 5002| SELECT SINGLE * FROM ZDTI_CONFIG + 5003| WHERE SYSID = SY-SYSID + 5004| AND BUKRS = GT_ZSBBSEG-BUKRS. + 5005| IF ZDTI_CONFIG-ONEBUPLA = 'X' + 5006| AND GT_ZSBBSEG-ZMKDT >= ZDTI_CONFIG-BUPLADATE. + 5007| FLAG_ONEBUPLA = 'X'. + 5008| ELSE. + 5009| CLEAR FLAG_ONEBUPLA. + 5010| ENDIF. +``` + +- **EN**: Read ZDTI_CONFIG for the company code and set FLAG_ONEBUPLA when unit-of-business taxation applies from the configured date. +- 테이블(파서): read [ZDTI_CONFIG](/tables/ZDTI_CONFIG.md) / write - +- SAP 객체: ZDTI_CONFIG +- 업무 키워드: 사업자단위과세, 전자세금계산서 설정, 적용 시작일 +- English: Configuration, Business Place, Taxation Unit +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ZDTI_CONFIG`](#decl-zfir0141-150-zdti_config), [`FLAG_ONEBUPLA`](#decl-zfir0141-152-flag_onebupla) +- 위치: `abap://ZFIR0141/ZFIR0141#L5001-L5010` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C5` + +#### [sql_select] 사업자단위과세 적용 시 각 헤더의 사업장(J_1BBRANCH)과 주소(ADRC)로 비고란(ZREMK)에 실제 사업장 명·주소를 넣고, 공급자 정보(사업자번호·상호·대표자·업태·업종·주소)를 ZDTI_CONFIG 의 대표 사업장 기준으로 교체해 GT_ZSBBSEG 를 MODIFY 한다. + +```abap + 5014| IF FLAG_ONEBUPLA = 'X'. + 5015| * 사업자단위과세 적용시 - 헤더 비고란 수정 (2008.01.15) + 5016| LOOP AT GT_ZSBBSEG. + 5017| + 5018| CLEAR : J_1BBRANCH, ADRC. + 5019| SELECT SINGLE * FROM J_1BBRANCH + 5020| WHERE BUKRS EQ GT_ZSBBSEG-BUKRS + 5021| AND BRANCH EQ GT_ZSBBSEG-BUPLA. + 5022| SELECT SINGLE * FROM ADRC + 5023| WHERE ADDRNUMBER EQ J_1BBRANCH-ADRNR. + 5024| + 5025| CONCATENATE J_1BBRANCH-NAME ADRC-CITY1 ADRC-STREET ADRC-HOUSE_NUM1 + 5026| INTO GT_ZSBBSEG-ZREMK SEPARATED BY SPACE. + 5027| + 5028| MODIFY GT_ZSBBSEG TRANSPORTING ZREMK + 5029| WHERE BUKRS = GT_ZSBBSEG-BUKRS + 5030| AND KUNNR = GT_ZSBBSEG-KUNNR + 5031| AND ZSQNO = GT_ZSBBSEG-ZSQNO. + 5032| + 5033| * 공급자 정보를 대표사업자번호에 해당하는 내용으로 수정 + 5034| SELECT SINGLE * FROM J_1BBRANCH + 5035| WHERE BUKRS EQ GT_ZSBBSEG-BUKRS + 5036| AND BRANCH EQ ZDTI_CONFIG-BUPLA. + 5037| SELECT SINGLE * FROM ADRC + 5038| WHERE ADDRNUMBER EQ J_1BBRANCH-ADRNR. + 5039| + 5040| GT_ZSBBSEG-SUPNO = ZDTI_CONFIG-STCD2. "* 공급자 사업자번호 + 5041| GT_ZSBBSEG-ZSPCN = J_1BBRANCH-NAME. "* 공급자 회사명 + 5042| GT_ZSBBSEG-ZSPNM = J_1BBRANCH-KR_REPRES. "* 공급자 대표자명 + 5043| GT_ZSBBSEG-ZSPIT = J_1BBRANCH-KR_BUSTYPE."* 공급자 업태 + 5044| GT_ZSBBSEG-ZSPBT = J_1BBRANCH-KR_INDTYPE."* 공급자 업종 + 5045| CONCATENATE ADRC-CITY1 ADRC-STREET + 5046| INTO GT_ZSBBSEG-ZSPAR SEPARATED BY SPACE. "공급자 주소 + 5047| + 5048| MODIFY GT_ZSBBSEG TRANSPORTING SUPNO ZSPCN ZSPNM ZSPIT ZSPBT + 5049| WHERE BUKRS = GT_ZSBBSEG-BUKRS + 5050| AND KUNNR = GT_ZSBBSEG-KUNNR + 5051| AND ZSQNO = GT_ZSBBSEG-ZSQNO. + 5052| ENDLOOP. + 5053| ENDIF. +``` + +- **EN**: Under unit-of-business taxation, put the actual business place name/address into the remark and replace supplier fields with the representative business place from ZDTI_CONFIG using J_1BBRANCH and ADRC. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md), [ADRC](/tables/ADRC.md) / write - +- SAP 객체: J_1BBRANCH, ADRC, ZDTI_CONFIG +- 업무 키워드: 사업자단위과세, 대표 사업장, 공급자 정보, 사업장 주소, 비고 +- English: Business Place, J_1BBRANCH, Address, Supplier +- 정의부(복사 시 함께 필요): [`FLAG_ONEBUPLA`](#decl-zfir0141-152-flag_onebupla), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`J_1BBRANCH`](#decl-zfir0141-47-j_1bbranch), [`ADRC`](#decl-zfir0141-151-adrc), [`ZDTI_CONFIG`](#decl-zfir0141-150-zdti_config) +- 위치: `abap://ZFIR0141/ZFIR0141#L5014-L5053` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C6` + +#### [output] 헤더를 GT_MAIL 로 COLLECT 해 고객 이메일 입력용 목록을 만들고 STATUS0100/TITLE0100 을 설정한 뒤 화면 100 을 팝업으로 호출해 사용자가 수신 이메일을 확인·입력하게 한다. + +```abap + 5059| LOOP AT GT_ZSBBSEG. + 5060| MOVE-CORRESPONDING GT_ZSBBSEG TO GT_MAIL. + 5061| COLLECT GT_MAIL. + 5062| CLEAR : GT_MAIL, GT_ZSBBSEG. + 5063| ENDLOOP. + 5064| + 5065| SET PF-STATUS 'STATUS0100'. + 5066| SET TITLEBAR 'TITLE0100'. + 5067| + 5068| CALL SCREEN 100 STARTING AT 10 2 + 5069| ENDING AT 116 20. +``` + +- **EN**: Collect header rows into GT_MAIL and call screen 100 as a popup so the user can review or enter customer e-mail addresses before transmission. +- 호출(파서): 100 +- 업무 키워드: 이메일 입력, 팝업 화면, 전송 전 확인 +- English: E-Mail, Popup Screen, CALL SCREEN +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`GT_MAIL`](#decl-zfir0141-503-gt_mail) +- 위치: `abap://ZFIR0141/ZFIR0141#L5059-L5069` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C7` + +#### [calculation] 전송 확정(&NT1) 시 화면에서 입력받은 GT_MAIL 의 이메일(ZBYRE)을 회사코드·고객·일련번호가 일치하는 GT_ZSBBSEG 헤더에 MODIFY 로 반영한다. + +```abap + 5071| IF SAVE_CODE EQ '&NT1'. + 5072| LOOP AT GT_MAIL. + 5073| CLEAR GT_ZSBBSEG-ZBYRE. + 5074| GT_ZSBBSEG-ZBYRE = GT_MAIL-ZBYRE. + 5075| MODIFY GT_ZSBBSEG TRANSPORTING ZBYRE + 5076| WHERE BUKRS = GT_MAIL-BUKRS + 5077| AND KUNNR = GT_MAIL-KUNNR + 5078| AND ZSQNO = GT_MAIL-ZSQNO. + 5079| ENDLOOP. +``` + +- **EN**: On transmit confirmation, copy the user-entered e-mail addresses from GT_MAIL into the matching e-tax invoice header rows. +- SAP 객체: GT_ZSBBSEG +- 업무 키워드: 수신 이메일, 헤더 갱신, 전송 확정 +- English: E-Mail, Header Update, Electronic Tax Invoice +- 정의부(복사 시 함께 필요): [`OK_CODE`](#decl-zfir0141-613-ok_code), [`SAVE_CODE`](#decl-zfir0141-614-save_code), [`GT_MAIL`](#decl-zfir0141-503-gt_mail), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg) +- 위치: `abap://ZFIR0141/ZFIR0141#L5071-L5079` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C8` + +#### [interface] TRANSMIT_TO_SMARTBILL 로 전자세금계산서를 스마트빌(Z_SB_DTI_ISSUE)에 전송하고 SAVE_RETURN_CODE_TO_AUSGLOP 으로 리턴 코드를 AUSGLOP_ITAB/SEL_AUSGLOP_ITAB 의 RESULT 에 저장한다. + +```abap + 5087| PERFORM TRANSMIT_TO_SMARTBILL CHANGING RETURN_CODE. + 5088| + 5089| PERFORM SAVE_RETURN_CODE_TO_AUSGLOP USING RETURN_CODE. +``` + +- **EN**: Transmit the e-tax invoice to Smartbill and store the return code on the output tables. +- 호출(파서): TRANSMIT_TO_SMARTBILL, SAVE_RETURN_CODE_TO_AUSGLOP +- SAP 객체: Z_SB_DTI_ISSUE +- 업무 키워드: 스마트빌 전송, 리턴 코드, 발행 결과 +- English: Smartbill, Transmission, Return Code +- 정의부(복사 시 함께 필요): [`RETURN_CODE`](#decl-zfir0141-145-return_code) +- 위치: `abap://ZFIR0141/ZFIR0141#L5087-L5089` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C9` + +#### [interface] 전송 결과가 담긴 SEL_AUSGLOP_ITAB 을 ABAP 메모리 ID 'TI' 로 EXPORT 해 호출 프로그램(ZFIR0140 등)이 결과를 읽게 하고 전송 테이블을 초기화한다. + +```abap + 5136| EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'. + 5137| ENDIF. + 5138| + 5139| + 5140| * 호출이 끝난 이후 clear, refresh + 5141| CLEAR : GT_ZSBBSEG, GT_ZSBBSEG[], GT_ZSBISSUE, GT_ZSBISSUE[]. +``` + +- **EN**: Export SEL_AUSGLOP_ITAB with transmission results to ABAP memory ID 'TI' for the calling program and clear the transmission tables. +- 업무 키워드: 메모리 EXPORT, 호출 프로그램 연계, 전송 결과 +- English: ABAP Memory, EXPORT, Result +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0141-408-sel_ausglop_itab), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`GT_ZSBISSUE`](#decl-zfir0141-500-gt_zsbissue) +- 위치: `abap://ZFIR0141/ZFIR0141#L5136-L5141` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C10` + +### FORM KIND_OF_CUSTOMERS_SMARTBILL — `ZFIR0141` L5153-L5208 (56줄) + +*고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 스마트빌 헤더 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1_SMARTBILL 로 채운다.* + +> 이 unit 의 조각 2개가 44/56줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 일회성 고객(XCPDK='X')이면 고객번호·사업자번호로 ADDRESS_ITAB 을 READ 하고 사업장·세금계산서번호에 해당하는 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1_SMARTBILL 로 공급자/공급받는자 정보를 채운다. + +```abap + 5157| IF AUSGLOP_ITAB-XCPDK = 'X'. + 5158| + 5159| READ TABLE ADDRESS_ITAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR + 5160| STCD = AUSGLOP_ITAB-STCD. + 5161| + 5162| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 5163| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5164| * Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고) + 5165| PERFORM WRITE_PART1-1_SMARTBILL. + 5166| IF SY-SUBRC = 0. + 5167| EXIT. + 5168| ENDIF. + 5169| ENDLOOP. +``` + +- **EN**: For one-time (CPD) customers, read the address by customer and tax number, find the business place address and fill part 1 of the e-tax invoice header. +- 호출(파서): WRITE_PART1-1_SMARTBILL +- 업무 키워드: 일회성 고객, 사업장 주소, 공급받는자, 세금계산서 헤더 +- English: One-Time Customer, Business Place, Address, Electronic Tax Invoice +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L5157-L5169` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS_SMARTBILL#C1` + +#### [control_flow] 마스터 고객이면 KUNNR, 지점 고객이면 FILKD 기준으로 ADDRESS_ITAB 을 LOOP 하고 세금계산서 인쇄 모드(CHK_PRTI)에서 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1_SMARTBILL 로 헤더 파트1을 채운다(지점 고객 분기는 호출이 비어 있음). + +```abap + 5171| ELSE. + 5172| IF AUSGLOP_ITAB-FILKD = ' '. + 5173| + 5174| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-KUNNR. + 5175| + 5176| IF CHK_PRTI = 'X'. + 5177| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 5178| AND AUGBL = AUSGLOP_ITAB-AUGBL . + 5179| + 5180| * Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고) + 5181| * PERFORM WRITE_PART1-2. + 5182| PERFORM WRITE_PART1-1_SMARTBILL. + 5183| IF SY-SUBRC = 0. + 5184| EXIT. + 5185| ENDIF. + 5186| ENDLOOP. + 5187| ENDIF. + 5188| ENDLOOP. + 5189| ELSE. + 5190| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-FILKD. + 5191| IF CHK_PRTI = 'X'. + 5192| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 5193| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5194| IF SY-SUBRC = 0. + 5195| EXIT. + 5196| ENDIF. + 5197| + 5198| ENDLOOP. + 5199| ENDIF. + 5200| ENDLOOP. + 5201| ENDIF. +``` + +- **EN**: For master customers (by KUNNR) or branch customers (by FILKD), loop the address table and business place address to fill part 1 of the header via WRITE_PART1-1_SMARTBILL. +- 호출(파서): WRITE_PART1-1_SMARTBILL +- 업무 키워드: 마스터 고객, 지점 고객, 사업장 주소, 헤더 파트1 +- English: Customer Master, Branch, Business Place, Electronic Tax Invoice +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L5171-L5201` · confidence 0.75 · `ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS_SMARTBILL#C2` + +### FORM WRITE_PART1-1_SMARTBILL — `ZFIR0141` L5217-L5284 (68줄) + +*전자세금계산서 헤더(GT_ZSBBSEG)의 공급자(사업장)·공급받는자(고객) 정보(주소·사업자번호·상호·대표자·업종·업태·담당자 이메일/전화)를 채운다.* + +> 이 unit 의 조각 3개가 58/68줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 사업장 주소 BUPLA_ADRESSE 에서 공급자 주소(ZSPAR)·사업자번호(SUPNO, STCD2 앞 10자리)·상호·대표자명·업종·업태를 GT_ZSBBSEG 에 세팅하고 고객 주소(ADDRESS_ITAB)에서 공급받는자 주소(ZBYAR)를 만든다. + +```abap + 5221| CONCATENATE BUPLA_ADRESSE-CITY1 + 5222| * CONCATENATE bupla_adresse-city1 bupla_adresse-city2 + 5223| BUPLA_ADRESSE-STREET INTO GT_ZSBBSEG-ZSPAR SEPARATED BY SPACE. + 5224| + 5225| * 공급자 주소 + 5226| CONCATENATE ADDRESS_ITAB-ORT01 + 5227| * CONCATENATE address_itab-ort01 address_itab-ort02 + 5228| ADDRESS_ITAB-STRAS INTO GT_ZSBBSEG-ZBYAR SEPARATED BY SPACE. + 5229| + 5230| * 공급자 사업자번호 + 5231| GT_ZSBBSEG-SUPNO = BUPLA_ADRESSE-STCD2+0(10). + 5232| * 공급자 상호 + 5233| GT_ZSBBSEG-ZSPCN = BUPLA_ADRESSE-NAME1. + 5234| * 공급자 대표자명 + 5235| GT_ZSBBSEG-ZSPNM = BUPLA_ADRESSE-KR_REPRES. + 5236| * 공급자 업종 + 5237| GT_ZSBBSEG-ZSPBT = BUPLA_ADRESSE-KR_INDTYPE. + 5238| * 공급자 업태 + 5239| GT_ZSBBSEG-ZSPIT = BUPLA_ADRESSE-KR_BUSTYPE. +``` + +- **EN**: Fill supplier data (address, tax number from STCD2, name, representative, industry and business type) from the business place address and the buyer address from ADDRESS_ITAB into the e-tax invoice header GT_ZSBBSEG. +- SAP 객체: GT_ZSBBSEG +- 업무 키워드: 공급자, 사업장, 사업자등록번호, 상호, 대표자, 업종, 업태 +- English: Supplier, Business Place, Tax Number, Electronic Tax Invoice +- 정의부(복사 시 함께 필요): [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L5221-L5239` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C1` + +#### [validation] 고객이 사업자(STCD2 있음)이면 사업자번호(10자리)·업종·업태·상호·대표자를 마스터 값으로, 개인이면 주민번호(STCD1 13자리)와 업종·업태 '서비스', 상호·대표자에 이름을 공급받는자 정보로 세팅한다. + +```abap + 5242| IF ADDRESS_ITAB-STCD2 <> ''. " 사업자 + 5243| * 공급받는자 사업자번호 + 5244| GT_ZSBBSEG-BUYNO = ADDRESS_ITAB-STCD2+0(10). + 5245| * 공급받는자 업종 + 5246| GT_ZSBBSEG-ZBYBT = ADDRESS_ITAB-BUSTYP. + 5247| * 공급받는자 업태 + 5248| GT_ZSBBSEG-ZBYIT = ADDRESS_ITAB-INDTYP. + 5249| * 공급받는자 상호 + 5250| GT_ZSBBSEG-ZBYCN = ADDRESS_ITAB-NAME. + 5251| * 공급받는자 대표자명 + 5252| GT_ZSBBSEG-ZBYNM = ADDRESS_ITAB-REPRE. + 5253| + 5254| ELSE. " 개인 + 5255| * 공급받는자 사업자번호 + 5256| GT_ZSBBSEG-BUYNO = ADDRESS_ITAB-STCD1+0(13). + 5257| * 공급받는자 업종 + 5258| GT_ZSBBSEG-ZBYBT = '서비스'. + 5259| * 공급받는자 업태 + 5260| GT_ZSBBSEG-ZBYIT = '서비스'. + 5261| * 공급받는자 상호 + 5262| GT_ZSBBSEG-ZBYCN = ADDRESS_ITAB-NAME. + 5263| * 공급받는자 대표자명 + 5264| GT_ZSBBSEG-ZBYNM = ADDRESS_ITAB-NAME. + 5265| + 5266| ENDIF. +``` + +- **EN**: Set buyer fields depending on whether the customer is a business (STCD2 present) or an individual (STCD1 resident number with default '서비스' industry/business type). +- SAP 객체: GT_ZSBBSEG +- 업무 키워드: 공급받는자, 사업자, 개인, 주민등록번호, 업종, 업태 +- English: Buyer, Tax Number, Individual Customer, Electronic Tax Invoice +- 정의부(복사 시 함께 필요): [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg) +- 위치: `abap://ZFIR0141/ZFIR0141#L5242-L5266` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C2` + +#### [sql_select] 공급받는자 담당자 이메일이 비어 있으면 고객 주소번호(ADRNR)로 ADR6 의 기본(FLGDEFAULT='X') SMTP 주소를 조회해 ZBYRE 에 넣고 담당자명·전화번호를 채운다. + +```abap + 5269| IF GT_ZSBBSEG-ZBYRE IS INITIAL. + 5270| SELECT SINGLE SMTP_ADDR INTO GT_ZSBBSEG-ZBYRE + 5271| FROM ADR6 + 5272| WHERE ADDRNUMBER = ADDRESS_ITAB-ADRNR + 5273| AND DATE_FROM = '00010101' + 5274| AND FLGDEFAULT = 'X'. + 5275| * AND CONSNUMBER = '001'. + 5276| ENDIF. + 5277| + 5278| * GT_ZSBBSEG-ZBYRE = 'kscho96@frontiers.co.kr'. + 5279| * 공급받는자 담당자명 + 5280| GT_ZSBBSEG-ZBYRN = ADDRESS_ITAB-REPRE. + 5281| * 공급받는자 담당자 전화번호 + 5282| GT_ZSBBSEG-ZBYRT = ADDRESS_ITAB-TELF1. +``` + +- **EN**: If the buyer e-mail is empty, read the default SMTP address from ADR6 by the customer address number and set the buyer contact name and phone. +- 테이블(파서): read [ADR6](/tables/ADR6.md) / write - +- SAP 객체: ADR6 +- 업무 키워드: 담당자 이메일, 전자세금계산서 수신, 주소번호, 전화번호 +- English: E-Mail Address, ADR6, Address Number, Contact +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L5269-L5282` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C3` + +### FORM FILL_ITEM_TABLES_SMARTBILL — `ZFIR0141` L5364-L5386 (23줄) + +*현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 스마트빌 품목 라인을 채우는 하위 FORM 을 호출한다.* + +> 이 unit 의 조각 1개가 11/23줄(48%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 별 CHECK_ITAB 을 LOOP 하며 PRINT_ITEM_PURE_SD_SMARTBILL, PRINT_ITEM_SD_AND_FI_SMARTBILL, PRINT_ITEM_PURE_FI_SMARTBILL 을 차례로 호출해 품목 라인 MATZEIL1~4 를 구성한다. + +```abap + 5374| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5375| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5376| AND STCD = AUSGLOP_ITAB-STCD + 5377| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5378| * SD-data + 5379| PERFORM PRINT_ITEM_PURE_SD_SMARTBILL. + 5380| * SD + FI-data + 5381| PERFORM PRINT_ITEM_SD_AND_FI_SMARTBILL. + 5382| * FI-data + 5383| PERFORM PRINT_ITEM_PURE_FI_SMARTBILL. + 5384| ENDLOOP. +``` + +- **EN**: Loop over CHECK_ITAB of the current tax invoice and dispatch to the pure-SD, SD+FI and pure-FI item filling routines for Smartbill. +- 호출(파서): PRINT_ITEM_PURE_SD_SMARTBILL, PRINT_ITEM_SD_AND_FI_SMARTBILL, PRINT_ITEM_PURE_FI_SMARTBILL +- 업무 키워드: 품목 라인 구성, 원천 유형, SD, FI, 스마트빌 +- English: Item Line, Billing Document, FI Document, Smartbill +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L5374-L5384` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#FILL_ITEM_TABLES_SMARTBILL#C1` + +### FORM PRINT_ITEM_PURE_SD_SMARTBILL — `ZFIR0141` L5601-L5648 (48줄) + +*순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(스마트빌용).* + +> 이 unit 의 조각 2개가 37/48줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 원천이 SD 빌링(VBRK)이고 FI 전표가 없는 순수 SD 건에서 세금계산서 인쇄 모드이면 품목 수에 따라 MATZEIL1~4 를 초기화한 뒤 PRINT_LINES_SMARTBILL 로 최대 4개 품목 라인을 채운다. + +```abap + 5603| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 5604| + 5605| IF CHECK_ITAB-AWTYP_FI = ' '. + 5606| * if document is a pure SD-document --> print max. 4 lines + 5607| IF CHK_PRTI = 'X'. + 5608| CLEAR LINE_COUNT_PR. + 5609| * if number of lines < 5 + 5610| * 4th Mat line in tax invoice + 5611| CLEAR MATNUM. + 5612| CLEAR NUMBER. + 5613| + 5614| IF LINE_COUNT < 5. + 5615| PERFORM PRINT_LINES_SMARTBILL. + 5616| ELSE. + 5617| CLEAR MATZEIL1. + 5618| CLEAR MATZEIL2. + 5619| CLEAR MATZEIL3. + 5620| CLEAR MATZEIL4. + 5621| CLEAR COUNT. + 5622| + 5623| PERFORM PRINT_LINES_SMARTBILL. + 5624| ENDIF. +``` + +- **EN**: For pure SD billing documents in tax invoice print mode, reset item lines and call PRINT_LINES_SMARTBILL to fill up to four item lines. +- 호출(파서): PRINT_LINES_SMARTBILL, PRINT_LINES_SMARTBILL +- SAP 객체: VBRK +- 업무 키워드: 순수 SD 빌링, 품목 라인, 세금계산서 인쇄 +- English: Billing Document, Item Line, Tax Invoice +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`MATNUM`](#decl-zfir0141-281-matnum), [`NUMBER`](#decl-zfir0141-282-number), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`COUNT`](#decl-zfir0141-124-count) +- 위치: `abap://ZFIR0141/ZFIR0141#L5603-L5624` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD_SMARTBILL#C1` + +#### [calculation] 추가 시트 인쇄 시 해당 세금계산서의 품목별 평균 단가(NETWR/FKIMG)를 계산해 AUSGLOP_MAT_ITAB-UPRICE 에 MODIFY 한다. + +```abap + 5627| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5628| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5629| AND STCD = AUSGLOP_ITAB-STCD + 5630| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5631| + 5632| * calculating the unit price as the average price of the reported + 5633| * material + 5634| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 5635| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 5636| ( AUSGLOP_MAT_ITAB-FKIMG ). + 5637| ELSE. + 5638| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 5639| ENDIF. + 5640| MODIFY AUSGLOP_MAT_ITAB. + 5641| ENDLOOP. +``` + +- **EN**: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB. +- 테이블(파서): read - / write [AUSGLOP_MAT_ITAB](/tables/AUSGLOP_MAT_ITAB.md) +- 업무 키워드: 추가 시트, 평균 단가, 품목 +- English: Additional Sheet, Unit Price +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L5627-L5641` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD_SMARTBILL#C2` + +### FORM PRINT_LINES_SMARTBILL — `ZFIR0141` L5473-L5563 (91줄) + +*세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외 N건' 요약 라인으로 만든다(스마트빌용).* + +> 이 unit 의 조각 2개가 82/91줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 판매 품목을 세금계산서번호·일자·자재로 정렬한 뒤 현재 세금계산서의 품목을 순서대로 1~3번째 라인 MATZEIL1~3 에 품목텍스트(ARKTX)·일자와 함께 옮기고 FILL_ITEM_AMOUNT_SMARTBILL 로 단가·수량·금액을 채운다. + +```abap + 5476| SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING. + 5477| + 5478| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5479| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5480| AND STCD = AUSGLOP_ITAB-STCD + 5481| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5482| + 5483| LINE_COUNT_PR = LINE_COUNT_PR + 1. + 5484| + 5485| IF LINE_COUNT_PR = 1. + 5486| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1. + 5487| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL1-ARKTX. + 5488| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG. + 5489| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL1-BUDAT. + 5490| + 5491| PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB + 5492| USING MATZEIL1. + 5493| ENDIF. + 5494| + 5495| IF LINE_COUNT_PR = 2. + 5496| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2. + 5497| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL2-ARKTX. + 5498| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL2-BUDAT. + 5499| * calculating the unit price as the average price of the reported + 5500| * material + 5501| + 5502| PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB + 5503| USING MATZEIL2. + 5504| ENDIF. + 5505| + 5506| IF LINE_COUNT_PR = 3. + 5507| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3. + 5508| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL3-ARKTX. + 5509| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL3-BUDAT. + 5510| * calculating the unit price as the average price of the reported + 5511| * material + 5512| PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB + 5513| USING MATZEIL3. + 5514| ENDIF. +``` + +- **EN**: Sort material lines and fill tax invoice item lines 1-3 with material text, date and amounts via FILL_ITEM_AMOUNT_SMARTBILL. +- 호출(파서): FILL_ITEM_AMOUNT_SMARTBILL, FILL_ITEM_AMOUNT_SMARTBILL, FILL_ITEM_AMOUNT_SMARTBILL +- 업무 키워드: 품목 라인, 정렬, 세금계산서 품목, 단가 +- English: Item Line, Sort, Tax Invoice, Material Text +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3) +- 위치: `abap://ZFIR0141/ZFIR0141#L5476-L5514` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_LINES_SMARTBILL#C1` + +#### [output] 품목이 5개 미만이면 4번째 품목을 MATZEIL4 에 그대로 채우고, 5개 이상이면 ALL_MAT_ITAB 의 합계 금액과 4번째 자재명·'외' 표기로 나머지 품목을 요약한 4번째 라인을 만든다. + +```abap + 5517| IF LINE_COUNT > 4 AND LINE_COUNT_PR = 4. + 5518| MOVE AUSGLOP_MAT_ITAB-MATNR TO MATNUM. + 5519| NUMBER = LINE_COUNT - 4. + 5520| ENDIF. + 5521| + 5522| + 5523| * Item 개수가 5개미만일 경우 + 5524| IF LINE_COUNT < 5. + 5525| IF LINE_COUNT_PR = 4. + 5526| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL4. + 5527| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX. + 5528| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 5529| * calculating the unit price as the average price of the reported + 5530| * material + 5531| PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB + 5532| USING MATZEIL4. + 5533| ENDIF. + 5534| * item 개수가 5개 이상일 경우 + 5535| ELSE. + 5536| READ TABLE ALL_MAT_ITAB WITH KEY BUKRS = AUSGLOP_ITAB-BUKRS + 5537| KUNNR = AUSGLOP_ITAB-KUNNR + 5538| STCD = AUSGLOP_ITAB-STCD + 5539| AUGBL = AUSGLOP_ITAB-AUGBL + 5540| FLAG = 'X'. + 5541| IF SY-SUBRC = 0. + 5542| * material description + 5543| MOVE AUSGLOP_MAT_ITAB-BUKRS TO MATZEIL4-BUKRS. + 5544| MOVE AUSGLOP_MAT_ITAB-KUNNR TO MATZEIL4-KUNNR. + 5545| WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX. + 5546| MOVE ALL_MAT_ITAB-NETWR TO MATZEIL4-NETWR. + 5547| MOVE ALL_MAT_ITAB-MWSBP TO MATZEIL4-MWSBP. + 5548| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 5549| * 4th mat line in tax invoice + 5550| MOVE MATNUM TO MATZEIL4-MATNR. "2 + 5551| MOVE '외' TO MATZEIL4-VRKME. + 5552| * MOVE number TO matzeil4-fkimg. + 5553| + 5554| * WRITE number TO matzeil4-uprice USING EDIT MASK'_______________' + 5555| * RIGHT-JUSTIFIED. + 5556| * MOVE text-034 TO matzeil4-uprice+5(3). + 5557| ENDIF. + 5558| + 5559| ENDIF. +``` + +- **EN**: If fewer than five items, fill line 4 normally; otherwise build a summary fourth line with totals from ALL_MAT_ITAB, the fourth material and the '외' (and others) marker. +- 호출(파서): FILL_ITEM_AMOUNT_SMARTBILL +- 업무 키워드: 요약 라인, 외 N건, 품목 수, 합계 금액 +- English: Summary Line, Item Count, Total Amount +- 정의부(복사 시 함께 필요): [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`MATNUM`](#decl-zfir0141-281-matnum), [`NUMBER`](#decl-zfir0141-282-number), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`ALL_MAT_ITAB`](#decl-zfir0141-278-all_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L5517-L5559` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_LINES_SMARTBILL#C2` + +### FORM FILL_ITEM_AMOUNT_SMARTBILL — `ZFIR0141` L5572-L5592 (21줄) + +*품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 세금계산서 품목 라인(MATZEIL)에 옮긴다.* + +> 이 unit 의 조각 1개가 15/21줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수량(FKIMG)이 있으면 공급가액(NETWR)/수량으로 평균 단가 UPRICE 를 계산하고, 단가·수량·공급가액·부가세액(MWSBP)을 세금계산서 품목 라인 구조 P_MATZEIL 에 복사한다. + +```abap + 5576| IF NOT P_MAT_ITAB-FKIMG IS INITIAL. + 5577| P_MAT_ITAB-UPRICE = ( P_MAT_ITAB-NETWR ) / ( P_MAT_ITAB-FKIMG ). + 5578| ELSE. + 5579| P_MAT_ITAB-UPRICE = ' '. + 5580| ENDIF. + 5581| + 5582| * 단가 + 5583| MOVE P_MAT_ITAB-UPRICE TO P_MATZEIL-UPRICE. + 5584| + 5585| * 수량 + 5586| MOVE P_MAT_ITAB-FKIMG TO P_MATZEIL-FKIMG. + 5587| * 공급가액 + 5588| MOVE P_MAT_ITAB-NETWR TO P_MATZEIL-NETWR. + 5589| * 부가세액 + 5590| MOVE P_MAT_ITAB-MWSBP TO P_MATZEIL-MWSBP . +``` + +- **EN**: Compute the average unit price as net value divided by quantity and move unit price, quantity, net value and VAT amount into the tax invoice item line structure. +- 업무 키워드: 평균 단가, 수량, 공급가액, 부가세액, 품목 라인 +- English: Unit Price, Quantity, Net Value, VAT Amount +- 위치: `abap://ZFIR0141/ZFIR0141#L5576-L5590` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#FILL_ITEM_AMOUNT_SMARTBILL#C1` + +### FORM PRINT_ITEM_SD_AND_FI_SMARTBILL — `ZFIR0141` L5657-L5781 (125줄) + +*SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 채우고 품목별 평균 단가를 계산한다(스마트빌용).* + +> 이 unit 의 조각 3개가 112/125줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] SD+FI 혼합 건에 대해 MATZEIL4_ITAB 의 공급가액·세액·일자를 4번째 라인 MATZEIL4 에 옮기고 특별 G/L 여부와 라인 수(LINE_COUNT2)에 따라 자재명/품목텍스트를 실제 자재 또는 TEXT-023 으로 세팅한 뒤 SDFI 플래그를 켠다. + +```abap + 5663| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5664| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5665| AND STCD = AUSGLOP_ITAB-STCD + 5666| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5667| + 5668| LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5669| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5670| AND STCD = AUSGLOP_ITAB-STCD + 5671| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5672| + 5673| MOVE MATZEIL4_ITAB-NETWR TO MATZEIL4-NETWR. + 5674| * MOVE matzeil4-netwr TO matzeil4-netwr. + 5675| MOVE MATZEIL4_ITAB-MWSBP TO MATZEIL4-MWSBP. + 5676| * MOVE matzeil4-mwsbp TO matzeil4-mwsbp. + 5677| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 5678| + 5679| IF CHECK_ITAB-SAVE_UMSKZ <> ' '. + 5680| IF CHECK_ITAB-LINE_COUNT2 = 0. + 5681| MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR. + 5682| WRITE MATZEIL4_ITAB-ARKTX TO MATZEIL4-ARKTX. + 5683| ELSE. + 5684| MOVE TEXT-023 TO MATZEIL4-MATNR. + 5685| MOVE TEXT-023 TO MATZEIL4-ARKTX. + 5686| ENDIF. + 5687| ELSEIF AUSGLOP_ITAB-FLAG = ' ' . + 5688| MOVE TEXT-023 TO MATZEIL4-MATNR. + 5689| MOVE TEXT-023 TO MATZEIL4-ARKTX. + 5690| ENDIF. + 5691| ENDLOOP. + 5692| ENDLOOP. + 5693| + 5694| SDFI = 'X'. +``` + +- **EN**: For mixed SD+FI clearing, fill item line 4 with net value, tax and date from MATZEIL4_ITAB and set the material text depending on the special G/L indicator, then flag SDFI. +- 업무 키워드: SD+FI 혼합, 품목 라인 4, 특별 G/L, 품목 텍스트 +- English: Billing Document, FI Document, Item Line, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`SDFI`](#decl-zfir0141-481-sdfi) +- 위치: `abap://ZFIR0141/ZFIR0141#L5663-L5694` · confidence 0.75 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C1` + +#### [calculation] 세금계산서 인쇄 시 품목 수가 4 미만이면 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 MATZEIL1~3 에 순서대로 채우고, 4 이상이면 ALL_ITEMS_SD_ITAB 합계를 MATZEIL4 에 TEXT-030 품명으로 요약한다. + +```abap + 5696| IF CHK_PRTI = 'X'. + 5697| LINE_COUNT_PR = 0. + 5698| * if number of lines < 4 + 5699| IF LINE_COUNT < 4. + 5700| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5701| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5702| AND STCD = AUSGLOP_ITAB-STCD + 5703| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5704| LINE_COUNT_PR = LINE_COUNT_PR + 1. + 5705| + 5706| * calculating the unit price as the average price of the reported + 5707| * material + 5708| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 5709| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 5710| ( AUSGLOP_MAT_ITAB-FKIMG ). + 5711| ELSE. + 5712| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 5713| ENDIF. + 5714| + 5715| IF LINE_COUNT_PR = 1. + 5716| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1. + 5717| MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL1-UPRICE. + 5718| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG. + 5719| MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL1-NETWR. + 5720| MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL1-MWSBP. + 5721| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL1-BUDAT. + 5722| + 5723| ENDIF. + 5724| + 5725| IF LINE_COUNT_PR = 2. + 5726| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2. + 5727| MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL2-UPRICE. + 5728| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL2-FKIMG. + 5729| MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL2-NETWR. + 5730| MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL2-MWSBP. + 5731| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL2-BUDAT. + 5732| ENDIF. + 5733| + 5734| IF LINE_COUNT_PR = 3. + 5735| MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3. + 5736| MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL3-UPRICE. + 5737| + 5738| MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL3-UPRICE. + 5739| MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL3-FKIMG. + 5740| MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL3-NETWR. + 5741| MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL3-MWSBP. + 5742| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL3-BUDAT. + 5743| ENDIF. + 5744| + 5745| ENDLOOP. + 5746| + 5747| * if number of lines >=4 + 5748| ELSE. + 5749| LOOP AT ALL_ITEMS_SD_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5750| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5751| AND STCD = AUSGLOP_ITAB-STCD + 5752| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5753| MOVE ALL_ITEMS_ITAB-NETWR TO MATZEIL4-NETWR. + 5754| MOVE ALL_ITEMS_ITAB-MWSBP TO MATZEIL4-MWSBP. + 5755| MOVE AUSGLOP_MAT_ITAB-YYYYMMDD TO MATZEIL4-BUDAT. + 5756| MOVE TEXT-030 TO MATZEIL4-MATNR. + 5757| ENDLOOP. + 5758| ENDIF. +``` + +- **EN**: When printing the tax invoice, compute the average unit price per material and fill item lines 1-3 if fewer than 4 lines, otherwise summarize SD totals into line 4 with text TEXT-030. +- 업무 키워드: 평균 단가, 품목 라인, 세금계산서 인쇄, 요약 라인 +- English: Unit Price, Item Line, Tax Invoice, Summary Line +- 정의부(복사 시 함께 필요): [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`LINE_COUNT`](#decl-zfir0141-93-line_count), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`ALL_ITEMS_SD_ITAB`](#decl-zfir0141-286-all_items_sd_itab), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab) 외 1건 +- 위치: `abap://ZFIR0141/ZFIR0141#L5696-L5758` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C2` + +#### [calculation] 추가 시트 인쇄 시 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 UPRICE 에 MODIFY 로 반영한다. + +```abap + 5761| ELSE. + 5762| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5763| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5764| AND STCD = AUSGLOP_ITAB-STCD + 5765| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5766| * calculating the unit price as the average price of the reported + 5767| * material + 5768| IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL. + 5769| + 5770| AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) / + 5771| ( AUSGLOP_MAT_ITAB-FKIMG ). + 5772| ELSE. + 5773| AUSGLOP_MAT_ITAB-UPRICE = ' '. + 5774| ENDIF. + 5775| MODIFY AUSGLOP_MAT_ITAB. + 5776| ENDLOOP. + 5777| ENDIF. +``` + +- **EN**: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB. +- 테이블(파서): read - / write [AUSGLOP_MAT_ITAB](/tables/AUSGLOP_MAT_ITAB.md) +- 업무 키워드: 추가 시트, 평균 단가, 품목 갱신 +- English: Additional Sheet, Unit Price +- 정의부(복사 시 함께 필요): [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L5761-L5777` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C3` + +### FORM PRINT_ITEM_PURE_FI_SMARTBILL — `ZFIR0141` L5790-L5841 (52줄) + +*순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 공급가액·세액으로 채운다(스마트빌용).* + +> 이 unit 의 조각 1개가 43/52줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 원천이 FI 전표(BKPF)이고 SD 빌링이 없는 경우 ALL_ITEMS_ITAB 을 돌며 전기일을 넣고 전표 항목 텍스트(SGTXT)를 '/' 로 SPLIT 해 품명·수량·단위로 분리하며 공급가액(HWBAS)·세액(HWSTE)을 MATZEIL1 에 세팅하고, 특별 G/L 지시자(SAVE_UMSKZ)가 있으면 MATZEIL1_ITAB 의 자재명으로 대체한다. + +```abap + 5797| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 5798| IF CHECK_ITAB-AWTYP_SD = ' '. + 5799| * if the cleared invoices are pure FI-documents fill first line + 5800| CLEAR MATZEIL1. + 5801| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5802| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5803| AND STCD = AUSGLOP_ITAB-STCD + 5804| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5805| + 5806| * READ TABLE ausglop_itab INDEX l_lines. + 5807| * 주석처리 2006.08.16. + 5808| * READ TABLE AUSGLOP_ITAB WITH KEY AUGBL = ALL_ITEMS_ITAB-AUGBL. + 5809| + 5810| IF SY-SUBRC EQ 0. + 5811| MOVE AUSGLOP_ITAB-BUDAT TO MATZEIL1-BUDAT. + 5812| ENDIF. + 5813| + 5814| SPLIT AUSGLOP_ITAB-SGTXT AT '/' INTO MATZEIL1-MATNR + 5815| MATZEIL1-FKIMG + 5816| MATZEIL1-VRKME. + 5817| + 5818| MOVE ALL_ITEMS_ITAB-HWBAS TO MATZEIL1-NETWR. + 5819| MOVE ALL_ITEMS_ITAB-HWSTE TO MATZEIL1-MWSBP. + 5820| + 5821| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5822| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5823| AND STCD = AUSGLOP_ITAB-STCD + 5824| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5825| IF CHECK_ITAB-SAVE_UMSKZ = ' '. + 5826| * MOVE text-030 TO matzeil1-matnr. + 5827| ELSE. + 5828| LOOP AT MATZEIL1_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5829| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5830| AND STCD = AUSGLOP_ITAB-STCD + 5831| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5832| MOVE MATZEIL1_ITAB-MATNR TO MATZEIL1-MATNR. + 5833| ENDLOOP. + 5834| ENDIF. + 5835| ENDLOOP. + 5836| ENDLOOP. + 5837| ENDIF. + 5838| + 5839| ENDIF. +``` + +- **EN**: For pure FI documents, fill the first tax invoice item line MATZEIL1 by splitting the line item text SGTXT into material/quantity/unit and moving tax base and tax amount; override the material with MATZEIL1_ITAB when a special G/L indicator exists. +- SAP 객체: BKPF +- 업무 키워드: 순수 FI 전표, 품목 라인, 전표 텍스트 분리, 공급가액, 세액, 특별 G/L +- English: FI Document, Item Line, Line Item Text, Tax Base, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab), [`MATZEIL1_ITAB`](#decl-zfir0141-385-matzeil1_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L5797-L5839` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_FI_SMARTBILL#C1` + +### FORM WRITE_ITEM_SD_SMARTBILL — `ZFIR0141` L5394-L5414 (21줄) + +*SD 빌링 기준 세금계산서 품목 라인(MATZEIL)을 스마트빌 품목 테이블 GT_ZSBISSUE 에 일련번호·품명·규격·수량·단가·공급가액·세액으로 적재한다.* + +> 이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] 고객이 있는 품목 라인만 대상으로 카운터를 증가시키고 세금계산서 번호(AUGBL)·전기일·자재·판매단위·수량·단가·공급가액(NETWR)·세액(MWSBP)을 KRW 기준으로 GT_ZSBISSUE 에 APPEND 한다. + +```abap + 5396| CHECK NOT P_MATZEIL-KUNNR IS INITIAL. + 5397| GT_CNT = GT_CNT + 1. + 5398| + 5399| GT_ZSBISSUE-KUNNR = P_MATZEIL-KUNNR. + 5400| GT_ZSBISSUE-ZSQNO = AUSGLOP_ITAB-AUGBL. + 5401| GT_ZSBISSUE-BUZEI = GT_CNT. + 5402| GT_ZSBISSUE-ZRQDT = P_MATZEIL-BUDAT. + 5403| GT_ZSBISSUE-ZITEM = P_MATZEIL-MATNR. + 5404| GT_ZSBISSUE-ZSIZE = P_MATZEIL-VRKME. + 5405| GT_ZSBISSUE-ZREQT = P_MATZEIL-FKIMG(8). + 5406| GT_ZSBISSUE-HWAER = 'KRW'. + 5407| GT_ZSBISSUE-ZNTAT = P_MATZEIL-UPRICE. + 5408| GT_ZSBISSUE-HWBAS = P_MATZEIL-NETWR. + 5409| GT_ZSBISSUE-HWSTE = P_MATZEIL-MWSBP. + 5410| + 5411| APPEND GT_ZSBISSUE. + 5412| CLEAR GT_ZSBISSUE. +``` + +- **EN**: Append an SD-based item line to GT_ZSBISSUE with the tax invoice number, request date, material, unit, quantity, unit price, net value and tax amount in KRW. +- SAP 객체: GT_ZSBISSUE +- 업무 키워드: 세금계산서 품목, SD 빌링, 단가, 공급가액, 세액, 스마트빌 +- English: Tax Invoice Item, Billing, Unit Price, Net Value, Tax Amount +- 정의부(복사 시 함께 필요): [`GT_CNT`](#decl-zfir0141-144-gt_cnt), [`GT_ZSBISSUE`](#decl-zfir0141-500-gt_zsbissue), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L5396-L5412` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD_SMARTBILL#C1` + +### FORM WRITE_ITEM_FI_SMARTBILL — `ZFIR0141` L5422-L5464 (43줄) + +*FI 전표 기준 세금계산서 품목 라인(MATZEIL)의 단가를 공급가액/수량으로 계산한 뒤 스마트빌 품목 테이블 GT_ZSBISSUE 에 적재한다.* + +> 이 unit 의 조각 2개가 28/43줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 수량(FKIMG)을 숫자로 변환하고 FM Z_FI_COMMA_DEL 로 공급가액(NETWR)의 콤마를 제거한 뒤 수량이 0 이 아니면 공급가액/수량/100 으로 단가(L_DANGA)를 계산한다. + +```abap + 5433| WRITE P_MATZEIL-FKIMG TO LN_FKIMG. + 5434| + 5435| CALL FUNCTION 'Z_FI_COMMA_DEL' + 5436| EXPORTING + 5437| INPUT = P_MATZEIL-NETWR + 5438| IMPORTING + 5439| OUTPUT = LN_NETWR. + 5440| + 5441| * O으로 나눌수 없다. + 5442| IF LN_FKIMG NE ' ' OR LN_FKIMG NE 0. + 5443| L_DANGA = LN_NETWR / LN_FKIMG. + 5444| L_DANGA = L_DANGA / 100. + 5445| ENDIF. +``` + +- **EN**: Convert quantity to numeric, strip commas from the net value via FM Z_FI_COMMA_DEL, and compute the unit price as net value divided by quantity (scaled by 100) when quantity is non-zero. +- 호출(파서): Z_FI_COMMA_DEL +- SAP 객체: Z_FI_COMMA_DEL +- 업무 키워드: 단가 계산, 수량, 공급가액, 콤마 제거, 0 나누기 방지 +- English: Unit Price, Quantity, Net Value, Conversion +- 정의부(복사 시 함께 필요): [`LN_FKIMG`](#decl-zfir0141-5424-ln_fkimg), [`LN_NETWR`](#decl-zfir0141-5425-ln_netwr), [`L_DANGA`](#decl-zfir0141-5426-l_danga) +- 위치: `abap://ZFIR0141/ZFIR0141#L5433-L5445` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI_SMARTBILL#C1` + +#### [interface] 세금계산서 번호(AUGBL)·일련번호·전기일·자재·단위·수량·계산된 단가·공급가액·세액을 KRW 기준으로 스마트빌 품목 테이블 GT_ZSBISSUE 에 APPEND 한다. + +```abap + 5448| GT_ZSBISSUE-KUNNR = P_MATZEIL-KUNNR. + 5449| GT_ZSBISSUE-ZSQNO = AUSGLOP_ITAB-AUGBL. + 5450| + 5451| GT_ZSBISSUE-BUZEI = GT_CNT. + 5452| GT_ZSBISSUE-ZRQDT = P_MATZEIL-BUDAT. + 5453| GT_ZSBISSUE-ZITEM = P_MATZEIL-MATNR. + 5454| GT_ZSBISSUE-ZSIZE = P_MATZEIL-VRKME. + 5455| GT_ZSBISSUE-ZREQT = P_MATZEIL-FKIMG+5(8). + 5456| GT_ZSBISSUE-HWAER = 'KRW'. + 5457| GT_ZSBISSUE-ZNTAT = L_DANGA. + 5458| GT_ZSBISSUE-HWBAS = P_MATZEIL-NETWR. + 5459| GT_ZSBISSUE-HWSTE = P_MATZEIL-MWSBP. + 5460| + 5461| APPEND GT_ZSBISSUE. + 5462| CLEAR GT_ZSBISSUE. +``` + +- **EN**: Append the FI-based item line with tax invoice number, sequence, date, material, unit, quantity, computed unit price, net value and tax amount to GT_ZSBISSUE. +- SAP 객체: GT_ZSBISSUE +- 업무 키워드: 세금계산서 품목, FI 전표, 스마트빌 전송 품목 +- English: Tax Invoice Item, FI Document, Smartbill +- 정의부(복사 시 함께 필요): [`GT_ZSBISSUE`](#decl-zfir0141-500-gt_zsbissue), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`GT_CNT`](#decl-zfir0141-144-gt_cnt), [`L_DANGA`](#decl-zfir0141-5426-l_danga) +- 위치: `abap://ZFIR0141/ZFIR0141#L5448-L5462` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI_SMARTBILL#C2` + +### FORM TRANSMIT_TO_SMARTBILL — `ZFIR0141F01` L49-L55 (7줄) + +*매출 세금계산서를 스마트빌로 전송하는 상위 흐름으로 전송 데이터 생성 → Z_SB_DTI_ISSUE 전송 → 결과 메시지 표시를 순서대로 수행한다.* + +> 이 unit 의 조각 1개가 3/7줄(43%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] MAKE_DATA_TO_TRANSMIT 로 전자세금계산서 전송 데이터를 만들고 TRANSMIT_DTI_TO_SB 로 스마트빌에 전송한 뒤 DISPLAY_ERROR_MSG 로 리턴 코드별 메시지를 표시한다. + +```abap + 51| PERFORM MAKE_DATA_TO_TRANSMIT. + 52| PERFORM TRANSMIT_DTI_TO_SB CHANGING P_RETURN_CODE. + 53| PERFORM DISPLAY_ERROR_MSG USING P_RETURN_CODE. +``` + +- **EN**: Orchestrate Smartbill transmission: build data, transmit via TRANSMIT_DTI_TO_SB and display the return-code message. +- 호출(파서): MAKE_DATA_TO_TRANSMIT, TRANSMIT_DTI_TO_SB, DISPLAY_ERROR_MSG +- 업무 키워드: 스마트빌 전송, 매출 세금계산서, 전자세금계산서 +- English: Smartbill, Electronic Tax Invoice, Transmission +- 위치: `abap://ZFIR0141/ZFIR0141F01#L51-L53` · confidence 0.8 · `ZFIR0141#ZFIR0141F01#FORM#TRANSMIT_TO_SMARTBILL#C1` + +### FORM MAKE_DATA_TO_TRANSMIT — `ZFIR0141F01` L62-L69 (8줄) + +*스마트빌 전송용 헤더·품목·결제·전표번호 데이터를 순서대로 생성하는 PERFORM 디스패치 FORM 이다.* + +> 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전자세금계산서 전송 데이터를 ZSB_HEADER → ZSB_ITEM → ZSB_PAYMENT → ZSB_BELNR 순으로 생성하는 하위 FORM 들을 호출한다. + +```abap + 64| PERFORM MAKE_ZSB_HEADER. + 65| PERFORM MAKE_ZSB_ITEM. + 66| PERFORM MAKE_ZSB_PAYMENT. + 67| PERFORM MAKE_ZSB_BELNR. +``` + +- **EN**: Sequentially call MAKE_ZSB_HEADER, MAKE_ZSB_ITEM, MAKE_ZSB_PAYMENT and MAKE_ZSB_BELNR to build the Smartbill transmission data. +- 호출(파서): MAKE_ZSB_HEADER, MAKE_ZSB_ITEM, MAKE_ZSB_PAYMENT, MAKE_ZSB_BELNR +- SAP 객체: ZSB_HEADER, ZSB_ITEM, ZSB_PAYMENT, ZSB_BELNR +- 업무 키워드: 전송 데이터 생성, 전자세금계산서, 헤더, 품목, 결제 +- English: Electronic Tax Invoice, Smartbill, Transmission Data +- 위치: `abap://ZFIR0141/ZFIR0141F01#L64-L67` · confidence 0.8 · `ZFIR0141#ZFIR0141F01#FORM#MAKE_DATA_TO_TRANSMIT#C1` + +### FORM MAKE_ZSB_HEADER — `ZFIR0141F01` L76-L94 (19줄) + +*스마트빌 전송 헤더 테이블 ZSB_HEADER 를 GT_ZSBBSEG 로부터 생성하며 정발행(ZSIGN='S')·매출(AR) 구분을 세팅한다.* + +> 이 unit 의 조각 1개가 13/19줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] GT_ZSBBSEG 각 행을 ZSB_HEADER 로 옮기고 ZSIGN='S'(정발행), ZARAP='AR'(매출) 구분을 지정해 전자세금계산서 헤더 전송 데이터를 구성한다. + +```abap + 80| LOOP AT GT_ZSBBSEG. + 81| MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_HEADER. + 82| + 83| ZSB_HEADER-ZSIGN = 'S'. + 84| ZSB_HEADER-ZARAP = 'AR'. + 85| + 86| * IF ZSB_HEADER-BUYNO = ''. + 87| * ZSB_HEADER-BUYNO = '2148673542'. "개발을 위해 임시로 하드코딩 + 88| * ENDIF. + 89| + 90| APPEND ZSB_HEADER. + 91| CLEAR ZSB_HEADER. + 92| ENDLOOP. +``` + +- **EN**: Build the electronic tax invoice header table ZSB_HEADER from GT_ZSBBSEG, marking ZSIGN='S' (issued by supplier) and ZARAP='AR'. +- SAP 객체: ZSB_HEADER +- 업무 키워드: 전자세금계산서 헤더, 정발행, 매출, 전송 데이터 +- English: Electronic Tax Invoice, Header, Smartbill, Accounts Receivable +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ZSB_HEADER`](#decl-zfir0141-521-zsb_header) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L80-L92` · confidence 0.85 · `ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_HEADER#C1` + +### FORM MAKE_ZSB_ITEM — `ZFIR0141F01` L127-L142 (16줄) + +*스마트빌 전송 품목 테이블 ZSB_ITEM 을 전표 정보(GT_ZSBBSEG 첫 행)와 품목 정보(GT_ZSBISSUE)를 합쳐 AR 구분으로 생성한다.* + +> 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] GT_ZSBBSEG 첫 행의 전표 공통 정보와 GT_ZSBISSUE 의 각 품목(품명·규격·수량·단가·공급가액·세액)을 MOVE-CORRESPONDING 으로 합쳐 ZARAP='AR' 인 스마트빌 품목 테이블 ZSB_ITEM 을 만든다. + +```abap + 131| READ TABLE GT_ZSBBSEG INDEX 1. + 132| + 133| LOOP AT GT_ZSBISSUE. + 134| MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_ITEM. + 135| MOVE-CORRESPONDING GT_ZSBISSUE TO ZSB_ITEM. + 136| ZSB_ITEM-ZARAP = 'AR'. + 137| + 138| APPEND ZSB_ITEM. + 139| CLEAR ZSB_ITEM. + 140| ENDLOOP. +``` + +- **EN**: Merge the common document data from GT_ZSBBSEG with each item in GT_ZSBISSUE into the Smartbill item table ZSB_ITEM with ZARAP='AR'. +- SAP 객체: ZSB_ITEM +- 업무 키워드: 전자세금계산서 품목, 전송 데이터, 매출채권 +- English: Electronic Tax Invoice, Item, Smartbill, Accounts Receivable +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`GT_ZSBISSUE`](#decl-zfir0141-500-gt_zsbissue), [`ZSB_ITEM`](#decl-zfir0141-525-zsb_item) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L131-L140` · confidence 0.85 · `ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_ITEM#C1` + +### FORM MAKE_ZSB_PAYMENT — `ZFIR0141F01` L149-L171 (23줄) + +*스마트빌 전송 결제정보 테이블 ZSB_PAYMENT 를 세금계산서별로 현금(10)·수표(20)·어음(2AA)·외상(30) 4개 결제수단 코드 행으로 생성한다.* + +> 이 unit 의 조각 1개가 17/23줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] GT_ZSBBSEG 각 세금계산서에 대해 ZARAP='AR' 로 결제정보를 만들고 결제수단 코드 ZPMMC 를 '10'(현금), '20'(수표), '2AA'(어음), '30' 으로 4행 APPEND 하여 전자세금계산서 결제 구분 데이터를 구성한다. + +```abap + 153| LOOP AT GT_ZSBBSEG. + 154| CLEAR ZSB_PAYMENT. + 155| MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_PAYMENT. + 156| ZSB_PAYMENT-ZARAP = 'AR'. + 157| + 158| ZSB_PAYMENT-ZPMMC = '10'. "* 결제정보 현금 + 159| APPEND ZSB_PAYMENT. + 160| + 161| ZSB_PAYMENT-ZPMMC = '20'. "* 결제정보 수표 + 162| APPEND ZSB_PAYMENT. + 163| + 164| ZSB_PAYMENT-ZPMMC = '2AA'. "* 결제정보 어음 + 165| APPEND ZSB_PAYMENT. + 166| + 167| ZSB_PAYMENT-ZPMMC = '30'. "* 결제정보 수표 + 168| APPEND ZSB_PAYMENT. + 169| ENDLOOP. +``` + +- **EN**: For each tax invoice in GT_ZSBBSEG, append four payment rows to ZSB_PAYMENT with payment method codes 10 (cash), 20 (check), 2AA (note) and 30. +- SAP 객체: ZSB_PAYMENT +- 업무 키워드: 결제정보, 현금, 수표, 어음, 전자세금계산서, 전송 데이터 +- English: Payment Method, Electronic Tax Invoice, Smartbill +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ZSB_PAYMENT`](#decl-zfir0141-529-zsb_payment) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L153-L169` · confidence 0.8 · `ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_PAYMENT#C1` + +### FORM MAKE_ZSB_BELNR — `ZFIR0141F01` L178-L191 (14줄) + +*스마트빌 전송용 전표번호 테이블 ZSB_BELNR 을 GT_ZSBBSEG 로부터 만들고 AR(매출) 구분을 세팅한다.* + +> 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] GT_ZSBBSEG 의 각 전표 항목을 MOVE-CORRESPONDING 으로 ZSB_BELNR 에 옮기고 ZARAP='AR' 로 매출채권 구분을 지정해 스마트빌 전송 전표번호 테이블을 구성한다. + +```abap + 182| LOOP AT GT_ZSBBSEG. + 183| MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_BELNR. + 184| ZSB_BELNR-ZARAP = 'AR'. + 185| + 186| APPEND ZSB_BELNR. + 187| CLEAR ZSB_BELNR. + 188| ENDLOOP. +``` + +- **EN**: Build the Smartbill document number table ZSB_BELNR from GT_ZSBBSEG with ZARAP='AR' marking accounts receivable. +- SAP 객체: ZSB_BELNR +- 업무 키워드: 전표번호, 매출채권, 스마트빌 전송 데이터 +- English: Accounts Receivable, Document Number, Smartbill +- 정의부(복사 시 함께 필요): [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg), [`ZSB_BELNR`](#decl-zfir0141-533-zsb_belnr) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L182-L188` · confidence 0.85 · `ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_BELNR#C1` + +### FORM TRANSMIT_DTI_TO_SB — `ZFIR0141F01` L197-L216 (20줄) + +*전자세금계산서 헤더·품목·결제·전표번호 테이블을 스마트빌 발행 FM Z_SB_DTI_ISSUE 로 전송하고 리턴 코드를 받는다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] ZSB_HEADER/ZSB_ITEM/ZSB_PAYMENT/ZSB_BELNR 테이블을 넘겨 스마트빌 전자세금계산서 발행 FM Z_SB_DTI_ISSUE 를 호출하고 RETURN_CODE 를 P_RETURN_CODE 로 돌려받는다. + +```abap + 201| CALL FUNCTION 'Z_SB_DTI_ISSUE' + 202| IMPORTING + 203| RETURN_CODE = P_RETURN_CODE + 204| TABLES + 205| ZSB_HEADER = ZSB_HEADER + 206| ZSB_ITEM = ZSB_ITEM + 207| ZSB_PAYMENT = ZSB_PAYMENT + 208| ZSB_BELNR = ZSB_BELNR + 209| EXCEPTIONS + 210| FAIL_ISSUE = 1 + 211| OTHERS = 2. + 212| + 213| IF SY-SUBRC <> 0. + 214| ENDIF. +``` + +- **EN**: Call FM Z_SB_DTI_ISSUE with the electronic tax invoice header, item, payment and document tables to transmit to Smartbill and receive the return code. +- 호출(파서): Z_SB_DTI_ISSUE +- SAP 객체: Z_SB_DTI_ISSUE, ZSB_HEADER, ZSB_ITEM, ZSB_PAYMENT, ZSB_BELNR +- 업무 키워드: 전자세금계산서, 스마트빌 전송, 발행, 리턴 코드 +- English: Electronic Tax Invoice, Smartbill, Interface, Return Code +- 정의부(복사 시 함께 필요): [`ZSB_HEADER`](#decl-zfir0141-521-zsb_header), [`ZSB_ITEM`](#decl-zfir0141-525-zsb_item), [`ZSB_PAYMENT`](#decl-zfir0141-529-zsb_payment), [`ZSB_BELNR`](#decl-zfir0141-533-zsb_belnr) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L201-L214` · confidence 0.9 · `ZFIR0141#ZFIR0141F01#FORM#TRANSMIT_DTI_TO_SB#C1` + +### FORM DISPLAY_ERROR_MSG — `ZFIR0141F01` L223-L245 (23줄) + +*스마트빌 전송 리턴 코드에 따라 정상 발행·네트워크 장애·통신 에러·데이터 검증 오류 메시지를 표시하고 그 외 코드는 Z_SB_RETURN_MESSAGE 로 메시지를 출력한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 리턴 코드 'Y' 면 정상 발행 메시지 S025(ZDTI), 공백이면 네트워크 장애, '2' 면 통신 에러, '3' 이면 데이터 검증 오류 메시지를 표시하고 나머지 코드는 FM Z_SB_RETURN_MESSAGE 로 코드별 메시지를 출력한다. + +```abap + 225| IF P_RETURN_CODE = 'Y'. + 226| MESSAGE S025(ZDTI). " '정상적으로 발행했습니다!' + 227| + 228| ELSE. + 229| IF P_RETURN_CODE IS INITIAL. + 230| MESSAGE S000(ZDTI) + 231| WITH '네트워크 장애. 잠시후 다시 시도해 주시기 바랍니다.'. + 232| ELSEIF P_RETURN_CODE = '2'. + 233| MESSAGE S000(ZDTI) + 234| WITH '통신 에러. 스마트빌에 문의해 주시기 바랍니다.'. + 235| ELSEIF P_RETURN_CODE = '3'. + 236| MESSAGE S000(ZDTI) + 237| WITH '데이터 검증 오류. 전송 데이터 확인 부탁드립니다.'. + 238| ELSE. + 239| CALL FUNCTION 'Z_SB_RETURN_MESSAGE' "리턴코드별 메세지 출력 + 240| EXPORTING + 241| RETURN_CODE = P_RETURN_CODE. + 242| ENDIF. + 243| ENDIF. +``` + +- **EN**: Map the Smartbill return code to a status message (success, network failure, communication error, data validation error) or delegate to FM Z_SB_RETURN_MESSAGE for other codes. +- 호출(파서): Z_SB_RETURN_MESSAGE +- SAP 객체: Z_SB_RETURN_MESSAGE, ZDTI +- 업무 키워드: 리턴 코드, 오류 메시지, 전자세금계산서 발행, 네트워크 장애 +- English: Return Code, Error Message, Electronic Tax Invoice, Smartbill +- 위치: `abap://ZFIR0141/ZFIR0141F01#L225-L243` · confidence 0.9 · `ZFIR0141#ZFIR0141F01#FORM#DISPLAY_ERROR_MSG#C1` + +### FORM SAVE_RETURN_CODE_TO_AUSGLOP — `ZFIR0141F01` L251-L269 (19줄) + +*스마트빌 전송 리턴 코드가 성공('Y')이면 SEL_AUSGLOP_ITAB 과 AUSGLOP_ITAB 의 RESULT 필드를 'Y' 로 표시한다.* + +> 이 unit 의 조각 1개가 15/19줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 전송 결과가 'Y'(정상 발행)일 때 선택 대상 SEL_AUSGLOP_ITAB 과 전체 AUSGLOP_ITAB 의 RESULT 를 'Y' 로 MODIFY 하여 이후 UPDATE_TABLE 에서 성공 건만 전표에 반영되도록 한다. + +```abap + 253| IF P_RETURN_CODE = 'Y'. + 254| + 255| LOOP AT SEL_AUSGLOP_ITAB. + 256| SEL_AUSGLOP_ITAB-RESULT = 'Y'. + 257| MODIFY SEL_AUSGLOP_ITAB. + 258| CLEAR SEL_AUSGLOP_ITAB. + 259| ENDLOOP. + 260| + 261| LOOP AT AUSGLOP_ITAB. + 262| AUSGLOP_ITAB-RESULT = 'Y'. + 263| MODIFY AUSGLOP_ITAB. + 264| CLEAR AUSGLOP_ITAB. + 265| ENDLOOP. + 266| + 267| ENDIF. +``` + +- **EN**: When the Smartbill return code is 'Y', set RESULT='Y' on SEL_AUSGLOP_ITAB and AUSGLOP_ITAB so subsequent processing treats them as successfully issued. +- 테이블(파서): read - / write [SEL_AUSGLOP_ITAB](/tables/SEL_AUSGLOP_ITAB.md), [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- 업무 키워드: 전송 결과, 발행 성공, 결과 플래그 +- English: Return Code, Transmission Result, Smartbill +- 정의부(복사 시 함께 필요): [`SEL_AUSGLOP_ITAB`](#decl-zfir0141-408-sel_ausglop_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L253-L267` · confidence 0.85 · `ZFIR0141#ZFIR0141F01#FORM#SAVE_RETURN_CODE_TO_AUSGLOP#C1` + +### FORM SAP_SCRIPT — `ZFIR0141` L4146-L4518 (373줄) + +*세금계산서 SAPscript 출력 절차의 시작 부분으로 인쇄 옵션을 설정하고 OPEN_FORM 으로 인쇄 작업을 연 뒤 고객·사업장 순으로 출력 대상을 정렬한다.* + +> 이 unit 의 조각 8개가 335/373줄(90%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 출력 옵션(TDDEST/TDIMMED/TDDELETE/TDNEWID)을 세팅하고 SAPscript FM OPEN_FORM 을 PRINTER 장치·대화 모드로 호출하여 세금계산서 인쇄 작업을 열며 실패 시 오류를 WRITE 하고 종료한다. + +```abap + 4151| OPTIONS-TDDEST = '*'. + 4152| OPTIONS-TDIMMED = '*'. + 4153| OPTIONS-TDDELETE = '*'. + 4154| OPTIONS-TDNEWID = 'X'. + 4155| CALL FUNCTION 'OPEN_FORM' + 4156| EXPORTING + 4157| DEVICE = 'PRINTER' + 4158| DIALOG = 'X' + 4159| OPTIONS = OPTIONS + 4160| EXCEPTIONS + 4161| CANCELED = 1 + 4162| DEVICE = 2 + 4163| FORM = 3 + 4164| OPTIONS = 4 + 4165| UNCLOSED = 5 + 4166| OTHERS = 6. + 4167| IF SY-SUBRC <> 0. + 4168| WRITE 'Error in OPEN_FORM'(051). + 4169| EXIT. + 4170| ENDIF. +``` + +- **EN**: Set print options and call SAPscript FM OPEN_FORM with DEVICE='PRINTER' and dialog to open the tax invoice print job; exit with an error message on failure. +- 호출(파서): OPEN_FORM +- SAP 객체: OPEN_FORM +- 업무 키워드: SAPscript, 인쇄 작업 열기, 세금계산서 출력, 출력 옵션 +- English: SAPscript, OPEN_FORM, Print Job, Tax Invoice +- 정의부(복사 시 함께 필요): [`OPTIONS`](#decl-zfir0141-387-options), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L4151-L4170` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C1` + +#### [aggregation] 직접 실행 시 체크된 항목만 대상으로 하고, 발행일(AUGDT)의 연·월·일을 분리하며 세금계산서 번호(AUGBL)가 바뀔 때 해당 세금계산서의 판매 품목 수(AUSGLOP_MAT_ITAB 건수)를 LINE_COUNT 로 센다. + +```abap + 4176| IF PROG_NAME = ' '. + 4177| CHECK AUSGLOP_ITAB-CHECK = 'X'. + 4178| ENDIF. + 4179| + 4180| LINE_COUNT_PR = 0. + 4181| SEL_INDEX = SY-TABIX. + 4182| + 4183| + 4184| WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR. + 4185| WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH. + 4186| WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY. + 4187| + 4188| AT NEW AUGBL. + 4189| IF AUSGLOP_ITAB-AUGBL NE AUGBL. + 4190| READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX. + 4191| CLEAR AUSGLOP_MAT_ITAB. + 4192| CLEAR ALL_ITEMS_ITAB. + 4193| + 4194| * number of item lines in ausglop_mat_itab --> number of sold + 4195| * materials + 4196| + 4197| LINE_COUNT = 0. + 4198| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4199| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4200| AND STCD = AUSGLOP_ITAB-STCD + 4201| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4202| LINE_COUNT = LINE_COUNT + 1. + 4203| ENDLOOP. +``` + +- **EN**: Filter checked rows, split the issue date into year/month/day and, at each new tax invoice number, count sold material lines in AUSGLOP_MAT_ITAB. +- 업무 키워드: 세금계산서 번호, 발행일, 품목 수, 선택 항목 +- English: Tax Invoice, Issue Date, Line Count, AT NEW +- 정의부(복사 시 함께 필요): [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`LINE_COUNT_PR`](#decl-zfir0141-95-line_count_pr), [`SEL_INDEX`](#decl-zfir0141-96-sel_index), [`BYEAR`](#decl-zfir0141-117-byear), [`BMONTH`](#decl-zfir0141-118-bmonth), [`BDAY`](#decl-zfir0141-119-bday), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`LINE_COUNT`](#decl-zfir0141-93-line_count) +- 위치: `abap://ZFIR0141/ZFIR0141#L4176-L4203` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C2` + +#### [fm_call] 고객별 세금계산서 양식을 SAPscript FM START_FORM 으로 시작하고 실패 시 오류를 출력하며 발행일의 연·월·일 텍스트를 다시 세팅한다. + +```abap + 4208| CALL FUNCTION 'START_FORM' + 4209| EXPORTING + 4210| FORM = FORM + 4211| EXCEPTIONS + 4212| OTHERS = 1. + 4213| IF SY-SUBRC <> 0. + 4214| WRITE 'Error in START_FORM'(050). + 4215| EXIT. + 4216| ENDIF. + 4217| WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR. + 4218| WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH. + 4219| WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY. +``` + +- **EN**: Start the SAPscript form for the customer via START_FORM and set the year/month/day text symbols of the issue date. +- 호출(파서): START_FORM +- SAP 객체: START_FORM +- 업무 키워드: SAPscript, 양식 시작, 세금계산서 양식 +- English: SAPscript, START_FORM, Tax Invoice Form +- 정의부(복사 시 함께 필요): [`FORM`](#decl-zfir0141-98-form), [`EXIT`](#decl-zfir0141-463-exit), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BYEAR`](#decl-zfir0141-117-byear), [`BMONTH`](#decl-zfir0141-118-bmonth), [`BDAY`](#decl-zfir0141-119-bday) +- 위치: `abap://ZFIR0141/ZFIR0141#L4208-L4219` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C3` + +#### [output] 일회성 고객(XCPDK='X'), 마스터 고객, 지점(FILKD) 고객으로 나누어 ADDRESS_ITAB 과 사업장 주소 BUPLA_ADRESSE 를 읽고 세금계산서 인쇄(CHK_PRTI='X')면 BUPLA_ADRESSE/BUPLA_ADRESSE2 요소를 ADDRESS 창에, 추가 시트면 CUST_ADDR 요소를 CUSTADDR 창에 WRITE_FORM 으로 출력한다. + +```abap + 4224| IF AUSGLOP_ITAB-XCPDK = 'X'. + 4225| + 4226| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-KUNNR + 4227| AND STCD = AUSGLOP_ITAB-STCD. + 4228| + 4229| IF CHK_PRTI = 'X'. + 4230| LOOP AT BUPLA_ADRESSE WHERE BRANCH = + 4231| AUSGLOP_ITAB-BUPLA AND AUGBL = AUSGLOP_ITAB-AUGBL . + 4232| + 4233| CALL FUNCTION 'WRITE_FORM' + 4234| EXPORTING + 4235| ELEMENT = 'BUPLA_ADRESSE' + 4236| WINDOW = 'ADDRESS' + 4237| EXCEPTIONS + 4238| OTHERS = 1. + 4239| IF SY-SUBRC <> 0. + 4240| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055). + 4241| EXIT. + 4242| ENDIF. + 4243| + 4244| CALL FUNCTION 'WRITE_FORM' + 4245| EXPORTING + 4246| ELEMENT = 'BUPLA_ADRESSE2' + 4247| WINDOW = 'ADDRESS2' + 4248| EXCEPTIONS + 4249| OTHERS = 1. + 4250| IF SY-SUBRC <> 0. + 4251| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056). + 4252| EXIT. + 4253| ENDIF. + 4254| ENDLOOP. + 4255| ELSE. + 4256| * In case of printing add. sheet + 4257| CALL FUNCTION 'WRITE_FORM' + 4258| EXPORTING + 4259| ELEMENT = 'CUST_ADDR' + 4260| WINDOW = 'CUSTADDR' + 4261| EXCEPTIONS + 4262| OTHERS = 1. + 4263| * IF sy-subrc <> 0. + 4264| * WRITE 'Error in WRITE_FORM, element CUST_ADDR'(055). + 4265| * EXIT. + 4266| * ENDIF. + 4267| ENDIF. + 4268| ENDLOOP. + 4269| + 4270| * in case of customers with master data + 4271| ELSE. + 4272| + 4273| IF AUSGLOP_ITAB-FILKD = ' '. + 4274| + 4275| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-KUNNR. + 4276| + 4277| IF CHK_PRTI = 'X'. + 4278| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 4279| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4280| + 4281| CALL FUNCTION 'WRITE_FORM' + 4282| EXPORTING + 4283| ELEMENT = 'BUPLA_ADRESSE' + 4284| WINDOW = 'ADDRESS' + 4285| EXCEPTIONS + 4286| OTHERS = 1. + 4287| IF SY-SUBRC <> 0. + 4288| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055). + 4289| EXIT. + 4290| ENDIF. + 4291| + 4292| CALL FUNCTION 'WRITE_FORM' + 4293| EXPORTING + 4294| ELEMENT = 'BUPLA_ADRESSE2' + 4295| WINDOW = 'ADDRESS2' + 4296| EXCEPTIONS + 4297| OTHERS = 1. + 4298| IF SY-SUBRC <> 0. + 4299| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056). + 4300| EXIT. + 4301| ENDIF. + 4302| ENDLOOP. + 4303| * In case of printing add. sheet + 4304| ELSE. + 4305| CALL FUNCTION 'WRITE_FORM' + 4306| EXPORTING + 4307| ELEMENT = 'CUST_ADDR' + 4308| WINDOW = 'CUSTADDR' + 4309| EXCEPTIONS + 4310| OTHERS = 1. + 4311| * IF sy-subrc <> 0. + 4312| * WRITE 'Error in WRITE_FORM, elementCUST_ADDR'(055). + 4313| * EXIT. + 4314| * ENDIF. + 4315| ENDIF. + 4316| ENDLOOP. + 4317| ELSE. + 4318| LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-FILKD. + 4319| IF CHK_PRTI = 'X'. + 4320| LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA + 4321| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4322| + 4323| CALL FUNCTION 'WRITE_FORM' + 4324| EXPORTING + 4325| ELEMENT = 'BUPLA_ADRESSE' + 4326| WINDOW = 'ADDRESS' + 4327| EXCEPTIONS + 4328| OTHERS = 1. + 4329| IF SY-SUBRC <> 0. + 4330| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055). + 4331| EXIT. + 4332| ENDIF. + 4333| + 4334| CALL FUNCTION 'WRITE_FORM' + 4335| EXPORTING + 4336| ELEMENT = 'BUPLA_ADRESSE2' + 4337| WINDOW = 'ADDRESS2' + 4338| EXCEPTIONS + 4339| OTHERS = 1. + 4340| IF SY-SUBRC <> 0. + 4341| WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056). + 4342| EXIT. + 4343| ENDIF. + … (17줄 생략 — 전체는 GET /chunks/ZFIR0141%23ZFIR0141%23FORM%23SAP_SCRIPT%23C4) +``` + +- **EN**: Depending on one-time customer, master customer or branch customer, output the customer and business place address elements (BUPLA_ADRESSE/BUPLA_ADRESSE2 or CUST_ADDR) via WRITE_FORM. +- 호출(파서): WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM +- SAP 객체: WRITE_FORM +- 업무 키워드: 고객 주소, 사업장 주소, 일회성 고객, 지점 고객, 세금계산서 인쇄, 추가 시트 +- English: One-Time Customer, Business Place, Branch, WRITE_FORM, Address Window +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ADDRESS_ITAB`](#decl-zfir0141-325-address_itab), [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`BUPLA_ADRESSE`](#decl-zfir0141-347-bupla_adresse), [`AUGBL`](#decl-zfir0141-461-augbl), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L4224-L4360` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C4` + +#### [calculation] PRINT_SUM_LINE 으로 합계를 인쇄하고 CHECK_ITAB 을 돌며 SD 전용·SD+FI 품목을 PRINT_ITEM_* 로 채운 뒤, 순수 FI 전표(BKPF 전용)는 ALL_ITEMS_ITAB 의 공급가액(HWBAS)·세액(HWSTE)을 통화 편집해 MATZEIL4 라인에 넣고 특별G/L 여부(SAVE_UMSKZ)에 따라 품목명을 TEXT-030 또는 MATZEIL4_ITAB-MATNR 로 채운다. + +```abap + 4367| PERFORM PRINT_SUM_LINE. + 4368| + 4369| *----------------------------------------------------------------------* + 4370| * Print items + 4371| *----------------------------------------------------------------------* + 4372| + 4373| * recalculate total base amount and tax amount of all sd-positions + 4374| * without considering fi-documents ( down payments ... ) + 4375| CLEAR MATZEIL1. + 4376| CLEAR MATZEIL2. + 4377| CLEAR MATZEIL3. + 4378| CLEAR MATZEIL4. + 4379| + 4380| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4381| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4382| AND STCD = AUSGLOP_ITAB-STCD + 4383| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4384| + 4385| *--------------------- SD-data-------------------------------------- + 4386| PERFORM PRINT_ITEM_PURE_SD. + 4387| + 4388| *---------------------SD+FI-data------------------------------------ + 4389| + 4390| PERFORM PRINT_ITEM_SD_AND_FI. + 4391| + 4392| *--------------------- FI-data-------------------------------------- + 4393| + 4394| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 4395| IF CHECK_ITAB-AWTYP_SD = ' '. + 4396| + 4397| * if the cleared invoices are pure FI-documents + 4398| * fill first line + 4399| CLEAR MATZEIL4. + 4400| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4401| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4402| AND STCD = AUSGLOP_ITAB-STCD + 4403| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4404| + 4405| WRITE ALL_ITEMS_ITAB-HWBAS TO MATZEIL4-NETWR + 4406| CURRENCY T001-WAERS USING EDIT MASK 'RRV______________'. + 4407| MOVE MATZEIL4-NETWR TO MATZEIL4-NETWR. + 4408| WRITE ALL_ITEMS_ITAB-HWSTE TO MATZEIL4-MWSBP + 4409| CURRENCY T001-WAERS USING EDIT MASK 'RRV____________'. + 4410| MOVE MATZEIL4-MWSBP TO MATZEIL4-MWSBP. + 4411| + 4412| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4413| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4414| AND STCD = AUSGLOP_ITAB-STCD + 4415| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4416| IF CHECK_ITAB-SAVE_UMSKZ = ' '. + 4417| MOVE TEXT-030 TO MATZEIL4-MATNR. + 4418| ELSE. + 4419| LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4420| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4421| AND STCD = AUSGLOP_ITAB-STCD + 4422| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4423| MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR. + 4424| ENDLOOP. + 4425| ENDIF. + 4426| ENDLOOP. + 4427| ENDLOOP. + 4428| ENDIF. + 4429| ENDIF. + 4430| ENDLOOP. +``` + +- **EN**: Print the sum line, fill SD and SD+FI items, and for pure FI documents format tax base and tax amount from ALL_ITEMS_ITAB into item line MATZEIL4 with the material text depending on the special G/L indicator. +- 호출(파서): PRINT_SUM_LINE, PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI +- SAP 객체: T001 +- 업무 키워드: 합계 라인, 품목 라인, 순수 FI 전표, 공급가액, 세액, 특별 G/L +- English: Sum Line, Item Line, FI Document, Tax Base, Special G/L Indicator +- 정의부(복사 시 함께 필요): [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4), [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`T001`](#decl-zfir0141-40-t001), [`MATZEIL4_ITAB`](#decl-zfir0141-367-matzeil4_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L4367-L4430` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C5` + +#### [output] 세금계산서 인쇄 모드면 ITEM_LINE_MAT/ITEM_LINE_MAT1 요소를 ITEMS2 창에 WRITE_FORM 하고, 추가 시트 모드면 AUSGLOP_MAT_ITAB 각 품목을 ADD_MAT 요소로 MAIN 창에 APPEND 출력한다. + +```abap + 4433| IF CHK_PRTI = 'X'. + 4434| CALL FUNCTION 'WRITE_FORM' + 4435| EXPORTING + 4436| ELEMENT = 'ITEM_LINE_MAT' + 4437| EXCEPTIONS + 4438| OTHERS = 1. + 4439| IF SY-SUBRC <> 0. + 4440| WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT'(006). + 4441| EXIT. + 4442| ENDIF. + 4443| + 4444| CALL FUNCTION 'WRITE_FORM' + 4445| EXPORTING + 4446| ELEMENT = 'ITEM_LINE_MAT1' + 4447| FUNCTION = 'APPEND' + 4448| WINDOW = 'ITEMS2' + 4449| EXCEPTIONS + 4450| OTHERS = 1. + 4451| IF SY-SUBRC <> 0. + 4452| WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT1'(007). + 4453| EXIT. + 4454| ENDIF. + 4455| + 4456| * In case of additional sheet + 4457| ELSE. + 4458| LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 4459| AND KUNNR = AUSGLOP_ITAB-KUNNR + 4460| AND STCD = AUSGLOP_ITAB-STCD + 4461| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 4462| + 4463| CALL FUNCTION 'WRITE_FORM' + 4464| EXPORTING + 4465| ELEMENT = 'ADD_MAT' + 4466| FUNCTION = 'APPEND' + 4467| WINDOW = 'MAIN' + 4468| EXCEPTIONS + 4469| OTHERS = 1. + 4470| IF SY-SUBRC <> 0. + 4471| WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT1'(007). + 4472| EXIT. + 4473| ENDIF. + 4474| ENDLOOP. + 4475| ENDIF. +``` + +- **EN**: Output the item lines via WRITE_FORM: ITEM_LINE_MAT elements for the tax invoice, or one ADD_MAT element per material line for the additional sheet. +- 호출(파서): WRITE_FORM, WRITE_FORM, WRITE_FORM +- SAP 객체: WRITE_FORM +- 업무 키워드: 품목 라인 출력, 추가 시트, 세금계산서 인쇄 +- English: WRITE_FORM, Item Line, Additional Sheet +- 정의부(복사 시 함께 필요): [`CHK_PRTI`](#decl-zfir0141-680-chk_prti), [`EXIT`](#decl-zfir0141-463-exit), [`AUSGLOP_MAT_ITAB`](#decl-zfir0141-236-ausglop_mat_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl) +- 위치: `abap://ZFIR0141/ZFIR0141#L4433-L4475` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C6` + +#### [fm_call] 고객별 양식을 END_FORM 으로 닫고 현재 세금계산서 번호를 AUGBL 에 보관해 다음 AT NEW 비교에 사용한다. + +```abap + 4481| CALL FUNCTION 'END_FORM' + 4482| EXCEPTIONS + 4483| OTHERS = 1. + 4484| IF SY-SUBRC <> 0. + 4485| WRITE 'Error in END_FORM'(010). + 4486| EXIT. + 4487| ENDIF. + 4488| ENDIF. + 4489| ENDAT. + 4490| CLEAR AUGBL. + 4491| AUGBL = AUSGLOP_ITAB-AUGBL. +``` + +- **EN**: Close the customer form with END_FORM and keep the current tax invoice number for the next group change. +- 호출(파서): END_FORM +- SAP 객체: END_FORM +- 업무 키워드: 양식 종료, 세금계산서 번호 +- English: END_FORM, SAPscript +- 정의부(복사 시 함께 필요): [`EXIT`](#decl-zfir0141-463-exit), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L4481-L4491` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C7` + +#### [fm_call] CLOSE_FORM 으로 인쇄 작업을 종료하고 성공 시 호출 프로그램이 YFIR0601 이고 시뮬레이션이 아니면 UPDATE_TABLE 과 USER_EXIT2 로 BKPF/BSET/BSEG 에 세금계산서 정보를 저장하며, 그 외에는 화면을 떠나고 완료 메시지 S324 를 표시한다. + +```abap + 4497| CALL FUNCTION 'CLOSE_FORM' + 4498| IMPORTING + 4499| RESULT = RESULT + 4500| EXCEPTIONS + 4501| OTHERS = 1. + 4502| IF SY-SUBRC <> 0. + 4503| WRITE 'Error in CLOSE_FORM'(011). + 4504| EXIT. + 4505| ELSE. + 4506| IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'. + 4507| PERFORM UPDATE_TABLE. + 4508| PERFORM USER_EXIT2. + 4509| ELSE. + 4510| LEAVE SCREEN. + 4511| CLEAR SIM. + 4512| ENDIF. + 4513| IF SIM <> 'X'. + 4514| MESSAGE S324. + 4515| ENDIF. + 4516| ENDIF. +``` + +- **EN**: Close the SAPscript print job with CLOSE_FORM; on success, when run from YFIR0601 in non-simulation mode, persist tax invoice data via UPDATE_TABLE and USER_EXIT2, otherwise leave the screen and show message S324. +- 호출(파서): CLOSE_FORM, UPDATE_TABLE, USER_EXIT2 +- SAP 객체: CLOSE_FORM +- 업무 키워드: 인쇄 종료, 세금계산서 번호 저장, 시뮬레이션, 완료 메시지 +- English: CLOSE_FORM, SAPscript, Update Table, Simulation +- 정의부(복사 시 함께 필요): [`RESULT`](#decl-zfir0141-391-result), [`EXIT`](#decl-zfir0141-463-exit), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SIM`](#decl-zfir0141-130-sim) +- 위치: `abap://ZFIR0141/ZFIR0141#L4497-L4516` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C8` + +### FORM UPDATE_TABLE — `ZFIR0141` L2145-L2260 (116줄) + +*발행(또는 취소)된 세금계산서 번호를 회계전표 헤더 BKPF-BKTXT, 세금항목 BSET-MLDDT, 고객항목 BSEG-XREF3(사업자등록번호)에 반영하여 DB 를 갱신한다.* + +> 이 unit 의 조각 5개가 89/116줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 취소 모드(CANCEL='X')이고 호출 프로그램이 YFIR0601 이 아니면 체크되지 않은 항목을 AUSGLOP_ITAB 에서 삭제해 갱신 대상을 선택 항목으로 한정한다. + +```abap + 2154| IF CANCEL = 'X' AND PROG_NAME <> 'YFIR0601'. + 2155| + 2156| LOOP AT AUSGLOP_ITAB WHERE CHECK = ' '. + 2157| DELETE AUSGLOP_ITAB. + 2158| ENDLOOP. + 2159| + 2160| ENDIF. +``` + +- **EN**: In cancel mode (not called from YFIR0601), drop unchecked rows from AUSGLOP_ITAB so only selected tax invoices are updated. +- 테이블(파서): read - / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- 업무 키워드: 세금계산서 취소, 선택 항목, 갱신 대상 한정 +- English: Tax Invoice, Cancellation, Selection +- 정의부(복사 시 함께 필요): [`CANCEL`](#decl-zfir0141-486-cancel), [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2154-L2160` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C1` + +#### [sql_select] 출력 대상 세금계산서의 회사코드·전표번호·회계연도로 회계전표 헤더 BKPF 와 세금 항목 BSET 을 FOR ALL ENTRIES 로 조회해 BKPF_TAB/BSET_TAB 에 적재한다. + +```abap + 2162| SELECT * FROM BKPF APPENDING CORRESPONDING FIELDS + 2163| OF TABLE BKPF_TAB + 2164| FOR ALL ENTRIES IN AUSGLOP_ITAB + 2165| WHERE + 2166| BUKRS EQ AUSGLOP_ITAB-BUKRS AND + 2167| BELNR EQ AUSGLOP_ITAB-BELNR AND + 2168| GJAHR EQ AUSGLOP_ITAB-GJAHR. + 2169| IF SY-SUBRC = 0. + 2170| + 2171| SELECT * FROM BSET APPENDING CORRESPONDING FIELDS + 2172| OF TABLE BSET_TAB + 2173| FOR ALL ENTRIES IN AUSGLOP_ITAB + 2174| WHERE + 2175| BUKRS = AUSGLOP_ITAB-BUKRS AND + 2176| BELNR = AUSGLOP_ITAB-BELNR AND + 2177| GJAHR = AUSGLOP_ITAB-GJAHR. +``` + +- **EN**: Read accounting document headers BKPF and tax line items BSET for all selected tax invoice documents into internal tables. +- 테이블(파서): read [BKPF](/tables/BKPF.md), [BSET](/tables/BSET.md) / write - +- SAP 객체: BKPF, BSET +- 업무 키워드: 회계전표 헤더, 세금 항목, 전표 조회 +- English: Accounting Document Header, Tax Line Item, FOR ALL ENTRIES +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0141-43-bkpf), [`BKPF_TAB`](#decl-zfir0141-458-bkpf_tab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BSET`](#decl-zfir0141-34-bset), [`BSET_TAB`](#decl-zfir0141-459-bset_tab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2162-L2177` · confidence 0.9 · `ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C2` + +#### [calculation] 스마트빌 전송 결과가 성공(RESULT='Y')이고 세금계산서 번호(AUGBL)가 있는 항목에 대해 BKPF-BKTXT 에 세금계산서 번호를, BSET-MLDDT 에 발행일(AUGDT)을 세팅하고 취소 모드면 공백으로 되돌린다. + +```abap + 2179| LOOP AT AUSGLOP_ITAB WHERE AUGBL NE ' ' + 2180| AND RESULT EQ 'Y'. " smartbill 2006.07.24 + 2181| + 2182| LOOP AT BKPF_TAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS AND + 2183| BELNR = AUSGLOP_ITAB-BELNR AND + 2184| GJAHR = AUSGLOP_ITAB-GJAHR. + 2185| IF CANCEL = 'X'. + 2186| BKPF_TAB-BKTXT = ' '. + 2187| ELSE. + 2188| BKPF_TAB-BKTXT = AUSGLOP_ITAB-AUGBL. + 2189| ENDIF. + 2190| MODIFY BKPF_TAB TRANSPORTING BKTXT. + 2191| LOOP AT BSET_TAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS AND + 2192| BELNR = AUSGLOP_ITAB-BELNR AND + 2193| GJAHR = AUSGLOP_ITAB-GJAHR. + 2194| IF CANCEL = 'X'. + 2195| BSET_TAB-MLDDT = ' '. + 2196| ELSE. + 2197| BSET_TAB-MLDDT = AUSGLOP_ITAB-AUGDT. + 2198| ENDIF. + 2199| + 2200| MODIFY BSET_TAB TRANSPORTING MLDDT. + 2201| ENDLOOP. + 2202| ENDLOOP. + 2203| ENDLOOP. +``` + +- **EN**: For successfully transmitted invoices, set the tax invoice number into BKPF-BKTXT and the issue date into BSET-MLDDT (or clear them in cancel mode). +- SAP 객체: BKPF, BSET +- 업무 키워드: 세금계산서 번호, 전표 헤더 텍스트, 발행일, 취소, 스마트빌 결과 +- English: Tax Invoice Number, Document Header Text, Reporting Date, Smartbill +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`RESULT`](#decl-zfir0141-391-result), [`BKPF`](#decl-zfir0141-43-bkpf), [`BKPF_TAB`](#decl-zfir0141-458-bkpf_tab), [`CANCEL`](#decl-zfir0141-486-cancel), [`BSET`](#decl-zfir0141-34-bset), [`BSET_TAB`](#decl-zfir0141-459-bset_tab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2179-L2203` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C3` + +#### [sql_select] 세금계산서 번호가 '8'로 시작하는 전표의 고객(KOART='D') 라인을 BSEG 에서 읽고, 고객별로 KNA1(일반 고객) 또는 BSEC(일회성 고객 CPD) 의 사업자등록번호 STCD2/STCD1 을 BSEG-XREF3(참조키3)에 채운다. + +```abap + 2214| LOOP AT BKPF_TAB. + 2215| IF BKPF_TAB-BKTXT+0(1) EQ '8'. " 일련번호 체크 + 2216| SELECT * FROM BSEG APPENDING CORRESPONDING FIELDS + 2217| OF TABLE BSEG_TAB WHERE + 2218| BUKRS EQ BKPF_TAB-BUKRS AND + 2219| BELNR EQ BKPF_TAB-BELNR AND + 2220| GJAHR EQ BKPF_TAB-GJAHR AND + 2221| KOART = 'D'. + 2222| ENDIF. + 2223| ENDLOOP. + 2224| SORT BSEG_TAB BY BUKRS KUNNR. + 2225| LOOP AT BSEG_TAB. + 2226| "사업자등록번호를 참조키3(배부)에 넣기. + 2227| AT NEW KUNNR. + 2228| SELECT SINGLE * FROM KNA1 WHERE + 2229| KUNNR = BSEG_TAB-KUNNR. + 2230| IF KNA1-XCPDK = ' ' . + 2231| IF NOT KNA1-STCD2 IS INITIAL. + 2232| BSEG_TAB-XREF3 = KNA1-STCD2. + 2233| ELSE. + 2234| BSEG_TAB-XREF3 = KNA1-STCD1. + 2235| ENDIF. + 2236| ELSE. + 2237| SELECT SINGLE * FROM BSEC WHERE + 2238| BUKRS = BSEG_TAB-BUKRS AND + 2239| BELNR = BSEG_TAB-BELNR AND + 2240| GJAHR = BSEG_TAB-GJAHR . + 2241| IF NOT BSEC-STCD2 IS INITIAL. + 2242| BSEG_TAB-XREF3 = BSEC-STCD2. + 2243| ELSE. + 2244| BSEG_TAB-XREF3 = BSEC-STCD1. + 2245| ENDIF. + 2246| + 2247| MODIFY BSEG_TAB TRANSPORTING XREF3. + 2248| ENDIF. + 2249| ENDAT. + 2250| ENDLOOP. +``` + +- **EN**: Read customer line items (KOART='D') from BSEG for documents whose invoice number starts with '8' and fill BSEG-XREF3 with the tax registration number from KNA1 or, for one-time customers, from BSEC. +- 테이블(파서): read [BSEG](/tables/BSEG.md), [KNA1](/tables/KNA1.md), [BSEC](/tables/BSEC.md) / write - +- SAP 객체: BSEG, KNA1, BSEC +- 업무 키워드: 사업자등록번호, 참조키3, 고객 항목, 일회성 고객, 전표 라인 +- English: Tax Number, Reference Key 3, Customer Line Item, One-Time Customer, BSEG +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0141-43-bkpf), [`BKPF_TAB`](#decl-zfir0141-458-bkpf_tab), [`BSEG`](#decl-zfir0141-35-bseg), [`BSEG_TAB`](#decl-zfir0141-460-bseg_tab), [`KNA1`](#decl-zfir0141-41-kna1), [`BSEC`](#decl-zfir0141-36-bsec) +- 위치: `abap://ZFIR0141/ZFIR0141#L2214-L2250` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C4` + +#### [db_write] 변경된 BKPF/BSET/BSEG 내부테이블을 DB 표준 테이블에 직접 MODIFY 하고 COMMIT WORK 하여 세금계산서 번호·발행일·사업자번호를 확정 저장한다. + +```abap + 2253| MODIFY BKPF FROM TABLE BKPF_TAB. + 2254| MODIFY BSET FROM TABLE BSET_TAB. + 2255| MODIFY BSEG FROM TABLE BSEG_TAB. + 2256| COMMIT WORK. +``` + +- **EN**: Directly MODIFY the standard tables BKPF, BSET and BSEG from the changed internal tables and COMMIT WORK. +- 테이블(파서): read - / write [BKPF](/tables/BKPF.md), [BSET](/tables/BSET.md), [BSEG](/tables/BSEG.md) +- SAP 객체: BKPF, BSET, BSEG +- 업무 키워드: DB 갱신, 표준 테이블 직접 수정, 커밋 +- English: Database Update, MODIFY, COMMIT WORK +- 정의부(복사 시 함께 필요): [`BKPF`](#decl-zfir0141-43-bkpf), [`BKPF_TAB`](#decl-zfir0141-458-bkpf_tab), [`BSET`](#decl-zfir0141-34-bset), [`BSET_TAB`](#decl-zfir0141-459-bset_tab), [`BSEG`](#decl-zfir0141-35-bseg), [`BSEG_TAB`](#decl-zfir0141-460-bseg_tab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2253-L2256` · confidence 0.95 · `ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C5` + +### FORM USER_EXIT2 — `ZFIR0141` L2385-L2397 (13줄) + +*출력 대상 AUSGLOP_ITAB 을 BSID 구조로 옮겨 세금계산서 번호를 BSEG 추가 필드에 저장하는 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출한다.* + +> 이 unit 의 조각 1개가 8/13줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] AUSGLOP_ITAB 을 BSID 형 테이블 ZBSID 로 MOVE-CORRESPONDING 하여 채운 뒤 한국 세금계산서 복사 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출해 세금계산서 번호를 미결항목 처리용 BSEG 필드에 저장하도록 한다. + +```abap + 2388| LOOP AT AUSGLOP_ITAB. + 2389| MOVE-CORRESPONDING AUSGLOP_ITAB TO ZBSID. + 2390| APPEND ZBSID. + 2391| ENDLOOP. + 2392| + 2393| CALL FUNCTION 'KR_USER_EXIT_COPY_TAXINVOICE' + 2394| TABLES + 2395| ZBSID = ZBSID. +``` + +- **EN**: Copy AUSGLOP_ITAB into a BSID-typed table and call user exit FM KR_USER_EXIT_COPY_TAXINVOICE so the tax invoice number is stored in an additional BSEG field for open item processing. +- 호출(파서): KR_USER_EXIT_COPY_TAXINVOICE +- SAP 객체: KR_USER_EXIT_COPY_TAXINVOICE, BSID, BSEG +- 업무 키워드: 세금계산서 번호, User Exit, 미결항목, 고객 미결 +- English: Tax Invoice, User Exit, Open Item, BSID +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`ZBSID`](#decl-zfir0141-2387-zbsid) +- 위치: `abap://ZFIR0141/ZFIR0141#L2388-L2395` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#USER_EXIT2#C1` + +### EVENT AT LINE-SELECTION — `ZFIR0141` L872-L890 (19줄) + +*리스트에서 전표번호(AUSGLOP_ITAB-BELNR)를 더블클릭하면 회사코드·전표번호·회계연도 파라미터를 세팅하고 FB03 전표 조회 화면으로 이동한다.* + +> 이 unit 의 조각 1개가 12/19줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 커서가 위치한 필드가 AUSGLOP_ITAB-BELNR 이면 SET PARAMETER ID BLN/BUK/GJR 로 전표번호·회사코드·회계연도를 넘기고 CALL TRANSACTION 'FB03' 로 회계전표를 조회한다. + +```abap + 873| GET CURSOR FIELD CURSORFIELD. + 874| IF SY-SUBRC EQ 0. + 875| CASE CURSORFIELD. + 876| WHEN 'AUSGLOP_ITAB-BELNR'. + 877| IF AUSGLOP_ITAB-BUKRS <> SPACE. + 878| SET PARAMETER ID 'BLN' FIELD AUSGLOP_ITAB-BELNR. + 879| SET PARAMETER ID 'BUK' FIELD AUSGLOP_ITAB-BUKRS. + 880| SET PARAMETER ID 'GJR' FIELD AUSGLOP_ITAB-GJAHR. + 881| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. + 882| ENDIF. + 883| ENDCASE. + 884| ENDIF. +``` + +- **EN**: On line selection of the document number field, set parameter IDs BLN/BUK/GJR and call transaction FB03 to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03 +- 업무 키워드: 전표 조회, 더블클릭, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03, Line Selection +- 정의부(복사 시 함께 필요): [`CURSORFIELD`](#decl-zfir0141-129-cursorfield), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L873-L884` · confidence 0.9 · `ZFIR0141#ZFIR0141#EVENT#AT_LINE-SELECTION#C1` + +### EVENT AT USER-COMMAND — `ZFIR0141` L802-L871 (70줄) + +*세금계산서 리스트 화면의 사용자 명령을 처리하여 전체 선택/해제, 뒤로가기 시 테이블 갱신, 저장 시 취소 처리 또는 재발행(REPRINT)을 분기한다.* + +> 이 unit 의 조각 2개가 51/70줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] BACK1/BACK2 시 YFIR0601 에서 호출되고 시뮬레이션이 아니면 UPDATE_TABLE 과 USER_EXIT2 로 전표에 세금계산서 번호를 반영한 뒤 화면을 떠나며 완료 메시지 S324 를 표시한다. + +```abap + 814| WHEN 'BACK1'. + 815| IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'. + 816| PERFORM UPDATE_TABLE. + 817| PERFORM USER_EXIT2. + 818| ENDIF. + 819| LEAVE SCREEN. + 820| IF SIM <> 'X'. + 821| MESSAGE S324. + 822| ENDIF. + 823| CLEAR SIM. + 824| + 825| WHEN 'BACK2'. + 826| + 827| IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'. + 828| PERFORM UPDATE_TABLE. + 829| PERFORM USER_EXIT2. + 830| ENDIF. + 831| LEAVE SCREEN. + 832| IF SIM <> 'X'. + 833| MESSAGE S324. + 834| ENDIF. + 835| CLEAR SIM. +``` + +- **EN**: On BACK1/BACK2, when called from YFIR0601 in non-simulation mode, run UPDATE_TABLE and USER_EXIT2 to store the tax invoice number, then leave the screen with message S324. +- 호출(파서): UPDATE_TABLE, USER_EXIT2, UPDATE_TABLE, USER_EXIT2 +- 업무 키워드: 뒤로가기, 세금계산서 번호 반영, 시뮬레이션, 전표 갱신 +- English: User Command, Update Table, User Exit, Simulation +- 정의부(복사 시 함께 필요): [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`SIM`](#decl-zfir0141-130-sim) +- 위치: `abap://ZFIR0141/ZFIR0141#L814-L835` · confidence 0.8 · `ZFIR0141#ZFIR0141#EVENT#AT_USER-COMMAND#C1` + +#### [control_flow] SAVE 시 SEL_DOCUMENT 로 선택 항목을 확정하고, 취소 모드(CANCEL='X')면 UPDATE_TABLE·USER_EXIT1 로 세금계산서 취소를 반영하고 S323 메시지 후 종료하며, 아니면 REPRINT 로 재발행을 수행한다. + +```abap + 837| WHEN 'SAVE'. + 838| PERFORM SEL_DOCUMENT. + 839| IF CANCEL = 'X'. + 840| + 841| PERFORM UPDATE_TABLE. + 842| + 843| *User Exit to track cancelled tax invoices.... + 844| PERFORM USER_EXIT1. + 845| *----------------------------------------------------------------------* + 846| *User Exit for updating tables in customer name space + 847| *----------------------------------------------------------------------* + 848| MESSAGE S323. + 849| LEAVE SCREEN. + 850| EXIT. + 851| + 852| ELSE. + 853| + 854| + 855| PERFORM REPRINT. + 856| *&&&&&&* 2004.5.10. 저장할때 테이블 업데이트 함 세금계산서번호 + 857| * IF prog_name = 'YFIR0601' AND sim <> 'X'. + 858| * PERFORM update_table. + 859| * PERFORM user_exit2. + 860| * ENDIF. + 861| * CLEAR sim. + 862| *&&&&&&&* 끝 + 863| + 864| + 865| ENDIF. +``` + +- **EN**: On SAVE, determine selected documents (SEL_DOCUMENT); in cancel mode update tables and call USER_EXIT1 to track cancelled tax invoices, otherwise perform REPRINT. +- 호출(파서): SEL_DOCUMENT, UPDATE_TABLE, USER_EXIT1, REPRINT +- 업무 키워드: 저장, 세금계산서 취소, 재발행, 선택 확정 +- English: Save, Tax Invoice Cancellation, Reprint, User Exit +- 정의부(복사 시 함께 필요): [`CANCEL`](#decl-zfir0141-486-cancel), [`EXIT`](#decl-zfir0141-463-exit), [`REPRINT`](#decl-zfir0141-485-reprint) +- 위치: `abap://ZFIR0141/ZFIR0141#L837-L865` · confidence 0.85 · `ZFIR0141#ZFIR0141#EVENT#AT_USER-COMMAND#C2` + +### FORM SET_SELECTION — `ZFIR0141` L2774-L2783 (10줄) + +*리스트의 전체 선택/해제 플래그를 AUSGLOP_ITAB2-CHECK 에 반영하고 화면 라인의 체크박스 값을 MODIFY LINE 으로 갱신한다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 전체 선택/해제 FLAG 를 AUSGLOP_ITAB2 의 CHECK 필드에 MODIFY 로 일괄 반영하고 각 리스트 라인(LIST_LINE)을 READ LINE/MODIFY LINE 으로 갱신해 화면 체크박스를 동기화한다. + +```abap + 2776| CHECK FLAG = 'X' OR FLAG = ' '. + 2777| AUSGLOP_ITAB2-CHECK = FLAG. + 2778| MODIFY AUSGLOP_ITAB2 TRANSPORTING CHECK WHERE CHECK <> FLAG. + 2779| LOOP AT AUSGLOP_ITAB2. + 2780| READ LINE AUSGLOP_ITAB2-LIST_LINE. + 2781| MODIFY LINE AUSGLOP_ITAB2-LIST_LINE FIELD VALUE AUSGLOP_ITAB2-CHECK. + 2782| ENDLOOP. +``` + +- **EN**: Set the select-all/deselect flag on AUSGLOP_ITAB2-CHECK and refresh each list line checkbox via MODIFY LINE. +- 테이블(파서): read - / write [AUSGLOP_ITAB2](/tables/AUSGLOP_ITAB2.md), [LINE](/tables/LINE.md) +- 업무 키워드: 전체 선택, 체크박스, 리스트 갱신, 발행 대상 선택 +- English: Select All, Checkbox, MODIFY LINE, List +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB2`](#decl-zfir0141-215-ausglop_itab2) +- 위치: `abap://ZFIR0141/ZFIR0141#L2776-L2782` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SET_SELECTION#C1` + +### FORM SEL_DOCUMENT — `ZFIR0141` L2792-L2836 (45줄) + +*리스트 화면에서 체크된 라인을 읽어 해당 세금계산서 번호(AUGBL)에 속한 AUSGLOP_ITAB/AUSGLOP_ITAB2 항목의 CHECK 플래그를 설정하고 선택 건수를 센다.* + +> 이 unit 의 조각 2개가 34/45줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 리스트 각 줄을 READ LINE 으로 읽어 체크박스 값과 세금계산서 번호(DOC_NO)를 추출하고 FILL_ZEROS 로 선행 0 을 채운 뒤, 체크된 세금계산서 번호에 해당하는 AUSGLOP_ITAB2 및 AUSGLOP_ITAB 항목의 CHECK 를 'X' 로 표시한다. + +```abap + 2800| DO. + 2801| READ LINE SY-INDEX FIELD VALUE AUSGLOP_ITAB2-CHECK. + 2802| + 2803| IF SY-SUBRC NE 0. + 2804| EXIT. + 2805| + 2806| ENDIF. + 2807| + 2808| FLAG = SY-LISEL(1). + 2809| + 2810| DOC_NO = SY-LISEL+2(10). + 2811| IF NOT ( DOC_NO IS INITIAL ). + 2812| + 2813| PERFORM FILL_ZEROS CHANGING DOC_NO. + 2814| + 2815| ENDIF. + 2816| + 2817| IF FLAG = 'X'. + 2818| LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = DOC_NO. + 2819| AUSGLOP_ITAB2-CHECK = FLAG. + 2820| MODIFY AUSGLOP_ITAB2. + 2821| LOOP AT AUSGLOP_ITAB WHERE AUGBL = AUSGLOP_ITAB2-AUGBL. + 2822| AUSGLOP_ITAB-CHECK = 'X'. + 2823| MODIFY AUSGLOP_ITAB. + 2824| ENDLOOP. + 2825| + 2826| ENDLOOP. + 2827| ENDIF. + 2828| ENDDO. +``` + +- **EN**: Read each list line, extract checkbox and tax invoice number (zero-padded via FILL_ZEROS), and mark matching AUSGLOP_ITAB2/AUSGLOP_ITAB rows as selected. +- 테이블(파서): read - / write [AUSGLOP_ITAB2](/tables/AUSGLOP_ITAB2.md), [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- 호출(파서): FILL_ZEROS +- 업무 키워드: 선택 항목, 체크박스, 세금계산서 번호, 리스트 읽기 +- English: READ LINE, Selection, Tax Invoice Number, Clearing Document +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB2`](#decl-zfir0141-215-ausglop_itab2), [`EXIT`](#decl-zfir0141-463-exit), [`FLAG`](#decl-zfir0141-2795-flag), [`DOC_NO`](#decl-zfir0141-2794-doc_no), [`AUGBL`](#decl-zfir0141-461-augbl), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2800-L2828` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#SEL_DOCUMENT#C1` + +#### [aggregation] 직접 실행(PROG_NAME 공백)인 경우 체크된 AUSGLOP_ITAB 건수를 G_LINES 에 집계한다. + +```abap + 2830| IF PROG_NAME EQ SPACE. + 2831| LOOP AT AUSGLOP_ITAB WHERE CHECK = 'X'. + 2832| ADD 1 TO G_LINES. + 2833| ENDLOOP. + 2834| ENDIF. +``` + +- **EN**: Count selected AUSGLOP_ITAB rows into G_LINES when the program runs standalone. +- 업무 키워드: 선택 건수, 집계 +- English: Count, Selected Rows +- 정의부(복사 시 함께 필요): [`PROG_NAME`](#decl-zfir0141-462-prog_name), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`G_LINES`](#decl-zfir0141-487-g_lines) +- 위치: `abap://ZFIR0141/ZFIR0141#L2830-L2834` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#SEL_DOCUMENT#C2` + +### FORM FILL_ZEROS — `ZFIR0141` L2844-L2856 (13줄) + +*문서번호 등 문자 필드를 우측 정렬한 뒤 앞쪽 공백을 '0'으로 채워 선행 0 형식으로 만든다.* + +> 이 unit 의 조각 1개가 7/13줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 필드를 우측 정렬한 후 공백이 없을 때까지 ' ' 을 '0' 으로 치환하여 전표번호 등을 선행 0 이 채워진 형식으로 변환한다. + +```abap + 2847| WRITE P_FIELD TO P_FIELD RIGHT-JUSTIFIED. + 2848| DO. + 2849| REPLACE ' ' WITH '0' INTO P_FIELD. + 2850| IF SY-SUBRC <> 0. + 2851| EXIT. + 2852| ENDIF. + 2853| ENDDO. +``` + +- **EN**: Right-justify the field and replace all blanks with zeros to produce a leading-zero padded document number. +- 업무 키워드: 선행 0, 전표번호 형식, 문자 치환 +- English: Leading Zeros, Conversion +- 정의부(복사 시 함께 필요): [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141#L2847-L2853` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#FILL_ZEROS#C1` + +### FORM USER_EXIT1 — `ZFIR0141` L2366-L2372 (7줄) + +*세금계산서 취소용 사용자 EXIT FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출해 출력 대상 AUSGLOP_ITAB 을 고객사 로직으로 후처리한다.* + +> 이 unit 의 조각 1개가 3/7줄(43%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 출력 대상 세금계산서 테이블 AUSGLOP_ITAB 을 넘겨 한국 세금계산서 취소 User Exit FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출한다. + +```abap + 2368| CALL FUNCTION 'KR_USER_EXIT_CANCEL_TAXINVOICE' + 2369| TABLES + 2370| YAUSGLOP_ITAB = AUSGLOP_ITAB. +``` + +- **EN**: Call the Korean tax invoice cancellation user exit FM KR_USER_EXIT_CANCEL_TAXINVOICE with the output table AUSGLOP_ITAB. +- 호출(파서): KR_USER_EXIT_CANCEL_TAXINVOICE +- SAP 객체: KR_USER_EXIT_CANCEL_TAXINVOICE +- 업무 키워드: 세금계산서 취소, User Exit, 출력 대상 +- English: Tax Invoice, User Exit, Cancellation +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab) +- 위치: `abap://ZFIR0141/ZFIR0141#L2368-L2370` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#USER_EXIT1#C1` + +### FORM GET_TAXES — `ZFIR0141` L962-L1008 (47줄) + +*세금계산서 출력 항목의 공급가액·세액을 매출부가세 계정(0040605000)의 BSET 라인에서 가져온다.* + +> 이 unit 의 조각 1개가 40/47줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 세금코드가 A6(0% 이면서 세금계산서를 발행하는 코드)인지에 따라 조회 조건을 나눠, 매출부가가치세 계정 0040605000 의 세금 라인(BSET)에서 공급가액과 세액을 가져온다. 일반 코드는 세액이 있는 라인만, A6 은 세액 0 을 포함해 읽는다. 대변(S, 반품·감액 전표)인 경우 부호를 반전한다. 특소세 때문에 공급가액이 두 번 더해지는 것을 막기 위해 계정번호를 조건으로 고정한 것이 이 로직의 핵심이다. + +```abap + 968| IF AUSGLOP_ITAB-MWSKZ <> 'A6'. + 969| SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 970| AND BELNR = AUSGLOP_ITAB-BELNR + 971| AND GJAHR = AUSGLOP_ITAB-GJAHR + 972| AND HKONT = '0040605000' + 973| AND HWSTE <> ''. + 974| * and mwskz = ausglop_itab-mwskz. + 975| + 976| * in case of a credit memo + 977| IF BSET-SHKZG = 'S'. + 978| BSET-HWBAS = -1 * BSET-HWBAS. + 979| BSET-HWSTE = -1 * BSET-HWSTE. + 980| ENDIF. + 981| MOVE BSET-MWSKZ TO AUSGLOP_ITAB-MWSKZ. + 982| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 983| MOVE BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 984| MOVE BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 985| MODIFY AUSGLOP_ITAB. + 986| ENDSELECT. + 987| + 988| ELSEIF AUSGLOP_ITAB-MWSKZ = 'A6'. + 989| SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 990| AND BELNR = AUSGLOP_ITAB-BELNR + 991| AND GJAHR = AUSGLOP_ITAB-GJAHR + 992| AND HKONT = '0040605000'. + 993| + 994| * and mwskz = ausglop_itab-mwskz. + 995| + 996| * in case of a credit memo + 997| IF BSET-SHKZG = 'S'. + 998| BSET-HWBAS = -1 * BSET-HWBAS. + 999| BSET-HWSTE = -1 * BSET-HWSTE. + 1000| ENDIF. + 1001| MOVE BSET-MWSKZ TO AUSGLOP_ITAB-MWSKZ. + 1002| MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG. + 1003| MOVE BSET-HWBAS TO AUSGLOP_ITAB-HWBAS. + 1004| MOVE BSET-HWSTE TO AUSGLOP_ITAB-HWSTE. + 1005| MODIFY AUSGLOP_ITAB. + 1006| ENDSELECT. + 1007| ENDIF. +``` + +- **EN**: Pulls tax base and tax amount from BSET restricted to the output-VAT account 0040605000, branching on tax code A6 (zero-rate but invoice-issuing) and flipping signs for credit memos; the account restriction prevents double-counting caused by special excise tax. +- 테이블(파서): read [BSET](/tables/BSET.md) / write [AUSGLOP_ITAB](/tables/AUSGLOP_ITAB.md) +- SAP 객체: BSET, HKONT, MWSKZ, HWBAS, HWSTE, SHKZG +- 업무 키워드: 세금계산서, 공급가액, 세액, 매출부가세, 영세율, 특소세, 반품, 부호반전, 세금코드 +- English: tax invoice, tax base, tax amount, output VAT, zero rate, special excise tax, credit memo, tax code +- 정의부(복사 시 함께 필요): [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`BSET`](#decl-zfir0141-34-bset) +- 위치: `abap://ZFIR0141/ZFIR0141#L968-L1007` · confidence 0.83 · `ZFIR0141#ZFIR0141#FORM#GET_TAXES#C1` + +### FORM WRITE_LINES_FI — `ZFIR0141` L3143-L3223 (81줄) + +*세금계산서 양식의 FI 품목 4줄(MATZEIL1~4)을 월/일·품목·단위·수량·단가·공급가액·세액 컬럼 위치에 맞춰 WRITE 로 인쇄한다.* + +> 이 unit 의 조각 2개가 62/81줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 첫 번째 품목 라인의 전기일(BUDAT)에서 월·일을 추출하고 수량(FKIMG)을 CIRCULAR SHIFT 로 정렬한 뒤 품목·단위·수량·단가·공급가액(NETWR)·세액(MWSBP)을 KRW 통화 형식으로 세금계산서 양식 위치에 WRITE 한다. + +```abap + 3148| MM1 = MATZEIL1-BUDAT+4(2). + 3149| DD1 = MATZEIL1-BUDAT+6(2). + 3150| + 3151| L_LEN = STRLEN( MATZEIL1-FKIMG ). + 3152| DO L_LEN TIMES. + 3153| SHIFT MATZEIL1-FKIMG CIRCULAR. + 3154| ENDDO. + 3155| + 3156| WRITE:/ TEXT-CA2, 2 MM1, 5 TEXT-CA2, 6 DD1, 10 TEXT-CA2, + 3157| 11 MATZEIL1-MATNR, 28 TEXT-CA2, + 3158| 29 MATZEIL1-VRKME, 34 TEXT-CA2, 35 MATZEIL1-FKIMG+5(8), + 3159| 45 TEXT-CA2, + 3160| 46 MATZEIL1-UPRICE CURRENCY 'KRW', 63 TEXT-CA2, + 3161| 64 MATZEIL1-NETWR CURRENCY 'KRW', 82 TEXT-CA2, + 3162| 83 MATZEIL1-MWSBP CURRENCY 'KRW', 98 TEXT-CA2, + 3163| 117 TEXT-CA2. + 3164| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Extract month/day from posting date of the first item line, align quantity and WRITE material, unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice form columns. +- 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액, 전기일, 수량 +- English: Tax Invoice, Line Item, Net Value, Tax Amount, WRITE +- 정의부(복사 시 함께 필요): [`MM1`](#decl-zfir0141-3144-mm1), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL1`](#decl-zfir0141-86-matzeil1), [`DD1`](#decl-zfir0141-3144-dd1), [`L_LEN`](#decl-zfir0141-3144-l_len) +- 위치: `abap://ZFIR0141/ZFIR0141#L3148-L3164` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#WRITE_LINES_FI#C1` + +#### [output] 두 번째~네 번째 품목 라인(MATZEIL2~4)도 동일하게 수량을 정렬한 뒤 품목·단위·수량·단가·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식에 WRITE 한다. + +```abap + 3177| L_LEN = STRLEN( MATZEIL2-FKIMG ). + 3178| DO L_LEN TIMES. + 3179| SHIFT MATZEIL2-FKIMG CIRCULAR. + 3180| ENDDO. + 3181| + 3182| WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL2-MATNR, + 3183| 28 TEXT-CA2, + 3184| 29 MATZEIL2-VRKME, 34 TEXT-CA2, 35 MATZEIL2-FKIMG+5(8), + 3185| 45 TEXT-CA2, + 3186| 46 MATZEIL2-UPRICE CURRENCY 'KRW', 63 TEXT-CA2, + 3187| 64 MATZEIL2-NETWR CURRENCY 'KRW', 82 TEXT-CA2, + 3188| 83 MATZEIL2-MWSBP CURRENCY 'KRW', 98 TEXT-CA2, + 3189| 117 TEXT-CA2. + 3190| WRITE:/ TEXT-CA1, 117 TEXT-CA2. + 3191| + 3192| * third item ----------------------------------------------------------- + 3193| L_LEN = STRLEN( MATZEIL3-FKIMG ). + 3194| DO L_LEN TIMES. + 3195| SHIFT MATZEIL3-FKIMG CIRCULAR. + 3196| ENDDO. + 3197| WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL3-MATNR, + 3198| 28 TEXT-CA2, + 3199| 29 MATZEIL3-VRKME, 34 TEXT-CA2, 35 MATZEIL3-FKIMG+5(8), + 3200| 45 TEXT-CA2, + 3201| 46 MATZEIL3-UPRICE CURRENCY 'KRW', 63 TEXT-CA2, + 3202| 64 MATZEIL3-NETWR CURRENCY 'KRW', 82 TEXT-CA2, + 3203| 83 MATZEIL3-MWSBP CURRENCY 'KRW', 98 TEXT-CA2, + 3204| 117 TEXT-CA2. + 3205| WRITE:/ TEXT-CA1, 117 TEXT-CA2. + 3206| + 3207| * fourth item ---------------------------------------------------------- + 3208| L_LEN = STRLEN( MATZEIL4-FKIMG ). + 3209| DO L_LEN TIMES. + 3210| SHIFT MATZEIL4-FKIMG CIRCULAR. + 3211| ENDDO. + 3212| + 3213| WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL4-MATNR, + 3214| 28 TEXT-CA2, + 3215| 29 MATZEIL4-VRKME, 34 TEXT-CA2, 35 MATZEIL4-FKIMG+5(8), + 3216| 45 TEXT-CA2, + 3217| 46 MATZEIL4-UPRICE CURRENCY 'KRW', 63 TEXT-CA2, + 3218| 64 MATZEIL4-NETWR CURRENCY 'KRW', 82 TEXT-CA2, + 3219| 83 MATZEIL4-MWSBP CURRENCY 'KRW', 98 TEXT-CA2, + 3220| 117 TEXT-CA2. + 3221| WRITE:/ TEXT-CA1, 117 TEXT-CA2. +``` + +- **EN**: Print the second to fourth FI item lines (MATZEIL2-4) with material, unit, quantity, unit price, net value and tax amount in KRW at the tax invoice form columns. +- 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액 +- English: Tax Invoice, Line Item, WRITE +- 정의부(복사 시 함께 필요): [`L_LEN`](#decl-zfir0141-3144-l_len), [`MATTYPE`](#decl-zfir0141-58-mattype), [`MATZEIL2`](#decl-zfir0141-87-matzeil2), [`MATZEIL3`](#decl-zfir0141-88-matzeil3), [`MATZEIL4`](#decl-zfir0141-89-matzeil4) +- 위치: `abap://ZFIR0141/ZFIR0141#L3177-L3221` · confidence 0.8 · `ZFIR0141#ZFIR0141#FORM#WRITE_LINES_FI#C2` + +### FORM PRINT_SUM_LINE_SMARTBILL — `ZFIR0141` L5293-L5355 (63줄) + +*스마트빌 전송용 합계 라인을 만들기 위해 CHECK_ITAB/ALL_ITEMS_ITAB 를 돌며 SD·FI 원천 구분(AWTYP)에 따라 총금액·총공급가액·총세액을 GT_ZSBBSEG 에 채운다.* + +> 이 unit 의 조각 1개가 59/63줄(94%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 현재 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 에 속한 항목을 LOOP 하며 SD 전용(VBRK), FI 전용(BKPF), SD+FI 혼합 여부에 따라 NETWR/MWSBP 또는 HWBAS/HWSTE 로 총금액(ZTTAT)·공급가액(HWBAS)·세액(HWSTE)을 계산해 스마트빌 항목 구조 GT_ZSBBSEG 에 KRW 로 세팅한다. + +```abap + 5295| LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS + 5296| AND KUNNR = AUSGLOP_ITAB-KUNNR + 5297| AND STCD = AUSGLOP_ITAB-STCD + 5298| AND AUGBL = AUSGLOP_ITAB-AUGBL. + 5299| + 5300| LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = CHECK_ITAB-BUKRS + 5301| AND KUNNR = CHECK_ITAB-KUNNR + 5302| AND STCD = CHECK_ITAB-STCD + 5303| AND AUGBL = CHECK_ITAB-AUGBL. + 5304| + 5305| * only sd-data + 5306| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 5307| IF CHECK_ITAB-AWTYP_FI = ' '. + 5308| + 5309| * 총금액 + 5310| GT_ZSBBSEG-ZTTAT + 5311| = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 5312| * 총공급가액 + 5313| GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-NETWR. + 5314| * 총세액 + 5315| GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-MWSBP. + 5316| * 통화 + 5317| GT_ZSBBSEG-HWAER = 'KRW'. + 5318| ENDIF. + 5319| ENDIF. + 5320| + 5321| * only fi-data + 5322| IF CHECK_ITAB-AWTYP_SD = ' '. + 5323| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 5324| * 총금액 + 5325| GT_ZSBBSEG-ZTTAT + 5326| = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 5327| * 총공급가액 + 5328| GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-HWBAS. + 5329| * 총세액 + 5330| GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-HWSTE. + 5331| * 통화 + 5332| GT_ZSBBSEG-HWAER = 'KRW'. + 5333| ENDIF. + 5334| ENDIF. + 5335| + 5336| * FI + SD-data + 5337| IF CHECK_ITAB-AWTYP_SD = 'VBRK'. + 5338| IF CHECK_ITAB-AWTYP_FI = 'BKPF'. + 5339| * 총금액 + 5340| GT_ZSBBSEG-ZTTAT + 5341| = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP. + 5342| * 총공급가액 + 5343| GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-NETWR. + 5344| * 총세액 + 5345| GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-MWSBP. + 5346| * 통화 + 5347| GT_ZSBBSEG-HWAER = 'KRW'. + 5348| ENDIF. + 5349| ENDIF. + 5350| + 5351| ENDLOOP. + 5352| + 5353| ENDLOOP. +``` + +- **EN**: Loop over CHECK_ITAB and ALL_ITEMS_ITAB for the current tax invoice and derive total amount, tax base and tax amount into GT_ZSBBSEG depending on whether the source is SD billing (VBRK), FI document (BKPF) or both. +- SAP 객체: VBRK, BKPF, GT_ZSBBSEG +- 업무 키워드: 합계 라인, 총공급가액, 총세액, 스마트빌, SD 빌링, FI 전표, 반제전표 +- English: Tax Invoice, Billing Document, Tax Base, Tax Amount, Smartbill +- 정의부(복사 시 함께 필요): [`CHECK_ITAB`](#decl-zfir0141-397-check_itab), [`AUSGLOP_ITAB`](#decl-zfir0141-163-ausglop_itab), [`AUGBL`](#decl-zfir0141-461-augbl), [`ALL_ITEMS_ITAB`](#decl-zfir0141-260-all_items_itab), [`GT_ZSBBSEG`](#decl-zfir0141-499-gt_zsbbseg) +- 위치: `abap://ZFIR0141/ZFIR0141#L5295-L5353` · confidence 0.85 · `ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE_SMARTBILL#C1` + +### FORM CALCULATE_ZNCNT — `ZFIR0141F01` L101-L120 (20줄) + +*세금계산서 공급가액(P_HWBAS)을 12자리 통화 형식으로 편집한 뒤 앞쪽 공백 수를 세어 세금계산서 공란수(ZSB_HEADER-ZNCNT)를 계산한다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 공급가액을 CURRENCY 편집·우측정렬한 12자리 문자열로 만들고 선행 공백 개수를 세어 스마트빌 헤더의 공란수(ZNCNT)를 구하되, 음수 금액이면 '-' 자리를 감안해 1을 뺀다. + +```abap + 106| WRITE P_HWBAS TO LV_HWBAS CURRENCY P_HWAER + 107| RIGHT-JUSTIFIED + 108| NO-GROUPING. + 109| DO 12 TIMES. + 110| IF LV_HWBAS+0(1) EQ SPACE. + 111| ZSB_HEADER-ZNCNT = ZSB_HEADER-ZNCNT + 1. + 112| SHIFT LV_HWBAS. + 113| ELSE. + 114| IF P_HWBAS CS '-'. " 금액이 -인 경우 공란수 1개 뺌. + 115| ZSB_HEADER-ZNCNT = ZSB_HEADER-ZNCNT - 1. + 116| ENDIF. + 117| EXIT. + 118| ENDIF. + 119| ENDDO. +``` + +- **EN**: Format the tax base amount right-justified with currency editing and count leading blanks to derive the tax invoice blank-digit count (ZSB_HEADER-ZNCNT), subtracting one for a negative sign. +- SAP 객체: ZSB_HEADER +- 업무 키워드: 공란수, 공급가액, 세금계산서, 음수 금액, 자릿수 계산 +- English: Tax Invoice, Blank Count, Tax Base Amount, Currency Formatting +- 정의부(복사 시 함께 필요): [`LV_HWBAS`](#decl-zfir0141f01-103-lv_hwbas), [`ZSB_HEADER`](#decl-zfir0141-521-zsb_header), [`EXIT`](#decl-zfir0141-463-exit) +- 위치: `abap://ZFIR0141/ZFIR0141F01#L106-L119` · confidence 0.9 · `ZFIR0141#ZFIR0141F01#FORM#CALCULATE_ZNCNT#C1` + +### MODULE USER_COMMAND_0100 INPUT — `ZFIR0141I01` L9-L29 (21줄) + +*화면 0100의 사용자 명령(PAI)을 처리하여 &NT1 시 ALV 그리드(GRID3)의 변경 데이터를 검증한 뒤 화면을 종료하고 EXIT 시 화면을 닫는 플럼빙 모듈이다.* + +> 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] OK_CODE 분기: &NT1 이면 GRID3->CHECK_CHANGED_DATA 로 ALV 편집 내용을 반영·검증하고 SET SCREEN 0 으로 팝업을 닫으며, EXIT 이면 바로 화면을 종료한다. + +```abap + 14| CASE SAVE_CODE. + 15| WHEN '&NT1'. + 16| DATA: L_VALID2 TYPE C. + 17| DATA: L_LINE TYPE I. + 18| SY-UCOMM = SAVE_CODE. + 19| CALL METHOD GRID3->CHECK_CHANGED_DATA + 20| IMPORTING + 21| E_VALID = L_VALID2. + 22| + 23| SET SCREEN 0. + 24| + 25| WHEN 'EXIT'. + 26| SET SCREEN 0. + 27| ENDCASE. +``` + +- **EN**: Dispatch user command: on &NT1 call GRID3->CHECK_CHANGED_DATA to validate ALV grid changes then leave screen 0100; on EXIT leave the screen. +- 호출(파서): GRID3->CHECK_CHANGED_DATA +- SAP 객체: CL_GUI_ALV_GRID, CHECK_CHANGED_DATA +- 업무 키워드: 사용자 명령, ALV 변경 검증, 화면 종료, PAI +- English: User Command, ALV Grid, CHECK_CHANGED_DATA, PAI +- 정의부(복사 시 함께 필요): [`OK_CODE`](#decl-zfir0141-613-ok_code), [`SAVE_CODE`](#decl-zfir0141-614-save_code), [`GRID3`](#decl-zfir0141-599-grid3) +- 위치: `abap://ZFIR0141/ZFIR0141I01#L14-L27` · confidence 0.85 · `ZFIR0141#ZFIR0141I01#MODULE#USER_COMMAND_0100_INPUT#C1` + +## 정의부 (199건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0141` (198건) + +#### BSET — tables · L34-L34 {#decl-zfir0141-34-bset} + +```abap +TABLES: BSET. " tax data document segment +``` + +#### BSEG — tables · L35-L35 {#decl-zfir0141-35-bseg} + +```abap +TABLES: + BSEG. " accounting document segment +``` + +#### BSEC — tables · L36-L36 {#decl-zfir0141-36-bsec} + +```abap +TABLES: + BSEC. " One-time account data document +``` + +#### VBRK — tables · L38-L38 {#decl-zfir0141-38-vbrk} + +```abap +TABLES: + VBRK. " billing : header data +``` + +#### VBRP — tables · L39-L39 {#decl-zfir0141-39-vbrp} + +```abap +TABLES: + VBRP. " billing : item data +``` + +#### T001 — tables · L40-L40 {#decl-zfir0141-40-t001} + +```abap +TABLES: + T001. " company codes +``` + +#### KNA1 — tables · L41-L41 {#decl-zfir0141-41-kna1} + +```abap +TABLES: + KNA1. " customers +``` + +#### FIMSG — tables · L42-L42 {#decl-zfir0141-42-fimsg} + +```abap +TABLES: + FIMSG. " structure +``` + +#### BKPF — tables · L43-L43 {#decl-zfir0141-43-bkpf} + +```abap +TABLES: + BKPF. " acc. document header +``` + +#### BSAD — tables · L44-L44 {#decl-zfir0141-44-bsad} + +```abap +TABLES: + BSAD. " sec. index for customers : +``` + +#### VBPA — tables · L46-L46 {#decl-zfir0141-46-vbpa} + +```abap +TABLES: + VBPA. " sales document:partner +``` + +#### J_1BBRANCH — tables · L47-L47 {#decl-zfir0141-47-j_1bbranch} + +```abap +TABLES: + J_1BBRANCH. " business place table +``` + +#### T001F — tables · L48-L48 {#decl-zfir0141-48-t001f} + +```abap +TABLES: + T001F. " Company code-dependent form +``` + +#### T074T — tables · L50-L50 {#decl-zfir0141-50-t074t} + +```abap +TABLES: + T074T. " special g_l indicator text table +``` + +#### MATTYPE — types · L58-L80 {#decl-zfir0141-58-mattype} + +```abap +TYPES: BEGIN OF MATTYPE , + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + NAME1 LIKE BSEC-NAME1, "CPD-customer name + BUDAT LIKE BSAD-BUDAT, +* 2004.6.15일 필드길이 수정 + MATNR(25) TYPE C, "LIKE vbrp-matnr, "material number +* 수정끝 + ARKTX(15) TYPE C, "material description + VRKME(5) TYPE C, "판매단위 +*수량에 소수점이 나오지 않도록 수정 +* fkimg(10) TYPE C, "actual invoiced quantity + FKIMG(13) TYPE C, "실제청구수량 + NETWR(15) TYPE C, "문서통화의 청구품목정가 + MWSBP(13) TYPE C, "문서통화의 세액 + UPRICE(15) TYPE C, "unit price(단가) + "청구품목정가 / 실제청구수량 + HWBAS LIKE BSET-HWBAS, "현지통화로 표시된 공급가액 + HWSTE LIKE BSET-HWSTE, "현지통화로 표시된 세액 +* Commercial display of UOM + MSEH3 LIKE T006A-MSEH3, "commercial dsiplay (UOM) + YYYYMMDD LIKE BSID-BUDAT, + END OF MATTYPE. +``` + +#### MATZEIL1 — data · L86-L86 {#decl-zfir0141-86-matzeil1} + +```abap +DATA: MATZEIL1 TYPE MATTYPE. +``` + +#### MATZEIL2 — data · L87-L87 {#decl-zfir0141-87-matzeil2} + +```abap +DATA: + MATZEIL2 TYPE MATTYPE. +``` + +#### MATZEIL3 — data · L88-L88 {#decl-zfir0141-88-matzeil3} + +```abap +DATA: + MATZEIL3 TYPE MATTYPE. +``` + +#### MATZEIL4 — data · L89-L89 {#decl-zfir0141-89-matzeil4} + +```abap +DATA: + MATZEIL4 TYPE MATTYPE. +``` + +#### VALUE_SELECTED — data · L91-L91 {#decl-zfir0141-91-value_selected} + +```abap +DATA: VALUE_SELECTED. +``` + +#### POINT — data · L92-L92 {#decl-zfir0141-92-point} + +```abap +DATA: POINT TYPE C. +``` + +#### LINE_COUNT — data · L93-L93 {#decl-zfir0141-93-line_count} + +```abap +DATA: LINE_COUNT TYPE I. "number of lines +``` + +#### LINE_COUNT2 — data · L94-L94 {#decl-zfir0141-94-line_count2} + +```abap +DATA: LINE_COUNT2 TYPE I. "number of lines +``` + +#### LINE_COUNT_PR — data · L95-L95 {#decl-zfir0141-95-line_count_pr} + +```abap +DATA: LINE_COUNT_PR TYPE I. "number of lines +``` + +#### SEL_INDEX — data · L96-L96 {#decl-zfir0141-96-sel_index} + +```abap +DATA: SEL_INDEX TYPE I. +``` + +#### SAVE_SAVE_UMSKZ — data · L97-L97 {#decl-zfir0141-97-save_save_umskz} + +```abap +DATA: SAVE_SAVE_UMSKZ LIKE BSEG-UMSKZ. +``` + +#### FORM — data · L98-L98 {#decl-zfir0141-98-form} + +```abap +DATA: FORM LIKE THEAD-TDFORM. " Sap-Script form +``` + +#### ADRESSE — data · L99-L99 {#decl-zfir0141-99-adresse} + +```abap +DATA: ADRESSE LIKE ADDR1_VAL. "business place address data +``` + +#### FELD1A — data · L101-L101 {#decl-zfir0141-101-feld1a} + +```abap +DATA: FELD1A(12) TYPE N. " field for printing the total +``` + +#### FELD1B — data · L104-L104 {#decl-zfir0141-104-feld1b} + +```abap +DATA: + FELD1B(11) TYPE N. " field for printing thetotal +``` + +#### FELD3 — data · L107-L107 {#decl-zfir0141-107-feld3} + +```abap +DATA: + FELD3(15) TYPE N. +``` + +#### COUNT1 — data · L109-L109 {#decl-zfir0141-109-count1} + +```abap +DATA: + COUNT1(2) TYPE N. " number of empty casesin the +``` + +#### TESTP — data · L112-L112 {#decl-zfir0141-112-testp} + +```abap +DATA: TESTP(9) TYPE C. +``` + +#### L_LINES — data · L114-L114 {#decl-zfir0141-114-l_lines} + +```abap +DATA : L_LINES(5). +``` + +#### DD1 — data · L115-L115 {#decl-zfir0141-115-dd1} + +```abap +DATA : YY1(2), MM1(2), DD1(2). +``` + +#### MM1 — data · L115-L115 {#decl-zfir0141-115-mm1} + +```abap +DATA : YY1(2), MM1(2), DD1(2). +``` + +#### YY1 — data · L115-L115 {#decl-zfir0141-115-yy1} + +```abap +DATA : YY1(2), MM1(2), DD1(2). +``` + +#### BYEAR — data · L117-L117 {#decl-zfir0141-117-byear} + +```abap +DATA: BYEAR(2) TYPE C. +``` + +#### BMONTH — data · L118-L118 {#decl-zfir0141-118-bmonth} + +```abap +DATA: BMONTH(2) TYPE C. +``` + +#### BDAY — data · L119-L119 {#decl-zfir0141-119-bday} + +```abap +DATA: BDAY(2) TYPE C. +``` + +#### TOT_AMOUNT — data · L120-L120 {#decl-zfir0141-120-tot_amount} + +```abap +DATA: TOT_AMOUNT LIKE VBRP-NETWR. +``` + +#### VALUE1 — data · L121-L121 {#decl-zfir0141-121-value1} + +```abap +DATA: VALUE1 LIKE VBRP-NETWR. +``` + +#### VALUE2 — data · L122-L122 {#decl-zfir0141-122-value2} + +```abap +DATA: VALUE2 LIKE VBRP-NETWR. +``` + +#### COUNT — data · L124-L124 {#decl-zfir0141-124-count} + +```abap +DATA : COUNT LIKE LINE_COUNT. +``` + +#### UMSKZ — data · L125-L125 {#decl-zfir0141-125-umskz} + +```abap +DATA : UMSKZ LIKE BSEG-UMSKZ. +``` + +#### BUPLA — data · L126-L126 {#decl-zfir0141-126-bupla} + +```abap +DATA : BUPLA LIKE BSEG-BUPLA. +``` + +#### SGTXT — data · L127-L127 {#decl-zfir0141-127-sgtxt} + +```abap +DATA : SGTXT LIKE BSEG-SGTXT. +``` + +#### BAL_TEXT — data · L128-L128 {#decl-zfir0141-128-bal_text} + +```abap +DATA : BAL_TEXT LIKE BSEG-SGTXT. +``` + +#### CURSORFIELD — data · L129-L129 {#decl-zfir0141-129-cursorfield} + +```abap +DATA : CURSORFIELD(20). " cursor position for pickup +``` + +#### SIM — data · L130-L130 {#decl-zfir0141-130-sim} + +```abap +DATA : SIM TYPE C. +``` + +#### AUG — data · L131-L131 {#decl-zfir0141-131-aug} + +```abap +DATA : AUG TYPE C. +``` + +#### SAP_FORM — data · L132-L132 {#decl-zfir0141-132-sap_form} + +```abap +DATA : SAP_FORM LIKE T001F-FORNR. "Note 975866 +``` + +#### L_STATE_INSC — data · L134-L134 {#decl-zfir0141-134-l_state_insc} + +```abap +DATA: L_STATE_INSC(4). +``` + +#### BUPLA_HQ — data · L137-L137 {#decl-zfir0141-137-bupla_hq} + +```abap +DATA: BUPLA_HQ LIKE BSEG-BUPLA. +``` + +#### SN1OP — data · L143-L143 {#decl-zfir0141-143-sn1op} + +```abap +DATA : SN1OP TYPE C. +``` + +#### GT_CNT — data · L144-L144 {#decl-zfir0141-144-gt_cnt} + +```abap +DATA : GT_CNT(3) TYPE N. +``` + +#### RETURN_CODE — data · L145-L145 {#decl-zfir0141-145-return_code} + +```abap +DATA : RETURN_CODE TYPE BAPIRETURN-CODE. +``` + +#### IT_FCODE — data · L147-L147 {#decl-zfir0141-147-it_fcode} + +```abap +DATA : IT_FCODE LIKE RSMPE-FUNC OCCURS 0 WITH HEADER LINE. +``` + +#### ZDTI_CONFIG — tables · L150-L150 {#decl-zfir0141-150-zdti_config} + +```abap +TABLES : ZDTI_CONFIG. +``` + +#### ADRC — tables · L151-L151 {#decl-zfir0141-151-adrc} + +```abap +TABLES: + ADRC. +``` + +#### FLAG_ONEBUPLA — data · L152-L152 {#decl-zfir0141-152-flag_onebupla} + +```abap +DATA : FLAG_ONEBUPLA. +``` + +#### IT_BUDAT — data · L159-L162 {#decl-zfir0141-159-it_budat} + +```abap +DATA : BEGIN OF IT_BUDAT OCCURS 0, + AUGBL LIKE BSAD-AUGBL, + BUDAT LIKE BSAD-BUDAT, + END OF IT_BUDAT. +``` + +#### AUSGLOP_ITAB — data · L163-L210 {#decl-zfir0141-163-ausglop_itab} + +```abap +DATA : BEGIN OF AUSGLOP_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer number + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + FILKD LIKE BSAD-KUNNR, + NAME1 LIKE BSEC-NAME1, "CPD-customer name + ORT01 LIKE BSEC-ORT01, "CPD-customer city + GJAHR LIKE BSAD-GJAHR, "business year + GSBER LIKE BSAD-GSBER, "business area + BUPLA LIKE BSID-BUPLA, "business place + AUGBL LIKE BSAD-AUGBL, "tax invoice number + AUGDT LIKE BSAD-AUGDT, "tax invoice date + BELNR LIKE BSAD-BELNR, "acc. document number + BLART LIKE BKPF-BLART, "acc. document type + BUDAT LIKE BSAD-BUDAT, "posting documnet date + BLDAT LIKE BSAD-BLDAT, "acc. document date + SHKZG LIKE BSAD-SHKZG, "debit/credit indicator + BSCHL LIKE BSAD-BSCHL, "posting key + AWTYP LIKE BKPF-AWTYP, "object type for + "calling application + AWKEY LIKE BKPF-AWKEY, "object key + "in acc. document + DMBTR LIKE BSAD-DMBTR, "amount in document + "currency + HWBAS LIKE BSET-HWBAS, "tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + WAERS LIKE T001-WAERS, "company code currency + MWSKZ LIKE BSET-MWSKZ, "tax code + UMSKZ LIKE BSAD-UMSKZ, "special g_l indicator + VBELN LIKE VBRK-VBELN, "billing document + FKDAT LIKE VBRK-FKDAT, "billing date + FKART LIKE VBRK-FKART, "billing type + "대금청구유형(예:F2(송장)) + FKTYP LIKE VBRK-FKTYP, "billing category + "(예:L(납품관련대금청구문서)) + HWAER LIKE BKPF-HWAER, "현지 통화 + WAERK LIKE VBRK-WAERK, "SD문서 통화 + KURRF LIKE VBRK-KURRF, "exchange rate + KURST LIKE VBRK-KURST, "exchange type + KURRF_DAT LIKE VBRK-KURRF_DAT,"exchange date + XCPDK LIKE KNA1-XCPDK, "지시자: 일회성계정 + SGTXT LIKE BSEG-SGTXT, "quantity info from AR invoices.. + FLAG TYPE C, "AR invoices with qty.. + CHECK, + LIST_LINE LIKE SY-LINNO, + BUDAT1 LIKE BSID-BUDAT, "세금계산서일자 + RESULT TYPE BAPIRETURN-CODE, "smartbill 추가 2006.07.24 + END OF AUSGLOP_ITAB. +``` + +#### AUSGLOP_ITAB2 — data · L215-L231 {#decl-zfir0141-215-ausglop_itab2} + +```abap +DATA: BEGIN OF AUSGLOP_ITAB2 OCCURS 0, + BUKRS LIKE BSAD-BUKRS, + KUNNR LIKE BSAD-KUNNR, + NAME1 LIKE BSEC-NAME1, + GJAHR LIKE BSAD-GJAHR, + BUPLA LIKE BSID-BUPLA, + AUGBL LIKE BSAD-AUGBL, "반제전표번호 + AUGDT LIKE BSAD-AUGDT, "반제 + DMBTR LIKE BSAD-DMBTR, "현지(회사)통화금액 + HWBAS LIKE BSET-HWBAS, "현지통화로 표시된 과세표준액 + HWSTE LIKE BSET-HWSTE, "현지통화로 표시된 세액 + WAERS LIKE T001-WAERS, "회사통화키 +* 2004.2.19 세금계산서 일자를 전표일자로 변경 + BUDAT1 LIKE BSAD-BUDAT, "세금계산서 일자를 전표일자로 변경 + CHECK, + LIST_LINE LIKE SY-LINNO, + END OF AUSGLOP_ITAB2. +``` + +#### DOC_CNT_ITAB — data · L232-L232 {#decl-zfir0141-232-doc_cnt_itab} + +```abap +DATA : DOC_CNT_ITAB LIKE AUSGLOP_ITAB OCCURS 0 WITH HEADER LINE. +``` + +#### WA_ITAB2 — data · L234-L234 {#decl-zfir0141-234-wa_itab2} + +```abap +DATA : WA_ITAB2 LIKE LINE OF AUSGLOP_ITAB2. +``` + +#### AUSGLOP_MAT_ITAB — data · L236-L255 {#decl-zfir0141-236-ausglop_mat_itab} + +```abap +DATA : BEGIN OF AUSGLOP_MAT_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + NAME1 LIKE BSEC-NAME1, "CPD-customer name + AUGBL LIKE BSAD-AUGBL, "clearing document number + MATNR(25) TYPE C, " LIKE vbrp-matnr, "material number + ARKTX LIKE VBRP-ARKTX, "material description + VRKME LIKE VBRP-VRKME, "sales unit(판매단위) + FKIMG LIKE VBRP-FKIMG, "actual invoiced quantity(수량) + NETWR LIKE VBRP-NETWR, "문서통화의 청구품목정가 + MWSBP LIKE VBRP-MWSBP, "문서통화의 세액 + UPRICE LIKE VBRP-NETWR, "단가 + HWBAS LIKE BSET-HWBAS, "현지통화로 표시된 공급가액 + HWSTE LIKE BSET-HWSTE, "현지통화로 표시된 세액 +* Commercial display of UOM + MSEH3 LIKE T006A-MSEH3, "commercial display (UOM) +* budat like bsid-budat, + YYYYMMDD LIKE BSID-BUDAT, + END OF AUSGLOP_MAT_ITAB. +``` + +#### ALL_ITEMS_ITAB — data · L260-L276 {#decl-zfir0141-260-all_items_itab} + +```abap +DATA: BEGIN OF ALL_ITEMS_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + AUGBL LIKE BSAD-AUGBL, "clearing document number + NETWR LIKE VBRP-NETWR, "Net value of the billing item + MWSBP LIKE VBRP-MWSBP, "Tax amount in document currency + HWBAS LIKE BSET-HWBAS, "Tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + DELTAN LIKE VBRP-NETWR, "delta currency conversion + DELTAM LIKE VBRP-MWSBP, "delta currency conversion + FLAG TYPE C, "for more than 5 matl records... +* BUDAT LIKE BSID-BUDAT, 세금계산서상에 두배가 나오는 문제로 +* marking함 20060601-0010-5 + +* budat LIKE bsad-budat, + END OF ALL_ITEMS_ITAB. +``` + +#### ALL_MAT_ITAB — data · L278-L278 {#decl-zfir0141-278-all_mat_itab} + +```abap +DATA : ALL_MAT_ITAB LIKE ALL_ITEMS_ITAB OCCURS 0 WITH HEADER LINE. +``` + +#### MATNUM — data · L281-L281 {#decl-zfir0141-281-matnum} + +```abap +DATA: MATNUM LIKE VBRP-MATNR. "material number +``` + +#### NUMBER — data · L282-L282 {#decl-zfir0141-282-number} + +```abap +DATA: NUMBER(2). +``` + +#### ALL_ITEMS_SD_ITAB — data · L286-L295 {#decl-zfir0141-286-all_items_sd_itab} + +```abap +DATA: BEGIN OF ALL_ITEMS_SD_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + AUGBL LIKE BSAD-AUGBL, "clearing document number + NETWR LIKE VBRP-NETWR, "Net value of the billing item + MWSBP LIKE VBRP-MWSBP, "Tax amount in document currency + HWBAS LIKE BSET-HWBAS, + HWSTE LIKE BSET-HWSTE, + END OF ALL_ITEMS_SD_ITAB. +``` + +#### ALL_ITEMS_FI_ITAB — data · L299-L308 {#decl-zfir0141-299-all_items_fi_itab} + +```abap +DATA: BEGIN OF ALL_ITEMS_FI_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + AUGBL LIKE BSAD-AUGBL, "clearing document number + NETWR LIKE VBRP-NETWR, "Net value of the billing item + MWSBP LIKE VBRP-MWSBP, "Tax amount in document currency + HWBAS LIKE BSET-HWBAS, + HWSTE LIKE BSET-HWSTE, + END OF ALL_ITEMS_FI_ITAB. +``` + +#### SUM_TAXES — data · L310-L319 {#decl-zfir0141-310-sum_taxes} + +```abap +DATA: BEGIN OF SUM_TAXES OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + AUGBL LIKE BSAD-AUGBL, "clearing document number + NETWR LIKE VBRP-NETWR, "Net value of the billing item + MWSBP LIKE VBRP-MWSBP, "Tax amount in document currency + HWBAS LIKE BSET-HWBAS, + HWSTE LIKE BSET-HWSTE, + END OF SUM_TAXES. +``` + +#### ADDRESS_ITAB — data · L325-L343 {#decl-zfir0141-325-address_itab} + +```abap +DATA : BEGIN OF ADDRESS_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE KNA1-KUNNR, "Custmer account + NAME LIKE KNA1-NAME1, "Customer name + STCD LIKE BSEC-STCD1, "tax code1 or tax code2 + NAME1 LIKE KNA1-NAME1, "Customer name + ADRNR LIKE KNA1-ADRNR, "Customer address + ORT01 LIKE KNA1-ORT01, "Customer city + ORT02 LIKE KNA1-ORT02, "Customer city + PSTLZ LIKE KNA1-PSTLZ, "Customer city postal code + STRAS LIKE KNA1-STRAS, "Customer street + BUSTYP(16), "LIKE kna1-j_1kftbus, "type of business + INDTYP(16), " LIKE kna1-j_1kftind, "type of industry + REPRE LIKE KNA1-J_1KFREPRE, "representative + STCD1 LIKE KNA1-STCD1, "tax code1 + STCD2 LIKE KNA1-STCD2, "tax code2 +* smartbill 추가 2006.07.19. + TELF1 LIKE KNA1-TELF1, "전화번호 + END OF ADDRESS_ITAB. +``` + +#### BUPLA_ADRESSE — data · L347-L362 {#decl-zfir0141-347-bupla_adresse} + +```abap +DATA : BEGIN OF BUPLA_ADRESSE OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH,"business place + NAME1 LIKE KNA1-NAME1, "bus place name + STREET LIKE KNA1-STRAS, "bus place street name + HOUSE_NUM1 LIKE KNA1-TELF1, "bus place house-number + POST_CODE1 LIKE KNA1-PSTLZ, "bus place city postal code + CITY1 LIKE KNA1-ORT01, "bus place city + CITY2 LIKE KNA1-ORT02, "bus place city + KR_BUSTYPE(16), "LIKE kna1-j_1kftbus, "type of business + KR_INDTYPE(16), "LIKE kna1-j_1kftind, "type of industry + KR_REPRES(14), " LIKE kna1-j_1kfrepre, "representative + STCD1 LIKE KNA1-STCD1, "tax code1 + STCD2 LIKE KNA1-STCD2, "tax code2 + BUDAT1 LIKE BSID-BUDAT, + AUGBL LIKE BSID-AUGBL, "세금계산서번호 + END OF BUPLA_ADRESSE. +``` + +#### MATZEIL4_ITAB — data · L367-L383 {#decl-zfir0141-367-matzeil4_itab} + +```abap +DATA: BEGIN OF MATZEIL4_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, "company code + KUNNR LIKE BSAD-KUNNR, "customer + STCD LIKE BSEC-STCD1, + AUGBL LIKE BSAD-AUGBL, "반제전표번호 + MATNR(25) TYPE C," LIKE vbrp-matnr, "material number + ARKTX(15) TYPE C, "material description + VRKME(2) TYPE C, "판매단위 +*수량에 소수점이 나오지 않도록 수정 +* fkimg(10) TYPE c, "actual invoiced quantity + FKIMG(13) TYPE C, "actual invoiced quantity + NETWR(15) TYPE C, "Net value of the billing item + MWSBP(13) TYPE C, "Tax amount in document currency + UPRICE(15) TYPE C, "unit price + HWBAS LIKE BSET-HWBAS, "tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + END OF MATZEIL4_ITAB. +``` + +#### MATZEIL1_ITAB — data · L385-L385 {#decl-zfir0141-385-matzeil1_itab} + +```abap +DATA : MATZEIL1_ITAB LIKE MATZEIL4_ITAB OCCURS 0 WITH HEADER LINE. +``` + +#### OPTIONS — data · L387-L389 {#decl-zfir0141-387-options} + +```abap +DATA BEGIN OF OPTIONS. + INCLUDE STRUCTURE ITCPO. +DATA END OF OPTIONS. +``` + +#### RESULT — data · L391-L393 {#decl-zfir0141-391-result} + +```abap +DATA BEGIN OF RESULT. + INCLUDE STRUCTURE ITCPP. +DATA END OF RESULT. +``` + +#### CHECK_ITAB — data · L397-L406 {#decl-zfir0141-397-check_itab} + +```abap +DATA : BEGIN OF CHECK_ITAB OCCURS 0, + BUKRS LIKE BSAD-BUKRS, + KUNNR LIKE BSEG-KUNNR, + STCD LIKE BSEC-STCD1, + AUGBL LIKE BSAD-AUGBL, "반제전표번호 + SAVE_UMSKZ LIKE BSEG-UMSKZ, "특별 G/L + AWTYP_FI(4), + AWTYP_SD(4), + LINE_COUNT2 TYPE I, + END OF CHECK_ITAB. +``` + +#### SEL_AUSGLOP_ITAB — data · L408-L456 {#decl-zfir0141-408-sel_ausglop_itab} + +```abap +DATA: BEGIN OF SEL_AUSGLOP_ITAB OCCURS 0, + BUKRS LIKE BSID-BUKRS, "company code + KUNNR LIKE BSID-KUNNR, "customer number + XCPDK LIKE KNA1-XCPDK, "one time customer... + STCD LIKE BSEC-STCD1, "CPD tax code1 + NAME1 LIKE BSEC-NAME1, "CPD-customer name + ORT01 LIKE BSEC-ORT01, "CPD-customer city + GJAHR LIKE BSID-GJAHR, "business year + GSBER LIKE BSID-GSBER, "business area + BUPLA LIKE BSID-BUPLA, "business place + BLART LIKE BKPF-BLART, "acc. document type + BELNR LIKE BSID-BELNR, "acc. document number + AUGBL LIKE BSAD-AUGBL, "tax invoice number + AUGDT LIKE BSEG-AUGDT, "tax invoice date + BUZEI LIKE BSEG-BUZEI, "item line in acc. document + BUDAT LIKE BSID-BUDAT, "posting documnet date + BLDAT LIKE BSID-BLDAT, "acc. document date + SHKZG LIKE BSID-SHKZG, "debit/credit indicator + BSCHL LIKE BSID-BSCHL, "posting key + AWTYP LIKE BKPF-AWTYP, "object type for + + AWKEY LIKE BKPF-AWKEY, "object key + DMBTR LIKE BSID-DMBTR, "회사통화금액 + WRBTR LIKE BSID-WRBTR, "전표통화금액 + HWBAS LIKE BSET-HWBAS, "tax base amount + HWSTE LIKE BSET-HWSTE, "tax amount + FWBAS LIKE BSET-FWBAS, "tax base amount in doc. curr + FWSTE LIKE BSET-FWSTE, "tax amount in doc.curr + WAERS LIKE T001-WAERS, "document currency + HWAER LIKE T001-WAERS, "company code currency + MWSKZ LIKE BSET-MWSKZ, "tax code + UMSKZ LIKE BSID-UMSKZ, "special G/L indicator + ZTERM LIKE BSEG-ZTERM, "payment terms + ZFBDT LIKE BSEG-ZFBDT, "basis date + VBELN LIKE VBRK-VBELN, "billing document + FKDAT LIKE VBRK-FKDAT, "billing date + FKART LIKE VBRK-FKART, "billing type + FKTYP LIKE VBRK-FKTYP, "billing category + MSCHL LIKE BSEG-MSCHL, "dunning key (독촉키) + MANSP LIKE BSEG-MANSP, "dunning block + MADAT LIKE BSEG-MADAT, "last dunned on + MANST LIKE BSEG-MANST, "dunning level + MABER LIKE BSEG-MABER, "dunning area + HKONT LIKE BSEG-HKONT, + FISTL LIKE BSEG-FISTL, + SGTXT LIKE BSEG-SGTXT, "qty info from AR invoices.. + RESULT TYPE BAPIRETURN-CODE, "smartbill 추가 2006.07.24 + +END OF SEL_AUSGLOP_ITAB. +``` + +#### BKPF_TAB — data · L458-L458 {#decl-zfir0141-458-bkpf_tab} + +```abap +DATA : BKPF_TAB LIKE BKPF OCCURS 0 WITH HEADER LINE. +``` + +#### BSET_TAB — data · L459-L459 {#decl-zfir0141-459-bset_tab} + +```abap +DATA : BSET_TAB LIKE BSET OCCURS 0 WITH HEADER LINE. +``` + +#### BSEG_TAB — data · L460-L460 {#decl-zfir0141-460-bseg_tab} + +```abap +DATA : BSEG_TAB LIKE BSEG OCCURS 0 WITH HEADER LINE. +``` + +#### AUGBL — data · L461-L461 {#decl-zfir0141-461-augbl} + +```abap +DATA : AUGBL LIKE BSEG-AUGBL. +``` + +#### PROG_NAME — data · L462-L462 {#decl-zfir0141-462-prog_name} + +```abap +DATA : PROG_NAME LIKE SYST-CPROG. +``` + +#### EXIT — data · L463-L463 {#decl-zfir0141-463-exit} + +```abap +DATA : EXIT TYPE C. +``` + +#### COPY — data · L464-L464 {#decl-zfir0141-464-copy} + +```abap +DATA : COPY(1) TYPE N. +``` + +#### BVAT — data · L465-L465 {#decl-zfir0141-465-bvat} + +```abap +DATA : BVAT(12). +``` + +#### VAT_BUS — data · L466-L466 {#decl-zfir0141-466-vat_bus} + +```abap +DATA : VAT_BUS(24) VALUE '| - - |'. +``` + +#### CVAT — data · L467-L467 {#decl-zfir0141-467-cvat} + +```abap +DATA : CVAT(12). +``` + +#### VAT_COM — data · L468-L468 {#decl-zfir0141-468-vat_com} + +```abap +DATA : VAT_COM(24) VALUE '| - - |'. +``` + +#### BASE — data · L469-L469 {#decl-zfir0141-469-base} + +```abap +DATA : BASE(12). +``` + +#### AMT_BASE — data · L470-L470 {#decl-zfir0141-470-amt_base} + +```abap +DATA : AMT_BASE(22) VALUE ' | | | | | | | | | | |'. +``` + +#### TAX — data · L471-L471 {#decl-zfir0141-471-tax} + +```abap +DATA : TAX(11). +``` + +#### AMT_TAX — data · L472-L472 {#decl-zfir0141-472-amt_tax} + +```abap +DATA : AMT_TAX(20) VALUE ' | | | | | | | | | |'. +``` + +#### TAX_NO — data · L473-L473 {#decl-zfir0141-473-tax_no} + +```abap +DATA : TAX_NO(10) TYPE N. " TRUNCATED TAX INVOICE NUMBER +``` + +#### TAX_INV_NO — data · L474-L474 {#decl-zfir0141-474-tax_inv_no} + +```abap +DATA : TAX_INV_NO(10). +``` + +#### TAX_NUM — data · L475-L475 {#decl-zfir0141-475-tax_num} + +```abap +DATA : TAX_NUM(20) VALUE '| | | | | | | | | | '. +``` + +#### ADDRESS_COMP — data · L477-L477 {#decl-zfir0141-477-address_comp} + +```abap +DATA: ADDRESS_COMP(43). +``` + +#### ADDRESS_BUPLA — data · L478-L478 {#decl-zfir0141-478-address_bupla} + +```abap +DATA: ADDRESS_BUPLA(43). +``` + +#### PRIPAR — data · L479-L479 {#decl-zfir0141-479-pripar} + +```abap +DATA: PRIPAR LIKE PRI_PARAMS. +``` + +#### VAL — data · L480-L480 {#decl-zfir0141-480-val} + +```abap +DATA: VAL(1) TYPE C. +``` + +#### SDFI — data · L481-L481 {#decl-zfir0141-481-sdfi} + +```abap +DATA: SDFI(1) TYPE C. " used in list output only +``` + +#### W_HTYPE — data · L484-L484 {#decl-zfir0141-484-w_htype} + +```abap +DATA : W_HTYPE(4). +``` + +#### REPRINT — data · L485-L485 {#decl-zfir0141-485-reprint} + +```abap +DATA: + REPRINT. +``` + +#### CANCEL — data · L486-L486 {#decl-zfir0141-486-cancel} + +```abap +DATA: + CANCEL. +``` + +#### G_LINES — data · L487-L487 {#decl-zfir0141-487-g_lines} + +```abap +DATA: + G_LINES TYPE I. +``` + +#### FL_TAX_RAT — data · L488-L488 {#decl-zfir0141-488-fl_tax_rat} + +```abap +DATA: + FL_TAX_RAT VALUE '1'. " 영세율인가? +``` + +#### IT_VBRP — data · L490-L496 {#decl-zfir0141-490-it_vbrp} + +```abap +DATA : BEGIN OF IT_VBRP OCCURS 0, + MATNR(25) TYPE C, " LIKE vbrp-matnr, + VBELN LIKE VBRP-VBELN, + BUDAT(8), " LIKE bsid-budat, + AUGBL LIKE BSAD-AUGBL, "tax invoice number + + END OF IT_VBRP. +``` + +#### GT_ZSBBSEG — data · L499-L499 {#decl-zfir0141-499-gt_zsbbseg} + +```abap +DATA : GT_ZSBBSEG LIKE ZSBBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ZSBISSUE — data · L500-L500 {#decl-zfir0141-500-gt_zsbissue} + +```abap +DATA : GT_ZSBISSUE LIKE ZSBISSUE_ITEM OCCURS 0 WITH HEADER LINE. +``` + +#### GT_MAIL — data · L503-L512 {#decl-zfir0141-503-gt_mail} + +```abap +DATA : BEGIN OF GT_MAIL OCCURS 0, + BUKRS LIKE BKPF-BUKRS, + KUNNR LIKE KNA1-KUNNR, + ZBYCN LIKE ZDTI_HEADER-ZBYCN, + ZSQNO LIKE ZDTI_HEADER-ZSQNO, + ZBYRE LIKE ZDTI_HEADER-ZBYRE, + HWAER LIKE ZDTI_HEADER-HWAER, + HWBAS LIKE ZDTI_HEADER-HWBAS, + HWSTE LIKE ZDTI_HEADER-HWSTE, + END OF GT_MAIL. +``` + +#### GT_SCR — data · L515-L517 {#decl-zfir0141-515-gt_scr} + +```abap +DATA: BEGIN OF GT_SCR OCCURS 0. + INCLUDE STRUCTURE ZDTI_LAYOUT. +DATA: END OF GT_SCR. +``` + +#### ZSB_HEADER — data · L521-L523 {#decl-zfir0141-521-zsb_header} + +```abap +DATA: BEGIN OF ZSB_HEADER OCCURS 0. + INCLUDE STRUCTURE ZSB_HEADER. +DATA: END OF ZSB_HEADER. +``` + +#### ZSB_ITEM — data · L525-L527 {#decl-zfir0141-525-zsb_item} + +```abap +DATA: BEGIN OF ZSB_ITEM OCCURS 0. + INCLUDE STRUCTURE ZSB_ITEM. +DATA: END OF ZSB_ITEM. +``` + +#### ZSB_PAYMENT — data · L529-L531 {#decl-zfir0141-529-zsb_payment} + +```abap +DATA: BEGIN OF ZSB_PAYMENT OCCURS 0. + INCLUDE STRUCTURE ZSB_PAYMENT. +DATA: END OF ZSB_PAYMENT. +``` + +#### ZSB_BELNR — data · L533-L535 {#decl-zfir0141-533-zsb_belnr} + +```abap +DATA: BEGIN OF ZSB_BELNR OCCURS 0. + INCLUDE STRUCTURE ZSB_BELNR. +DATA: END OF ZSB_BELNR. +``` + +#### LCL_EVENT_RECEIVER — class · L541-L547 {#decl-zfir0141-541-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + PUBLIC SECTION. + METHODS : + HANDLE_TOOLBAR3 + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT E_INTERACTIVE. +ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION +``` + +#### EVENT_RECEIVER — data · L574-L574 {#decl-zfir0141-574-event_receiver} + +```abap +DATA : EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. "ALVGRID EVENT용 +``` + +#### SLIS — type-pool · L578-L578 {#decl-zfir0141-578-slis} + +```abap +TYPE-POOLS: SLIS. +``` + +#### GT_FCAT — data · L580-L580 {#decl-zfir0141-580-gt_fcat} + +```abap +DATA : GT_FCAT TYPE LVC_S_FCAT OCCURS 0 WITH HEADER LINE. +``` + +#### I_FIELD — data · L581-L581 {#decl-zfir0141-581-i_field} + +```abap +DATA: + I_FIELD LIKE GT_FCAT OCCURS 0 WITH HEADER LINE. +``` + +#### G_CUSTOM_CONTAINER — data · L583-L583 {#decl-zfir0141-583-g_custom_container} + +```abap +DATA : G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### DIALOGBOX_CONTAINER — data · L584-L584 {#decl-zfir0141-584-dialogbox_container} + +```abap +DATA: + DIALOGBOX_CONTAINER TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GRID1 — data · L585-L585 {#decl-zfir0141-585-grid1} + +```abap +DATA: + GRID1 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GS_LAYOUT — data · L586-L586 {#decl-zfir0141-586-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE LVC_S_LAYO. " ALV 제어: 레이아웃구조 +``` + +#### GS_VARIANT — data · L587-L587 {#decl-zfir0141-587-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### IT_EVENTS — data · L588-L588 {#decl-zfir0141-588-it_events} + +```abap +DATA: + IT_EVENTS TYPE SLIS_ALV_EVENT OCCURS 1 WITH HEADER LINE. +``` + +#### LS_FIELDCAT — data · L589-L589 {#decl-zfir0141-589-ls_fieldcat} + +```abap +DATA: + LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. +``` + +#### LS_FIELD — data · L590-L590 {#decl-zfir0141-590-ls_field} + +```abap +DATA: + LS_FIELD TYPE LVC_S_FCAT. +``` + +#### ALV_LAYOUT — data · L591-L591 {#decl-zfir0141-591-alv_layout} + +```abap +DATA: + ALV_LAYOUT TYPE SLIS_LAYOUT_ALV. +``` + +#### ALV_SORT — data · L592-L592 {#decl-zfir0141-592-alv_sort} + +```abap +DATA: + ALV_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE. +``` + +#### L_REPID — data · L593-L593 {#decl-zfir0141-593-l_repid} + +```abap +DATA: + L_REPID LIKE SY-REPID. +``` + +#### LINECOLOR — data · L594-L594 {#decl-zfir0141-594-linecolor} + +```abap +DATA: + LINECOLOR TYPE SLIS_SPECIALCOL_ALV OCCURS 0 WITH HEADER LINE. +``` + +#### POS — data · L595-L595 {#decl-zfir0141-595-pos} + +```abap +DATA: + POS TYPE I VALUE 1. +``` + +#### G_CUSTOM_CONTAINER1 — data · L596-L596 {#decl-zfir0141-596-g_custom_container1} + +```abap +DATA: + G_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GRID2 — data · L597-L597 {#decl-zfir0141-597-grid2} + +```abap +DATA: + GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### G_CUSTOM_CONTAINER2 — data · L598-L598 {#decl-zfir0141-598-g_custom_container2} + +```abap +DATA: + G_CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GRID3 — data · L599-L599 {#decl-zfir0141-599-grid3} + +```abap +DATA: + GRID3 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### I_LAYOUT — data · L600-L600 {#decl-zfir0141-600-i_layout} + +```abap +DATA: + I_LAYOUT TYPE LVC_S_LAYO. +``` + +#### THWBAS — data · L601-L601 {#decl-zfir0141-601-thwbas} + +```abap +DATA: THWBAS LIKE ZDTI_SAPP-HWBAS. +``` + +#### CHECK_FLAG — data · L602-L602 {#decl-zfir0141-602-check_flag} + +```abap +DATA: + CHECK_FLAG. +``` + +#### HTML_CONTROL — data · L604-L604 {#decl-zfir0141-604-html_control} + +```abap +DATA: HTML_CONTROL TYPE REF TO CL_GUI_HTML_VIEWER. +``` + +#### MY_CONTAINER — data · L605-L605 {#decl-zfir0141-605-my_container} + +```abap +DATA: + MY_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### FCODE — data · L606-L606 {#decl-zfir0141-606-fcode} + +```abap +DATA: + FCODE LIKE SY-UCOMM. +``` + +#### MYEVENT_TAB — data · L607-L607 {#decl-zfir0141-607-myevent_tab} + +```abap +DATA: + MYEVENT_TAB TYPE CNTL_SIMPLE_EVENTS. +``` + +#### MYEVENT — data · L608-L608 {#decl-zfir0141-608-myevent} + +```abap +DATA: + MYEVENT TYPE CNTL_SIMPLE_EVENT. +``` + +#### EDURL — data · L609-L609 {#decl-zfir0141-609-edurl} + +```abap +DATA: + EDURL(2048). +``` + +#### ALIGNMENT — data · L610-L610 {#decl-zfir0141-610-alignment} + +```abap +DATA: + ALIGNMENT TYPE I. +``` + +#### OK_CODE — data · L613-L613 {#decl-zfir0141-613-ok_code} + +```abap +DATA : OK_CODE TYPE SY-UCOMM. +``` + +#### SAVE_CODE — data · L614-L614 {#decl-zfir0141-614-save_code} + +```abap +DATA: + SAVE_CODE LIKE OK_CODE. +``` + +#### SBUKRS — parameter · L629-L629 {#decl-zfir0141-629-sbukrs} + +```abap +PARAMETERS: SBUKRS LIKE BSAD-BUKRS DEFAULT 'KR01' OBLIGATORY. +``` + +#### SKUNNR — select-option · L630-L630 {#decl-zfir0141-630-skunnr} + +```abap +SELECT-OPTIONS: SKUNNR FOR BSAD-KUNNR. "Customer +``` + +#### SGJAHR — parameter · L632-L632 {#decl-zfir0141-632-sgjahr} + +```abap +PARAMETERS: SGJAHR LIKE BKPF-GJAHR OBLIGATORY. +``` + +#### SBLDAT — parameter · L638-L638 {#decl-zfir0141-638-sbldat} + +```abap +PARAMETERS SBLDAT LIKE BKPF-BLDAT. " OBLIGATORY. +``` + +#### SAUGBL — select-option · L645-L645 {#decl-zfir0141-645-saugbl} + +```abap +SELECT-OPTIONS: SAUGBL FOR BKPF-BKTXT . " tax inv number +``` + +#### SAUGDT — select-option · L646-L646 {#decl-zfir0141-646-saugdt} + +```abap +SELECT-OPTIONS: SAUGDT FOR BSET-MLDDT. "tax invoice date. +``` + +#### STA1 — parameter · L655-L655 {#decl-zfir0141-655-sta1} + +```abap +PARAMETER STA1 RADIOBUTTON GROUP TATI." normal tax inv. +``` + +#### STA2 — parameter · L657-L657 {#decl-zfir0141-657-sta2} + +```abap +PARAMETER STA2 RADIOBUTTON GROUP TATI."tax exempted tax inv +``` + +#### SAP — parameter · L665-L665 {#decl-zfir0141-665-sap} + +```abap +PARAMETER SAP RADIOBUTTON GROUP OUT. " SAP script output +``` + +#### FULLLIST — parameter · L667-L667 {#decl-zfir0141-667-fulllist} + +```abap +PARAMETER FULLLIST RADIOBUTTON GROUP OUT DEFAULT 'X'. " list Output +``` + +#### LIST — parameter · L669-L669 {#decl-zfir0141-669-list} + +```abap +PARAMETER LIST RADIOBUTTON GROUP OUT. " List Output values +``` + +#### CHK_PRTI — parameter · L680-L680 {#decl-zfir0141-680-chk_prti} + +```abap +PARAMETER CHK_PRTI RADIOBUTTON GROUP PRIN DEFAULT 'X'." normal tax inv. +``` + +#### CHK_PRAD — parameter · L682-L682 {#decl-zfir0141-682-chk_prad} + +```abap +PARAMETER CHK_PRAD RADIOBUTTON GROUP PRIN. "additional list +``` + +#### RECEIPT — parameter · L700-L700 {#decl-zfir0141-700-receipt} + +```abap +PARAMETER RECEIPT RADIOBUTTON GROUP IND DEFAULT 'X'. " Receipt indicator +``` + +#### BILLING — parameter · L702-L702 {#decl-zfir0141-702-billing} + +```abap +PARAMETER BILLING RADIOBUTTON GROUP IND. " Billing indicator +``` + +#### CLEAR — data · unit 로컬 · L1927-L1927 {#decl-zfir0141-1927-clear} + +```abap + DATA : SIGN TYPE C, CLEAR TYPE C. +``` + +#### SIGN — data · unit 로컬 · L1927-L1927 {#decl-zfir0141-1927-sign} + +```abap + DATA : SIGN TYPE C, CLEAR TYPE C. +``` + +#### MATERIAL — data · unit 로컬 · L2270-L2270 {#decl-zfir0141-2270-material} + +```abap + DATA : MATERIAL LIKE VBRP-MATNR. +``` + +#### UNIT — data · unit 로컬 · L2271-L2271 {#decl-zfir0141-2271-unit} + +```abap +DATA: + UNIT LIKE VBRP-VRKME. +``` + +#### QTY — data · unit 로컬 · L2272-L2272 {#decl-zfir0141-2272-qty} + +```abap +DATA: + QTY LIKE VBRP-FKIMG. +``` + +#### ZBSID — data · unit 로컬 · L2387-L2387 {#decl-zfir0141-2387-zbsid} + +```abap + DATA: ZBSID LIKE BSID OCCURS 0 WITH HEADER LINE. +``` + +#### L_AUGBL — data · unit 로컬 · L2407-L2407 {#decl-zfir0141-2407-l_augbl} + +```abap + DATA : L_AUGBL(10) TYPE N. +``` + +#### STCD2 — data · unit 로컬 · L2496-L2496 {#decl-zfir0141-2496-stcd2} + +```abap + DATA STCD2(10). +``` + +#### DOC_NO — data · unit 로컬 · L2794-L2794 {#decl-zfir0141-2794-doc_no} + +```abap + DATA: DOC_NO(10) TYPE C. +``` + +#### FLAG — data · unit 로컬 · L2795-L2795 {#decl-zfir0141-2795-flag} + +```abap + DATA: FLAG TYPE C. +``` + +#### L_AAA — data · unit 로컬 · L3035-L3035 {#decl-zfir0141-3035-l_aaa} + +```abap + DATA: L_AAA(46). +``` + +#### MM1 — data · unit 로컬 · L3144-L3144 {#decl-zfir0141-3144-mm1} + +```abap + DATA : MM1(2), DD1(2), L_LEN TYPE I. +``` + +#### DD1 — data · unit 로컬 · L3144-L3144 {#decl-zfir0141-3144-dd1} + +```abap + DATA : MM1(2), DD1(2), L_LEN TYPE I. +``` + +#### L_LEN — data · unit 로컬 · L3144-L3144 {#decl-zfir0141-3144-l_len} + +```abap + DATA : MM1(2), DD1(2), L_LEN TYPE I. +``` + +#### L_TOTAL — data · unit 로컬 · L3233-L3233 {#decl-zfir0141-3233-l_total} + +```abap + DATA : L_TOTAL(15), L_LEN TYPE I. +``` + +#### L_LEN — data · unit 로컬 · L3233-L3233 {#decl-zfir0141-3233-l_len} + +```abap + DATA : L_TOTAL(15), L_LEN TYPE I. +``` + +#### L_TOTAL — data · unit 로컬 · L3276-L3276 {#decl-zfir0141-3276-l_total} + +```abap + DATA : L_TOTAL(15), L_LEN TYPE I. +``` + +#### L_LEN — data · unit 로컬 · L3276-L3276 {#decl-zfir0141-3276-l_len} + +```abap + DATA : L_TOTAL(15), L_LEN TYPE I. +``` + +#### MM — data · unit 로컬 · L4613-L4613 {#decl-zfir0141-4613-mm} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I. +``` + +#### DD — data · unit 로컬 · L4613-L4613 {#decl-zfir0141-4613-dd} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I. +``` + +#### L_LEN — data · unit 로컬 · L4613-L4613 {#decl-zfir0141-4613-l_len} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I. +``` + +#### L_DANGA — data · unit 로컬 · L4680-L4680 {#decl-zfir0141-4680-l_danga} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA LIKE BSET-HWSTE. +``` + +#### L_LEN — data · unit 로컬 · L4680-L4680 {#decl-zfir0141-4680-l_len} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA LIKE BSET-HWSTE. +``` + +#### MM — data · unit 로컬 · L4680-L4680 {#decl-zfir0141-4680-mm} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA LIKE BSET-HWSTE. +``` + +#### DD — data · unit 로컬 · L4680-L4680 {#decl-zfir0141-4680-dd} + +```abap + DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA LIKE BSET-HWSTE. +``` + +#### LN_FKIMG — data · unit 로컬 · L4681-L4681 {#decl-zfir0141-4681-ln_fkimg} + +```abap + DATA : LN_FKIMG(8) TYPE N, LN_NETWR(15) TYPE N. +``` + +#### LN_NETWR — data · unit 로컬 · L4681-L4681 {#decl-zfir0141-4681-ln_netwr} + +```abap + DATA : LN_FKIMG(8) TYPE N, LN_NETWR(15) TYPE N. +``` + +#### LN_FKIMG — data · unit 로컬 · L5424-L5424 {#decl-zfir0141-5424-ln_fkimg} + +```abap + DATA : LN_FKIMG(8) TYPE N. +``` + +#### LN_NETWR — data · unit 로컬 · L5425-L5425 {#decl-zfir0141-5425-ln_netwr} + +```abap +DATA: + LN_NETWR(15) TYPE N. +``` + +#### L_DANGA — data · unit 로컬 · L5426-L5426 {#decl-zfir0141-5426-l_danga} + +```abap +DATA: + L_DANGA LIKE BSET-HWSTE. +``` + +### `ZFIR0141F01` (1건) + +#### LV_HWBAS — data · unit 로컬 · L103-L103 {#decl-zfir0141f01-103-lv_hwbas} + +```abap + DATA : LV_HWBAS(12). +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_TOOLBAR3 | METHOD | ZFIR0141 L554-571 | 0 | ALV 그리드 툴바 이벤트 핸들러로 표준 편집·복사·출력 등 불필요한 툴바 버튼을 제거한다. | +| AT SELECTION-SCREEN | EVENT | ZFIR0141 L712-742 | 1 | 선택화면 검증으로 SAPscript 재발행이면 양식(GET_LAYOUT)을 결정하고 전체 리스트와 추가 시트 옵션을 함께 선택하면 E353 오류를 낸다. | +| INITIALIZATION | EVENT | ZFIR0141 L743-772 | 0 | 선택화면 초기값으로 재발행 옵션을 기본 선택하고 취소를 해제하며 회계연도를 현재 연도로 세팅한다. | +| START-OF-SELECTION | EVENT | ZFIR0141 L773-801 | 2 | 호출 프로그램(ZFIR0140/YFIR0601)이 ABAP 메모리로 넘긴 선택 세금계산서·프로그램명·시뮬레이션·통합발행·발행일을 IMPORT 한 뒤 단독 실행이면 목록 표시, 호출 실행이면 재발행·테이블 갱신·User Exit 를 수행한다. | +| AT USER-COMMAND | EVENT | ZFIR0141 L802-871 | 2 | 세금계산서 리스트 화면의 사용자 명령을 처리하여 전체 선택/해제, 뒤로가기 시 테이블 갱신, 저장 시 취소 처리 또는 재발행(REPRINT)을 분기한다. | +| AT LINE-SELECTION | EVENT | ZFIR0141 L872-890 | 1 | 리스트에서 전표번호(AUSGLOP_ITAB-BELNR)를 더블클릭하면 회사코드·전표번호·회계연도 파라미터를 세팅하고 FB03 전표 조회 화면으로 이동한다. | +| GET_TAX_CODE | FORM | ZFIR0141 L891-919 | 1 | 일회성 고객 전표의 BSEC 에서 사업자번호(STCD2 우선, 없으면 주민번호 STCD1)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 세팅한다. | +| CHECK_G_L_INDICATOR | FORM | ZFIR0141 L925-956 | 1 | 출력 대상 전표의 BSEG 에서 특별 G/L 지시자(UMSKZ)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB(SAVE_UMSKZ)에 저장한다. | +| GET_TAXES | FORM | ZFIR0141 L962-1008 | 1 | 세금계산서 출력 항목의 공급가액·세액을 매출부가세 계정(0040605000)의 BSET 라인에서 가져온다. | +| PRINT_SUM_LINE | FORM | ZFIR0141 L1014-1136 | 3 | 세금계산서 합계 라인용으로 원천 유형(SD 전용/FI 전용/SD+FI)에 따라 총금액(FELD3)·공급가액(FELD1A)·세액(FELD1B) 문자열과 공란수(COUNT1)를 만든다. | +| PRINT_ITEM_PURE_SD | FORM | ZFIR0141 L1143-1190 | 2 | 순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(인쇄용). | +| PRINT_ITEM_SD_AND_FI | FORM | ZFIR0141 L1196-1330 | 3 | SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 KRW 편집 금액으로 채우고 품목별 평균 단가를 계산한다(인쇄용). | +| PRINT_LINES | FORM | ZFIR0141 L1341-1438 | 2 | 세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외' 요약 라인으로 만든다(인쇄용). | +| GET_LAYOUT | FORM | ZFIR0141 L1447-1493 | 1 | 회사코드 T001 을 읽고 양식 종류(STA1 일반/세금계산서)·인쇄 옵션(CHK_PRTI)에 따라 T001F 에서 SAPscript 양식명(FORNR)을 결정하며 없으면 E202 오류를 낸다. | +| FILL_CHECK_TABLE | FORM | ZFIR0141 L1502-1553 | 2 | 출력 대상 전표마다 BKPF 로 원천 유형(AWTYP/AWKEY)을 확인하고 SD 빌링 원천이면 CHECK_ITAB 에 등록한 뒤 VBRK 의 빌링 유형·통화·환율 정보를 AUSGLOP_ITAB 에 채운다. | +| GET_BUPLA | FORM | ZFIR0141 L1562-1633 | 1 | 세금계산서 발행 사업장(BUPLA)의 주소와 J_1BBRANCH 사업장 마스터(대표자·업태·업종)를 읽어 BUPLA_ADRESSE 에 세금계산서번호와 함께 추가한다. | +| GET_ADDRESS | FORM | ZFIR0141 L1642-1661 | 1 | 출력 대상 각 고객의 KNA1 을 조회해 일회성 고객 여부(XCPDK)에 따라 마스터 주소 또는 BSEC 일회성 주소를 ADDRESS_ITAB 에 채운다. | +| FILL_TABLES | FORM | ZFIR0141 L1670-1871 | 5 | 출력 대상 세금계산서의 품목 테이블(AUSGLOP_MAT_ITAB)·항목 합계(ALL_ITEMS_ITAB/ALL_ITEMS_FI_ITAB)·특별G/L 라인 정보(CHECK_ITAB, MATZEIL4_ITAB)를 SD 빌링(VBRP)과 FI 전표로부터 채운다. | +| GET_TOTALS | FORM | ZFIR0141 L1880-1916 | 1 | 세금계산서별 FI 세금 합계(HWBAS/HWSTE)와 SD 품목 합계(NETWR/MWSBP)를 비교하여 차이(DELTAN/DELTAM)를 기록하고 SD 합계를 FI 세금 합계로 맞춘다. | +| CHECK_OPTION | FORM | ZFIR0141 L1925-2136 | 4 | 단독 실행 시 선택 조건(세금계산서번호 SAUGBL 또는 발행일 SAUGDT)에 따라 BKPF/BSEG/BSET 에서 발행된 세금계산서 전표를 찾아 AUSGLOP_ITAB 을 구성하고 매출부가세 기준 공급가액·세액을 집계한다. | +| UPDATE_TABLE | FORM | ZFIR0141 L2145-2260 | 5 | 발행(또는 취소)된 세금계산서 번호를 회계전표 헤더 BKPF-BKTXT, 세금항목 BSET-MLDDT, 고객항목 BSEG-XREF3(사업자등록번호)에 반영하여 DB 를 갱신한다. | +| CHECK_TEXT | FORM | ZFIR0141 L2269-2357 | 2 | FI 전표의 항목 텍스트(BSEG-SGTXT)를 '자재,단위,수량' 형식으로 파싱하여 SD 빌링처럼 취급할 품목 정보를 AUSGLOP_MAT_ITAB 에 만들고 원천 유형을 VBRK 로 표시한다. | +| USER_EXIT1 | FORM | ZFIR0141 L2366-2372 | 1 | 세금계산서 취소용 사용자 EXIT FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출해 출력 대상 AUSGLOP_ITAB 을 고객사 로직으로 후처리한다. | +| USER_EXIT2 | FORM | ZFIR0141 L2385-2397 | 1 | 출력 대상 AUSGLOP_ITAB 을 BSID 구조로 옮겨 세금계산서 번호를 BSEG 추가 필드에 저장하는 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출한다. | +| DISPLAY_LIST | FORM | ZFIR0141 L2406-2522 | 3 | 발행된 세금계산서를 번호(AUGBL) 단위로 금액을 합산해 AUSGLOP_ITAB2 로 요약하고 고객명·사업자번호와 함께 체크박스 리스트로 표시한다. | +| REPRINT | FORM | ZFIR0141 L2531-2766 | 7 | 세금계산서 재발행 메인 흐름으로 호출 프로그램에서 넘어온 선택 항목을 AUSGLOP_ITAB 에 옮기고 원천·세금코드·특별G/L·사업장·주소·품목·합계를 순서대로 준비한 뒤 출력 옵션(LIST/FULLLIST/SAP)에 따라 인쇄한다. | +| SET_SELECTION | FORM | ZFIR0141 L2774-2783 | 1 | 리스트의 전체 선택/해제 플래그를 AUSGLOP_ITAB2-CHECK 에 반영하고 화면 라인의 체크박스 값을 MODIFY LINE 으로 갱신한다. | +| SEL_DOCUMENT | FORM | ZFIR0141 L2792-2836 | 2 | 리스트 화면에서 체크된 라인을 읽어 해당 세금계산서 번호(AUGBL)에 속한 AUSGLOP_ITAB/AUSGLOP_ITAB2 항목의 CHECK 플래그를 설정하고 선택 건수를 센다. | +| FILL_ZEROS | FORM | ZFIR0141 L2844-2856 | 1 | 문서번호 등 문자 필드를 우측 정렬한 뒤 앞쪽 공백을 '0'으로 채워 선행 0 형식으로 만든다. | +| USER_EXIT3 | FORM | ZFIR0141 L2865-2893 | 1 | 세금계산서 출력 직전 모든 출력 내부테이블과 옵션을 한국 세금계산서 리스트 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 에 넘겨 고객사 로직으로 가공한다. | +| LIST_OUTPUT | FORM | ZFIR0141 L2902-2937 | 1 | 시뮬레이션이거나 직접 실행이면 세금계산서를 WRITE 리스트로 인쇄(PRINT_INVOICES)하고 인쇄 파라미터를 설정하며, 그 외에는 스마트빌 전송(SMARTBILL_TRANS)으로 분기한다. | +| TRUNCATE_TAXNUM | FORM | ZFIR0141 L2946-2964 | 1 | 세금계산서 번호(AUGBL)를 10자리로 편집해 세금계산서 양식의 번호란 자릿수 칸(TAX_NUM)에 한 자리씩 배치한다. | +| FILL_VAT_NUMBER | FORM | ZFIR0141 L2973-3020 | 2 | 공급자(B)와 공급받는자(C)의 사업자등록번호 10자리를 세금계산서 양식의 사업자등록번호 칸(VAT_BUS/VAT_COM)에 한 자리씩 배치해 WRITE 한다. | +| FILL_AMOUNT | FORM | ZFIR0141 L3029-3134 | 2 | 세금계산서 상단의 공급가액·세액을 자릿수별 칸(AMT_BASE/AMT_TAX)에 한 자리씩 배치하고 발행일·전표수·사업장 주소와 함께 WRITE 한다. | +| WRITE_LINES_FI | FORM | ZFIR0141 L3143-3223 | 2 | 세금계산서 양식의 FI 품목 4줄(MATZEIL1~4)을 월/일·품목·단위·수량·단가·공급가액·세액 컬럼 위치에 맞춰 WRITE 로 인쇄한다. | +| CHECK_RECEIPT | FORM | ZFIR0141 L3232-3266 | 2 | 세금계산서 하단 '영수' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 영수 체크 아이콘과 '이 금액을 영수함' 문구를 표시한다. | +| CHECK_BILLING | FORM | ZFIR0141 L3275-3307 | 2 | 세금계산서 하단 '청구' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 청구 체크 아이콘을 표시한다. | +| PRINT_INVOICES | FORM | ZFIR0141 L3316-3532 | 5 | 선택된 세금계산서(AUGBL)별로 공급자용·공급받는자용 2부를 WRITE 리스트 형식으로 인쇄하며 제목·번호·거래처·합계·품목·영수/청구 구분을 순서대로 출력한다. | +| STRING_CHECK | FORM | ZFIR0141 L3541-3551 | 1 | 세금계산서번호(AUSGLOP_ITAB-AUGBL)가 숫자형인지 FM NUMERIC_CHECK 로 판정해 W_HTYPE 에 담는다. | +| FILL_ITEM_AMOUNT | FORM | ZFIR0141 L3560-3579 | 1 | 품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 KRW 통화 편집으로 세금계산서 품목 라인(MATZEIL)에 옮긴다. | +| PRINT_ITEM_PURE_FI | FORM | ZFIR0141 L3588-3636 | 1 | 순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 KRW 편집된 공급가액·세액으로 채운다. | +| WRITE_PART1-1 | FORM | ZFIR0141 L3645-3764 | 2 | 세금계산서 파트1(공급자 보관용 1번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다. | +| WRITE_PART1-2 | FORM | ZFIR0141 L3773-3896 | 2 | 세금계산서 파트1(공급자/공급받는자 보관용 2번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다. | +| TAX_INVOICE_TITLE_CHANGE | FORM | ZFIR0141 L3905-3961 | 1 | 세금계산서 제목 라인을 부수(COPY 1=공급자용, 2=공급받는자용)와 양식 종류(STA1 일반세금계산서/STA2 세금계산서)에 따라 다른 텍스트로 인쇄하고 시뮬레이션이면 표시를 덧붙인다. | +| KIND_OF_CUSTOMERS | FORM | ZFIR0141 L3970-4020 | 2 | 고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 세금계산서 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1/1-2 로 인쇄한다. | +| DISPLAY_TAX_INVOICE | FORM | ZFIR0141 L4029-4051 | 1 | 출력 옵션을 검증한 뒤 재발행이면 반올림 User Exit KR_USER_EXIT_ROUNDOFF 를 적용하고 대상이 없으면 메시지 I500 을 표시하며 세금계산서 리스트를 표시한다. | +| GET_ADDRESS_OF_CUSTOMER | FORM | ZFIR0141 L4060-4085 | 1 | 고객 마스터 KNA1 의 주소·사업자번호·업태·업종·대표자·주소번호를 ADDRESS_ITAB 에 고객당 1건 추가한다. | +| GET_ADDRESS_OF_CPD_CUSTOMER | FORM | ZFIR0141 L4095-4136 | 1 | 일회성 고객(CPD)의 주소·사업자번호·업태·업종·대표자를 전표의 일회성 고객 데이터 BSEC 에서 읽어 ADDRESS_ITAB 에 추가하고 AUSGLOP_ITAB/CHECK_ITAB 의 STCD·XCPDK 를 갱신한다. | +| SAP_SCRIPT | FORM | ZFIR0141 L4146-4518 | 8 | 세금계산서 SAPscript 출력 절차의 시작 부분으로 인쇄 옵션을 설정하고 OPEN_FORM 으로 인쇄 작업을 연 뒤 고객·사업장 순으로 출력 대상을 정렬한다. | +| FILL_ITEM_TABLES | FORM | ZFIR0141 L4527-4548 | 1 | 현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 인쇄용 품목 라인을 채우는 하위 FORM 을 호출한다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFIR0141 L4557-4603 | 1 | SD 품목의 외화 공급가액·세액을 전표의 환율 정보로 현지통화(KRW)로 환산한다. | +| WRITE_ITEM_SD | FORM | ZFIR0141 L4611-4671 | 2 | SD 빌링 기준 세금계산서 품목 라인 한 줄의 공급가액·세액 부호와 정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다. | +| WRITE_ITEM_FI | FORM | ZFIR0141 L4679-4773 | 3 | FI 전표 기준 세금계산서 품목 라인 한 줄의 단가를 공급가액/수량으로 계산하고 금액 부호·정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다. | +| EXCL_FCODE01 | FORM | ZFIR0141 L4781-4792 | 0 | PF-STATUS 에서 제외할 기능코드(SALL/DSALL/SAVE)를 IT_FCODE 테이블에 담는 유틸리티 FORM 이다. | +| GET_SALES_TAX_SGTXT | FORM | ZFIR0141 L4801-4820 | 1 | 각 출력 대상 전표의 매출세(MWART='A') BSEG 라인 항목 텍스트(SGTXT)를 읽어 AUSGLOP_ITAB-SGTXT 에 저장한다. | +| SMARTBILL_TRANS | FORM | ZFIR0141 L4829-5144 | 10 | 선택된 세금계산서를 스마트빌 전송용 헤더(GT_ZSBBSEG)·품목(GT_ZSBISSUE) 데이터로 변환하고 사업자단위과세 적용 시 공급자 정보를 대표 사업장으로 바꾼 뒤 이메일 확인 팝업(화면 100)을 띄운다. | +| KIND_OF_CUSTOMERS_SMARTBILL | FORM | ZFIR0141 L5153-5208 | 2 | 고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 스마트빌 헤더 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1_SMARTBILL 로 채운다. | +| WRITE_PART1-1_SMARTBILL | FORM | ZFIR0141 L5217-5284 | 3 | 전자세금계산서 헤더(GT_ZSBBSEG)의 공급자(사업장)·공급받는자(고객) 정보(주소·사업자번호·상호·대표자·업종·업태·담당자 이메일/전화)를 채운다. | +| PRINT_SUM_LINE_SMARTBILL | FORM | ZFIR0141 L5293-5355 | 1 | 스마트빌 전송용 합계 라인을 만들기 위해 CHECK_ITAB/ALL_ITEMS_ITAB 를 돌며 SD·FI 원천 구분(AWTYP)에 따라 총금액·총공급가액·총세액을 GT_ZSBBSEG 에 채운다. | +| FILL_ITEM_TABLES_SMARTBILL | FORM | ZFIR0141 L5364-5386 | 1 | 현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 스마트빌 품목 라인을 채우는 하위 FORM 을 호출한다. | +| WRITE_ITEM_SD_SMARTBILL | FORM | ZFIR0141 L5394-5414 | 1 | SD 빌링 기준 세금계산서 품목 라인(MATZEIL)을 스마트빌 품목 테이블 GT_ZSBISSUE 에 일련번호·품명·규격·수량·단가·공급가액·세액으로 적재한다. | +| WRITE_ITEM_FI_SMARTBILL | FORM | ZFIR0141 L5422-5464 | 2 | FI 전표 기준 세금계산서 품목 라인(MATZEIL)의 단가를 공급가액/수량으로 계산한 뒤 스마트빌 품목 테이블 GT_ZSBISSUE 에 적재한다. | +| PRINT_LINES_SMARTBILL | FORM | ZFIR0141 L5473-5563 | 2 | 세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외 N건' 요약 라인으로 만든다(스마트빌용). | +| FILL_ITEM_AMOUNT_SMARTBILL | FORM | ZFIR0141 L5572-5592 | 1 | 품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 세금계산서 품목 라인(MATZEIL)에 옮긴다. | +| PRINT_ITEM_PURE_SD_SMARTBILL | FORM | ZFIR0141 L5601-5648 | 2 | 순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(스마트빌용). | +| PRINT_ITEM_SD_AND_FI_SMARTBILL | FORM | ZFIR0141 L5657-5781 | 3 | SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 채우고 품목별 평균 단가를 계산한다(스마트빌용). | +| PRINT_ITEM_PURE_FI_SMARTBILL | FORM | ZFIR0141 L5790-5841 | 1 | 순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 공급가액·세액으로 채운다(스마트빌용). | +| FIELDCAT_MAKE | FORM | ZFIR0141F01 L12-42 | 0 | ALV 필드카탈로그(I_FIELD) 한 컬럼을 파라미터로 받아 추가하는 유틸리티 FORM 으로, ZBYRE 필드는 소문자 허용으로 설정한다. | +| TRANSMIT_TO_SMARTBILL | FORM | ZFIR0141F01 L49-55 | 1 | 매출 세금계산서를 스마트빌로 전송하는 상위 흐름으로 전송 데이터 생성 → Z_SB_DTI_ISSUE 전송 → 결과 메시지 표시를 순서대로 수행한다. | +| MAKE_DATA_TO_TRANSMIT | FORM | ZFIR0141F01 L62-69 | 1 | 스마트빌 전송용 헤더·품목·결제·전표번호 데이터를 순서대로 생성하는 PERFORM 디스패치 FORM 이다. | +| MAKE_ZSB_HEADER | FORM | ZFIR0141F01 L76-94 | 1 | 스마트빌 전송 헤더 테이블 ZSB_HEADER 를 GT_ZSBBSEG 로부터 생성하며 정발행(ZSIGN='S')·매출(AR) 구분을 세팅한다. | +| CALCULATE_ZNCNT | FORM | ZFIR0141F01 L101-120 | 1 | 세금계산서 공급가액(P_HWBAS)을 12자리 통화 형식으로 편집한 뒤 앞쪽 공백 수를 세어 세금계산서 공란수(ZSB_HEADER-ZNCNT)를 계산한다. | +| MAKE_ZSB_ITEM | FORM | ZFIR0141F01 L127-142 | 1 | 스마트빌 전송 품목 테이블 ZSB_ITEM 을 전표 정보(GT_ZSBBSEG 첫 행)와 품목 정보(GT_ZSBISSUE)를 합쳐 AR 구분으로 생성한다. | +| MAKE_ZSB_PAYMENT | FORM | ZFIR0141F01 L149-171 | 1 | 스마트빌 전송 결제정보 테이블 ZSB_PAYMENT 를 세금계산서별로 현금(10)·수표(20)·어음(2AA)·외상(30) 4개 결제수단 코드 행으로 생성한다. | +| MAKE_ZSB_BELNR | FORM | ZFIR0141F01 L178-191 | 1 | 스마트빌 전송용 전표번호 테이블 ZSB_BELNR 을 GT_ZSBBSEG 로부터 만들고 AR(매출) 구분을 세팅한다. | +| TRANSMIT_DTI_TO_SB | FORM | ZFIR0141F01 L197-216 | 1 | 전자세금계산서 헤더·품목·결제·전표번호 테이블을 스마트빌 발행 FM Z_SB_DTI_ISSUE 로 전송하고 리턴 코드를 받는다. | +| DISPLAY_ERROR_MSG | FORM | ZFIR0141F01 L223-245 | 1 | 스마트빌 전송 리턴 코드에 따라 정상 발행·네트워크 장애·통신 에러·데이터 검증 오류 메시지를 표시하고 그 외 코드는 Z_SB_RETURN_MESSAGE 로 메시지를 출력한다. | +| SAVE_RETURN_CODE_TO_AUSGLOP | FORM | ZFIR0141F01 L251-269 | 1 | 스마트빌 전송 리턴 코드가 성공('Y')이면 SEL_AUSGLOP_ITAB 과 AUSGLOP_ITAB 의 RESULT 필드를 'Y' 로 표시한다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0141I01 L9-29 | 1 | 화면 0100의 사용자 명령(PAI)을 처리하여 &NT1 시 ALV 그리드(GRID3)의 변경 데이터를 검증한 뒤 화면을 종료하고 EXIT 시 화면을 닫는 플럼빙 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0141O01 L9-13 | 0 | | +| ALV_WRITE_0100 OUTPUT | MODULE | ZFIR0141O01 L19-75 | 0 | | diff --git a/wiki/programs/ZFIR0160.md b/wiki/programs/ZFIR0160.md new file mode 100644 index 0000000..f0b3827 --- /dev/null +++ b/wiki/programs/ZFIR0160.md @@ -0,0 +1,1937 @@ +--- +type: abap-program +title: "ZFIR0160 — [FI] 권한관리" +description: "FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다." +resource: "abap://ZFIR0160" +tags: ["권한관리", "마스터관리", "설정", "FI", "권한저장", "권한테이블", "사용자ID", "일괄저장", "롤백", "저장건수", "저장 확인", "변경 여부", "권한 테이블 저장", "화면 종료", "오류 체크", "프로그램 종료", "기능코드", "변경 모드", "조회 모드", "입력 가능 전환"] +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: ["USER_ADDRP", "ZFIT0160"] +x-tables-write: ["GT_MAIN", "ZFIT0160"] +x-calls: ["HELP_VALUES_GET_NO_DD_NAME", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "REUSE_ALV_VARIANT_DEFAULT_GET", "REUSE_ALV_VARIANT_F4", "SAPGUI_PROGRESS_INDICATOR"] +x-code-hash: "dcd5669a8a7534a78705c2d3ceaaff129923cbd2cd1a348ab5c57d65b27ca11c" +x-unit-count: 62 +x-chunk-count: 26 +x-declaration-count: 75 +--- + +## 업무 목적 + +FI 커스텀 프로그램들이 공통으로 참조하는 권한 테이블 ZFIT0160 을 유지보수하는 관리 화면이다. 사용자별로 접근 가능한 회사코드·사업장 등을 편집 가능한 ALV 그리드에서 등록·수정·복사·삭제하고 저장한다. ZFIT0160 은 이 27본 중 18본이 읽는 테이블로, AUTHORITY_BUKRS(공용 인클루드)가 회사코드 권한을 판정할 때 참조한다. + +## 주 흐름 + +1. 초기 변형을 불러오고 선택화면을 준비한다 (SET_INIT → GET_INIT_VARIANT → GET_VARIANT) +2. ZFIT0160 권한 내역과 사용자 정보(USER_ADDRP)를 읽어 그리드 데이터를 만든다 (SET_DATA) +3. 셀 입력 가능 여부와 행 스타일을 설정한다 (SET_ITAB_STYLE → SET_LINE_CELLTAB) +4. 편집 가능한 ALV 를 화면 0100 에 띄운다 (SET_FIELD01 → RUN_DISPLAY_ALV) +5. 행 추가·복사·삭제와 셀 변경을 처리하고 사용자 ID 에 F4 를 제공한다 (SET_COPY_ROWS / SET_DELETE_ROWS / DATA_CHANGED / F4_UNAME_PROCESS) +6. 유효성(기간 중복 등)을 검증한다 (CHK_ZINOUT → CHK_DATA) +7. 확인 팝업 후 ZFIT0160 에 저장한다 (POPUP_TO_CONFIRM → SET_SAVE → ZFIT0160_PROCESS) + +## 핵심 내부테이블 + +- `GT_MAIN` — 권한 내역 편집 그리드 (채움: SET_DATA / 소비: RUN_DISPLAY_ALV, SET_SAVE) + +## 테이블 / 외부 호출 + +- read: USER_ADDRP, ZFIT0160 +- write: GT_MAIN, ZFIT0160 +- 외부 호출: HELP_VALUES_GET_NO_DD_NAME, POPUP_TO_CONFIRM, POPUP_TO_CONFIRM_STEP, REUSE_ALV_VARIANT_DEFAULT_GET, REUSE_ALV_VARIANT_F4, SAPGUI_PROGRESS_INDICATOR + +## 로직 조각 (26건 / unit 22개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### FORM GET_INIT_VARIANT — `ZFIR0160F01` L34-L53 (20줄) + +*변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다.* + +> 이 unit 의 조각 1개가 12/20줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] REUSE_ALV_VARIANT_DEFAULT_GET(I_SAVE='A') 으로 리포트·사용자·핸들에 해당하는 기본 ALV 변형을 GX_VARIANT 에 읽는다(결과 반영은 주석 처리). + +```abap + 40| GX_VARIANT = GS_VARIANT. + 41| + 42| CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' + 43| EXPORTING + 44| I_SAVE = 'A' + 45| CHANGING + 46| CS_VARIANT = GX_VARIANT + 47| EXCEPTIONS + 48| NOT_FOUND = 2. + 49| IF SY-SUBRC = 0. + 50| **** PA_LAYOU = GX_VARIANT-VARIANT. + 51| ENDIF. +``` + +- **EN**: Retrieves the user's default ALV layout variant via REUSE_ALV_VARIANT_DEFAULT_GET. +- 호출(파서): REUSE_ALV_VARIANT_DEFAULT_GET +- SAP 객체: REUSE_ALV_VARIANT_DEFAULT_GET +- 업무 키워드: 기본 변형, ALV 레이아웃, 변형 조회 +- English: Default Variant, ALV Layout +- 정의부(복사 시 함께 필요): [`GX_VARIANT`](#decl-zfir0160t01-9-gx_variant), [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L40-L51` · confidence 0.8 · `ZFIR0160#ZFIR0160F01#FORM#GET_INIT_VARIANT#C1` + +### FORM SET_DATA — `ZFIR0160F01` L91-L109 (19줄) + +*오류가 없을 때 진행 메시지를 띄우고 SELECT_PROCESS(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 순서대로 수행해 그리드 데이터를 준비하는 FORM이다.* + +> 이 unit 의 조각 1개가 11/19줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GV_ERR 이 없을 때 GT_MAIN 을 비우고 진행 인디케이터(RUN_MSG_PROC)를 표시한 뒤 SELECT_PROCESS 로 ZFIT0160 을 읽고 MODIFY_PROCESS 로 사용자 성명을 채운다. + +```abap + 96| CHECK GV_ERR IS INITIAL. + 97| + 98| CLEAR: GT_MAIN, GT_MAIN[], GV_ERR. + 99| + 100| * INDICATOR + 101| PERFORM RUN_MSG_PROC USING '집계 데이터 조회 중...'. + 102| + 103| PERFORM SELECT_PROCESS. + 104| + 105| + 106| PERFORM MODIFY_PROCESS. +``` + +- **EN**: When no error is flagged, clear GT_MAIN, show a progress indicator, load ZFIT0160 via SELECT_PROCESS and enrich user names via MODIFY_PROCESS. +- 호출(파서): RUN_MSG_PROC, SELECT_PROCESS, MODIFY_PROCESS +- SAP 객체: ZFIT0160 +- 업무 키워드: 데이터 조회, 진행 표시, 권한 목록 준비 +- English: data load, progress indicator +- 정의부(복사 시 함께 필요): [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`GT_MAIN`](#decl-zfir0160top-19-gt_main) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L96-L106` · confidence 0.8 · `ZFIR0160#ZFIR0160F01#FORM#SET_DATA#C1` + +### FORM ZFIT0160_PROCESS — `ZFIR0160F01` L243-L256 (14줄) + +*권한 테이블 ZFIT0160 전체를 읽어 그리드 내부테이블 GT_MAIN 에 적재하는 FORM이다.* + +> 이 unit 의 조각 1개가 3/14줄(21%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 권한 관리 테이블 ZFIT0160 의 전 레코드를 SELECT 하여 편집 그리드용 GT_MAIN 에 적재한다. + +```abap + 250| SELECT * + 251| INTO CORRESPONDING FIELDS OF TABLE GT_MAIN + 252| FROM ZFIT0160. +``` + +- **EN**: Select all records from authorization table ZFIT0160 into GT_MAIN for the editable grid. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160 +- 업무 키워드: 권한 테이블, 사용자 권한 조회, 전체 조회 +- English: authorization table, SELECT +- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L250-L252` · confidence 0.95 · `ZFIR0160#ZFIR0160F01#FORM#ZFIT0160_PROCESS#C1` + +### FORM MODIFY_PROCESS — `ZFIR0160F01` L174-L195 (22줄) + +*GT_MAIN 의 각 사용자 ID 에 대해 공용 풀(ZTR_POOL)의 USER_ADDRP_PROCESS 로 성명을 조회해 NAME 컬럼을 채우는 FORM이다.* + +> 이 unit 의 조각 1개가 15/22줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GT_MAIN 을 USERID 로 정렬한 뒤 각 행마다 ZTR_POOL 의 USER_ADDRP_PROCESS 를 호출해 사용자 성명(USER_ADDRP)을 구해 NAME 필드를 MODIFY 한다. + +```abap + 179| SORT GT_MAIN BY USERID. + 180| + 181| + 182| LOOP AT GT_MAIN. + 183| + 184| L_TABIX = SY-TABIX. + 185| + 186| PERFORM USER_ADDRP_PROCESS(ZTR_POOL) USING GT_MAIN-USERID + 187| CHANGING GT_MAIN-NAME. + 188| + 189| + 190| MODIFY GT_MAIN INDEX L_TABIX TRANSPORTING NAME. + 191| CLEAR GT_MAIN. + 192| + 193| ENDLOOP. +``` + +- **EN**: Sort GT_MAIN by USERID and for each row derive the user's name from USER_ADDRP via USER_ADDRP_PROCESS (ZTR_POOL), updating the NAME field. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): USER_ADDRP_PROCESS +- SAP 객체: USER_ADDRP, ZTR_POOL +- 업무 키워드: 사용자 성명, 사용자 마스터, 이름 보완, 권한 목록 +- English: user name, USER_ADDRP, enrichment +- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`L_TABIX`](#decl-zfir0160f01-177-l_tabix) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L179-L193` · confidence 0.85 · `ZFIR0160#ZFIR0160F01#FORM#MODIFY_PROCESS#C1` + +### FORM DATA_CHANGED — `ZFIR0160F02` L939-L1028 (90줄) + +*편집 그리드 셀 변경(DATA_CHANGED) 시 변경값을 GT_MAIN 에 반영하고 ZINOUT 값을 검증해 오류면 프로토콜에 기록, 정상이면 셀을 갱신하는 FORM이다.* + +> 이 unit 의 조각 1개가 65/90줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 변경된 각 셀(MT_GOOD_CELLS)에 대해 GET_CELL_VALUE 로 값을 읽어 GT_MAIN 해당 필드에 MODIFY 하고 변경 플래그(GV_CHK)를 세우며, ZINOUT 필드는 CHK_ZINOUT 으로 검증해 오류면 ADD_PROTOCAL_ENTRY 로 오류 프로토콜에 기록, 정상이면 MODIFY_CELL 로 셀 값을 확정한다. + +```abap + 958| LOOP AT P_CHANGED->MT_GOOD_CELLS INTO LS_MOD_CELLS. + 959| CLEAR: GV_ERR, GS_MSG. + 960| + 961| ASSIGN COMPONENT LS_MOD_CELLS-FIELDNAME + 962| OF STRUCTURE GT_MAIN TO . + 963| + 964| * 입력된 셀의 값 얻기 + 965| + 966| READ TABLE GT_MAIN INDEX LS_MOD_CELLS-ROW_ID. + 967| + 968| + 969| CALL METHOD P_CHANGED->GET_CELL_VALUE + 970| EXPORTING + 971| I_ROW_ID = LS_MOD_CELLS-ROW_ID + 972| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME + 973| I_TABIX = LS_MOD_CELLS-TABIX + 974| IMPORTING + 975| E_VALUE = . + 976| + 977| GV_CHK = 'X'. " 변경 CHECK + 978| + 979| * GT_MAIN-ZINOUT = . + 980| + 981| MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID + 982| TRANSPORTING (LS_MOD_CELLS-FIELDNAME). + 983| + 984| ** 입력된 값 CHECK + 985| IF LS_MOD_CELLS-FIELDNAME = 'ZINOUT'. + 986| PERFORM CHK_ZINOUT USING LS_MOD_CELLS-FIELDNAME + 987| LS_MOD_CELLS-ROW_ID + 988| LS_MOD_CELLS-VALUE + 989| CHANGING GV_ERR + 990| GS_MSG. + 991| ENDIF. + 992| + 993| + 994| IF GV_ERR IS NOT INITIAL. + 995| PERFORM ADD_PROTOCAL_ENTRY USING P_CHANGED + 996| LS_MOD_CELLS + 997| GS_MSG. + 998| ELSE. + 999| + 1000| * UPDATE VALUE + 1001| + 1002| CALL METHOD P_CHANGED->MODIFY_CELL + 1003| EXPORTING + 1004| I_ROW_ID = LS_MOD_CELLS-ROW_ID + 1005| I_FIELDNAME = LS_MOD_CELLS-FIELDNAME + 1006| I_VALUE = LS_MOD_CELLS-VALUE. + 1007| + 1008| + 1009| + 1010| * IF LS_MOD_CELLS-FIELDNAME = 'BANKL'. + 1011| * + 1012| * PERFORM BNKA_PROCESS(ZTR_POOL) USING GT_MAIN-BANKL + 1013| * CHANGING GT_MAIN-BANKA. + 1014| * + 1015| * MODIFY GT_MAIN INDEX LS_MOD_CELLS-ROW_ID TRANSPORTING + 1016| * BANKA. + 1017| * ENDIF. + 1018| + 1019| + 1020| + 1021| ENDIF. + 1022| ENDLOOP. +``` + +- **EN**: For each changed cell read the new value via CL_ALV_CHANGED_DATA_PROTOCOL->GET_CELL_VALUE, update GT_MAIN, validate ZINOUT with CHK_ZINOUT, log errors to the protocol or confirm the cell with MODIFY_CELL. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): P_CHANGED->MT_GOOD_CELLS, P_CHANGED->GET_CELL_VALUE, CHK_ZINOUT, ADD_PROTOCAL_ENTRY, P_CHANGED->MODIFY_CELL +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, CL_GUI_ALV_GRID +- 업무 키워드: 셀 변경, 변경 플래그, 입출구분자 검증, 오류 프로토콜, 그리드 반영 +- English: data changed, cell validation, change protocol +- 정의부(복사 시 함께 필요): [`LS_MOD_CELLS`](#decl-zfir0160f02-942-ls_mod_cells), [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`GS_MSG`](#decl-zfir0160t01-39-gs_msg), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [``](#decl-zfir0160f02-946--fs_field-), [`GV_CHK`](#decl-zfir0160t01-42-gv_chk) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L958-L1022` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#DATA_CHANGED#C1` + +### FORM CHK_ZINOUT — `ZFIR0160F02` L1042-L1064 (23줄) + +*입출구분자(ZINOUT) 값이 허용 코드(11,12,13,14,51~55,57) 중 하나인지 검증하고 아니면 오류 플래그와 메시지를 돌려주는 FORM이다.* + +> 이 unit 의 조각 1개가 15/23줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 입력된 입출구분자 값이 허용 목록(11,13,51,12,52,14,57,53,54,55)에 없으면 P_ERR='X' 와 '입출구분자 오류입니다' 메시지를 설정한다. + +```abap + 1048| IF P_VALUE = '11' OR + 1049| P_VALUE = '13' OR + 1050| P_VALUE = '51' OR + 1051| P_VALUE = '12' OR + 1052| P_VALUE = '52' OR + 1053| P_VALUE = '14' OR + 1054| P_VALUE = '57' OR + 1055| P_VALUE = '53' OR + 1056| P_VALUE = '54' OR + 1057| P_VALUE = '55'. + 1058| + 1059| ELSE. + 1060| P_ERR = 'X'. + 1061| P_MSG-MSGV1 = '입출구분자 오류입니다'. + 1062| ENDIF. +``` + +- **EN**: Validate that the in/out indicator value is one of the allowed codes; otherwise set the error flag and message. +- 업무 키워드: 입출구분자, 유효성 검증, 허용 코드, 오류 메시지 +- English: validation, indicator check +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1048-L1062` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#CHK_ZINOUT#C1` + +### FORM ADD_PROTOCAL_ENTRY — `ZFIR0160F02` L1076-L1096 (21줄) + +*편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다.* + +> 이 unit 의 조각 1개가 11/21줄(52%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 검증 실패 셀(필드명·행)에 대해 FIMSG 메시지 내용을 ADD_PROTOCOL_ENTRY 로 등록해 ALV 오류 프로토콜에 표시한다. + +```abap + 1084| CALL METHOD RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY + 1085| EXPORTING + 1086| I_MSGID = '00' + 1087| I_MSGTY = 'E' + 1088| I_MSGNO = PS_MESSAGE-MSGNO + 1089| I_MSGV1 = PS_MESSAGE-MSGV1 + 1090| I_MSGV2 = PS_MESSAGE-MSGV2 + 1091| I_MSGV3 = PS_MESSAGE-MSGV3 + 1092| I_MSGV4 = PS_MESSAGE-MSGV4 + 1093| I_FIELDNAME = RS_MOD_CELLS-FIELDNAME + 1094| I_ROW_ID = RS_MOD_CELLS-ROW_ID. +``` + +- **EN**: Adds an error message for the failed cell to the ALV changed-data protocol via ADD_PROTOCOL_ENTRY. +- 호출(파서): RR_DATA_CHANGED->ADD_PROTOCOL_ENTRY +- SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL, ADD_PROTOCOL_ENTRY +- 업무 키워드: 오류 프로토콜, 셀 검증 오류, 메시지 +- English: Error Protocol, Data Changed, ALV Grid +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1084-L1094` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#ADD_PROTOCAL_ENTRY#C1` + +### FORM F4_UNAME_PROCESS — `ZFIR0160F02` L1314-L1417 (104줄) + +*USERID 셀의 F4 도움말로 USER_ADDRP 사용자 목록을 HELP_VALUES_GET_NO_DD_NAME 팝업으로 보여주고 선택값과 성명을 GT_MAIN 행에 반영하는 FORM이다.* + +> 이 unit 의 조각 3개가 56/104줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] USER_ADDRP 뷰에서 사용자 ID(BNAME)와 이름(NAME_TEXT)을 전부 읽어 F4 목록용 IT_VALUE 로 옮기고, 없으면 '해당 자료가 없습니다' 메시지로 종료한다. + +```abap + 1355| SELECT BNAME NAME_TEXT INTO TABLE IT_USER + 1356| FROM USER_ADDRP. + 1357| + 1358| LOOP AT IT_USER. + 1359| IT_VALUE-TEXT1 = IT_USER-BNAME. + 1360| IT_VALUE-TEXT2 = IT_USER-NAME_TEXT. + 1361| APPEND IT_VALUE. + 1362| CLEAR IT_VALUE. + 1363| ENDLOOP. + 1364| + 1365| * 검색된 자료의 존재 여부. + 1366| IF SY-SUBRC <> 0. + 1367| MESSAGE S000 WITH '해당 자료가 없습니다.'. + 1368| EXIT. + 1369| ENDIF. +``` + +- **EN**: Read user IDs and names from USER_ADDRP into the F4 hit list table and exit with a message if nothing is found. +- 테이블(파서): read [USER_ADDRP](/tables/USER_ADDRP.md) / write - +- SAP 객체: USER_ADDRP +- 업무 키워드: 사용자 목록, F4 도움말, 사용자 마스터 조회 +- English: value help, USER_ADDRP, user master +- 정의부(복사 시 함께 필요): [`IT_USER`](#decl-zfir0160f02-1336-it_user), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1355-L1369` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C1` + +#### [fm_call] 히트리스트 컬럼(USR21-BNAME 선택필드, ADRP-NAME_TEXT)을 정의하고 HELP_VALUES_GET_NO_DD_NAME 을 호출해 사용자 선택 팝업을 띄워 선택 인덱스와 값을 받는다. + +```abap + 1373| IT_FIELDS-TABNAME = 'USR21'. + 1374| IT_FIELDS-FIELDNAME = 'BNAME'. + 1375| IT_FIELDS-SELECTFLAG = 'X'. "실제 선택되는 값에 'X' 표시 + 1376| APPEND IT_FIELDS. + 1377| + 1378| + 1379| + 1380| IT_FIELDS-TABNAME = 'ADRP'. + 1381| IT_FIELDS-FIELDNAME = 'NAME_TEXT'. + 1382| IT_FIELDS-SELECTFLAG = ' '. + 1383| APPEND IT_FIELDS. + 1384| + 1385| + 1386| * F4기능 부분 + 1387| CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME' + 1388| EXPORTING + 1389| SELECTFIELD = SELECTFIELD + 1390| IMPORTING + 1391| IND = LD_TABIX + 1392| SELECT_VALUE = SELECT_VALUE + 1393| TABLES + 1394| FIELDS = IT_FIELDS + 1395| FULL_TABLE = IT_VALUE + 1396| EXCEPTIONS + 1397| FULL_TABLE_EMPTY = 1 + 1398| NO_TABLESTRUCTURE_GIVEN = 2 + 1399| NO_TABLEFIELDS_IN_DICTIONARY = 3 + 1400| MORE_THEN_ONE_SELECTFIELD = 4 + 1401| NO_SELECTFIELD = 5 + 1402| OTHERS = 6. +``` + +- **EN**: Define hit-list columns (USR21-BNAME, ADRP-NAME_TEXT) and call HELP_VALUES_GET_NO_DD_NAME to show the user selection popup and return the chosen value. +- 호출(파서): HELP_VALUES_GET_NO_DD_NAME +- SAP 객체: HELP_VALUES_GET_NO_DD_NAME, USR21, ADRP +- 업무 키워드: F4 팝업, 히트리스트, 사용자 선택 +- English: value help popup, hit list +- 정의부(복사 시 함께 필요): [`IT_FIELDS`](#decl-zfir0160f02-1328-it_fields), [`SELECTFIELD`](#decl-zfir0160f02-1327-selectfield), [`LD_TABIX`](#decl-zfir0160f02-1330-ld_tabix), [`SELECT_VALUE`](#decl-zfir0160f02-1329-select_value), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1373-L1402` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C2` + +#### [control_flow] 선택된 사용자 ID 를 GT_MAIN-USERID 에 넣고 USER_ADDRP_PROCESS(ZTR_POOL)로 성명을 구해 해당 행의 USERID·NAME 을 MODIFY 한 뒤 그리드를 갱신한다. + +```abap + 1405| CHECK NOT LD_TABIX IS INITIAL. + 1406| READ TABLE IT_VALUE INDEX LD_TABIX. + 1407| GT_MAIN-USERID = SELECT_VALUE. + 1408| + 1409| + 1410| PERFORM USER_ADDRP_PROCESS(ZTR_POOL) USING GT_MAIN-USERID + 1411| CHANGING GT_MAIN-NAME. + 1412| + 1413| + 1414| MODIFY GT_MAIN INDEX ES_ROW_NO-ROW_ID TRANSPORTING USERID NAME. + 1415| PERFORM SET_REFRESH. +``` + +- **EN**: Apply the selected user ID to the grid row, derive the name via USER_ADDRP_PROCESS (ZTR_POOL), modify USERID/NAME and refresh the grid. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): USER_ADDRP_PROCESS, SET_REFRESH +- SAP 객체: ZTR_POOL, USER_ADDRP +- 업무 키워드: 선택값 반영, 사용자 성명, 그리드 갱신 +- English: selected value, user name, ALV refresh +- 정의부(복사 시 함께 필요): [`LD_TABIX`](#decl-zfir0160f02-1330-ld_tabix), [`IT_VALUE`](#decl-zfir0160f02-1341-it_value), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`SELECT_VALUE`](#decl-zfir0160f02-1329-select_value) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1405-L1415` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#F4_UNAME_PROCESS#C3` + +### FORM USER_COMMAND — `ZFIR0160F02` L746-L788 (43줄) + +*ALV 툴바 기능코드(INSE/DELE/COPY/SAVE)별로 행 삽입·삭제·복사·저장 처리를 분기하는 USER_COMMAND 핸들러이다.* + +> 이 unit 의 조각 1개가 39/43줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] INSE 는 빈 행 추가 후 편집 스타일 설정, DELE 는 확인 팝업 후 SET_DELETE_ROWS, COPY 는 SET_COPY_ROWS, SAVE 는 확인 팝업 후 CHK_DATA 검증→SET_SAVE(ZFIT0160 저장)→재조회(SET_DATA)→그리드 갱신 순으로 분기한다. + +```abap + 748| CASE P_UCOMM. + 749| + 750| * WHEN 'CHAN'. + 751| * PERFORM SET_CHANGE. + 752| + 753| WHEN 'INSE'. + 754| CLEAR GT_MAIN. + 755| APPEND GT_MAIN. + 756| PERFORM SET_LINE_ITAB_STYLE USING P_UCOMM. + 757| + 758| + 759| PERFORM SET_REFRESH. + 760| + 761| + 762| WHEN 'DELE'. + 763| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. + 764| CHECK P_ANSWER = 'J'. + 765| + 766| PERFORM SET_DELETE_ROWS. + 767| PERFORM SET_REFRESH. + 768| + 769| + 770| WHEN 'COPY'. + 771| PERFORM SET_COPY_ROWS. + 772| PERFORM SET_REFRESH. + 773| + 774| + 775| WHEN 'SAVE'. + 776| PERFORM POPUP_TO_CONFIRM USING P_ANSWER P_UCOMM. + 777| CHECK P_ANSWER = 'J'. + 778| + 779| PERFORM CHK_DATA. + 780| PERFORM SET_SAVE. + 781| + 782| PERFORM SET_DATA. + 783| PERFORM SET_ITAB_STYLE. " CHANGE + 784| PERFORM SET_REFRESH. + 785| + 786| ENDCASE. +``` + +- **EN**: Dispatch toolbar function codes: insert a blank row, delete/copy selected rows, or after confirmation validate and save to ZFIT0160 then reload and refresh the grid. +- 호출(파서): SET_LINE_ITAB_STYLE, SET_REFRESH, POPUP_TO_CONFIRM, SET_DELETE_ROWS, SET_REFRESH, SET_COPY_ROWS, SET_REFRESH, POPUP_TO_CONFIRM, CHK_DATA, SET_SAVE, SET_DATA, SET_ITAB_STYLE, SET_REFRESH +- SAP 객체: ZFIT0160 +- 업무 키워드: 행 삽입, 행 삭제, 행 복사, 저장, 확인 팝업, 권한 관리 +- English: user command, toolbar, save, ALV refresh +- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`P_ANSWER`](#decl-zfir0160top-35-p_answer) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L748-L786` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#USER_COMMAND#C1` + +### FORM SET_LINE_ITAB_STYLE — `ZFIR0160F02` L54-L88 (35줄) + +*현재 GT_MAIN 행 하나에 SET_LINE_CELLTAB 으로 신규 행 셀 스타일을 계산해 CELLTAB 에 반영하는 FORM이다.* + +> 이 unit 의 조각 1개가 22/35줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 현재 행 인덱스를 저장하고 P_UCOMM(INSE/COPY) 기준으로 SET_LINE_CELLTAB 을 호출해 셀 스타일을 만든 뒤 GT_MAIN-CELLTAB 에 삽입하고 MODIFY 한다. + +```abap + 63| LV_TABIX = SY-TABIX. + 64| + 65| CLEAR: GT_MAIN-CELLTAB, + 66| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM. + 67| + 68| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN. + 69| + 70| * 개발번호 + 71| + 72| + 73| IF LV_UCOMM IS INITIAL. + 74| LV_UCOMM = P_UCOMM. + 75| ENDIF. + 76| + 77| * SETTING COLOR + 78| + 79| PERFORM SET_LINE_CELLTAB USING LS_MAIN + 80| LV_UCOMM + 81| CHANGING LT_CELLTAB. + 82| + 83| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB. + 84| MODIFY GT_MAIN INDEX LV_TABIX. +``` + +- **EN**: Build per-cell edit styles for the current GT_MAIN row via SET_LINE_CELLTAB and store them in the row's CELLTAB. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): SET_LINE_CELLTAB +- 업무 키워드: 행 스타일, 신규 행, 셀 편집 상태 +- English: cell style, editable ALV +- 정의부(복사 시 함께 필요): [`LV_TABIX`](#decl-zfir0160f02-59-lv_tabix), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LS_MAIN`](#decl-zfir0160f02-56-ls_main), [`LT_CELLTAB`](#decl-zfir0160f02-58-lt_celltab), [`LV_UCOMM`](#decl-zfir0160f02-61-lv_ucomm) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L63-L84` · confidence 0.8 · `ZFIR0160#ZFIR0160F02#FORM#SET_LINE_ITAB_STYLE#C1` + +### FORM SET_LINE_CELLTAB — `ZFIR0160F02` L136-L172 (37줄) + +*행 삽입/복사(INSE/COPY)된 신규 행에 대해 USERID·ZFIR0090 컬럼만 편집 가능하도록 셀 스타일(LVC_T_STYL)을 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 25/37줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 신규 행(INSE/COPY)에 대해 필드카탈로그를 순회하며 USERID 와 ZFIR0090 만 MC_STYLE_ENABLED, 나머지는 MC_STYLE_DISABLED 로 셀 스타일을 설정한다. + +```abap + 146| LOOP AT GT_FCAT1 INTO GS_FCAT. + 147| CLEAR LS_CELLTAB. + 148| + 149| CASE P_UCOMM. + 150| + 151| WHEN 'INSE' OR 'COPY'. + 152| IF GS_FCAT-FIELDNAME = 'USERID' OR + 153| GS_FCAT-FIELDNAME = 'ZFIR0090'. + 154| + 155| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. + 156| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 157| LS_CELLTAB-STYLE = LV_MODE. + 158| + 159| ELSE. + 160| + 161| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. + 162| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 163| LS_CELLTAB-STYLE = LV_MODE. + 164| + 165| ENDIF. + 166| + 167| ENDCASE. + 168| + 169| INSERT LS_CELLTAB INTO TABLE P_CELLTAB. + 170| ENDLOOP. +``` + +- **EN**: For inserted/copied rows, enable editing only for USERID and ZFIR0090 columns and disable the rest via LVC_S_STYL entries. +- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_ENABLED, CL_GUI_ALV_GRID=>MC_STYLE_DISABLED +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 신규 행, 셀 편집 가능, 사용자 ID, 권한 항목 +- English: cell style, editable cell, new row +- 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0160t01-12-gt_fcat1), [`GS_FCAT`](#decl-zfir0160t01-11-gs_fcat), [`LS_CELLTAB`](#decl-zfir0160f02-140-ls_celltab), [`LV_MODE`](#decl-zfir0160f02-141-lv_mode) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L146-L170` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_LINE_CELLTAB#C1` + +### FORM POPUP_TO_CONFIRM — `ZFIR0160F01` L203-L239 (37줄) + +*저장/삭제/역분개 기능코드에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답을 돌려주는 FORM이다.* + +> 이 unit 의 조각 1개가 27/37줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기능코드(SAVE/DELE/REVERSE)별 확인 문구를 정하고 POPUP_TO_CONFIRM_STEP 을 호출해 사용자의 예/아니오 응답을 FP_ANSWER 로 받는다. + +```abap + 210| CASE SAVE_OK. + 211| + 212| WHEN 'SAVE'. + 213| L_DEFAULTOPTION = 'Y'. + 214| L_TEXTLINE1 = ''. + 215| L_TEXTLINE2 = '저장 하시겠습니까 ?'. + 216| + 217| WHEN 'DELE'. + 218| L_DEFAULTOPTION = 'Y'. + 219| L_TEXTLINE1 = ''. + 220| L_TEXTLINE2 = '삭제 하시겠습니까 ?'. + 221| + 222| WHEN 'REVERSE'. + 223| L_DEFAULTOPTION = 'Y'. + 224| L_TEXTLINE2 = '역분개 하시겠습니까 ?'. + 225| + 226| ENDCASE. + 227| + 228| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 229| EXPORTING + 230| DEFAULTOPTION = L_DEFAULTOPTION + 231| TEXTLINE1 = L_TEXTLINE1 + 232| TEXTLINE2 = L_TEXTLINE2 + 233| TITEL = TEXT-101 + 234| CANCEL_DISPLAY = '' + 235| IMPORTING + 236| ANSWER = FP_ANSWER. +``` + +- **EN**: Set confirmation text per function code (save/delete/reverse) and call POPUP_TO_CONFIRM_STEP to obtain the user's answer. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 저장 확인, 삭제 확인, 역분개 확인 +- English: confirmation popup, reversal +- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0160t01-36-save_ok), [`L_DEFAULTOPTION`](#decl-zfir0160f01-205-l_defaultoption), [`L_TEXTLINE1`](#decl-zfir0160f01-205-l_textline1), [`L_TEXTLINE2`](#decl-zfir0160f01-205-l_textline2) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L210-L236` · confidence 0.9 · `ZFIR0160#ZFIR0160F01#FORM#POPUP_TO_CONFIRM#C1` + +### FORM SET_DELETE_ROWS — `ZFIR0160F02` L834-L883 (50줄) + +*그리드에서 선택한 사용자 행을 GT_MAIN 과 권한 테이블 ZFIT0160 에서 즉시 삭제하고 건수를 메시지로 알리는 FORM이다.* + +> 이 unit 의 조각 2개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_SELECTED_ROWS 로 선택 행을 읽어 GT_TABLE 에 모으고, 선택이 없으면 '삭제할 행을 선택하세요' 메시지로 종료한다. + +```abap + 845| CALL METHOD GO_GRID->GET_SELECTED_ROWS + 846| IMPORTING + 847| ET_INDEX_ROWS = LT_ROWS. + 848| + 849| LOOP AT LT_ROWS INTO LS_ROWS. + 850| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. + 851| IF SY-SUBRC = 0. + 852| CLEAR GT_TABLE. + 853| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE. + 854| APPEND GT_TABLE. + 855| + 856| ENDIF. + 857| ENDLOOP. + 858| + 859| + 860| IF GT_TABLE[] IS INITIAL. + 861| MESSAGE S001 WITH '삭제할 행을 선택하세요.'. + 862| EXIT. + 863| ENDIF. +``` + +- **EN**: Collect selected ALV rows into GT_TABLE and exit with a message if nothing is selected. +- 호출(파서): GO_GRID->GET_SELECTED_ROWS +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 선택 행, 삭제 대상, 행 선택 검사 +- English: selected rows, validation +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`LT_ROWS`](#decl-zfir0160f02-836-lt_rows), [`LS_ROWS`](#decl-zfir0160f02-837-ls_rows), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L845-L863` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_DELETE_ROWS#C1` + +#### [db_write] 선택된 각 USERID 에 대해 GT_MAIN 에서 행을 지우고 DELETE FROM ZFIT0160 으로 권한 레코드를 DB 에서 삭제한 뒤 삭제 건수를 메시지로 표시한다. + +```abap + 866| LOOP AT GT_TABLE. + 867| + 868| DELETE GT_MAIN WHERE USERID = GT_TABLE-USERID. + 869| + 870| DELETE FROM ZFIT0160 WHERE USERID = GT_TABLE-USERID. + 871| + 872| LV_CNT = LV_CNT + 1. + 873| ENDLOOP. + 874| + 875| IF LV_CNT IS INITIAL. + 876| CONCATENATE '삭제건이 없습니다.' ' ' INTO LV_CNT. + 877| ELSE. + 878| CONCATENATE LV_CNT '건 삭제하였습니다.' INTO LV_CNT. + 879| ENDIF. + 880| + 881| MESSAGE S001 WITH LV_CNT. +``` + +- **EN**: For each selected USERID delete the row from GT_MAIN and from authorization table ZFIT0160, then report the deleted count. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md), [ZFIT0160](/tables/ZFIT0160.md) +- SAP 객체: ZFIT0160 +- 업무 키워드: 권한 삭제, 사용자 권한, DB 삭제, 삭제 건수 +- English: authorization delete, DELETE FROM, user authorization +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_CNT`](#decl-zfir0160f02-839-lv_cnt) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L866-L881` · confidence 0.95 · `ZFIR0160#ZFIR0160F02#FORM#SET_DELETE_ROWS#C2` + +### FORM SET_COPY_ROWS — `ZFIR0160F02` L894-L929 (36줄) + +*그리드에서 선택한 행들을 복사해 GT_MAIN 에 새 행으로 추가하고 편집 스타일을 부여하는 FORM이다.* + +> 이 unit 의 조각 1개가 27/36줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_SELECTED_ROWS 로 선택 행을 얻어 없으면 안내 메시지 후 종료하고, 선택 행을 GT_IMSI1 에 복사(CELLTAB 제거)한 뒤 GT_MAIN 에 APPEND 하며 SET_LINE_ITAB_STYLE 로 COPY 행 스타일을 준다. + +```abap + 901| CALL METHOD GO_GRID->GET_SELECTED_ROWS + 902| IMPORTING + 903| ET_INDEX_ROWS = LT_ROWS. + 904| + 905| + 906| IF LT_ROWS[] IS INITIAL. + 907| MESSAGE S001 WITH '복사할 행을 선택하세요.'. + 908| EXIT. + 909| ENDIF. + 910| + 911| CLEAR: GT_IMSI1[], GT_IMSI1. + 912| + 913| LOOP AT LT_ROWS INTO LS_ROWS. + 914| READ TABLE GT_MAIN INDEX LS_ROWS-INDEX. + 915| IF SY-SUBRC = 0. + 916| GT_IMSI1 = GT_MAIN. + 917| CLEAR: GT_IMSI1-CELLTAB. + 918| APPEND GT_IMSI1. + 919| ENDIF. + 920| ENDLOOP. + 921| + 922| + 923| LOOP AT GT_IMSI1. + 924| GT_MAIN = GT_IMSI1. + 925| APPEND GT_MAIN. + 926| PERFORM SET_LINE_ITAB_STYLE USING 'COPY'. + 927| ENDLOOP. +``` + +- **EN**: Read selected ALV rows, copy them (without CELLTAB) into GT_IMSI1 and append them to GT_MAIN as new editable rows via SET_LINE_ITAB_STYLE. +- 호출(파서): GO_GRID->GET_SELECTED_ROWS, SET_LINE_ITAB_STYLE +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 행 복사, 선택 행, 권한 등록, 행 추가 +- English: row copy, selected rows, editable ALV +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`LT_ROWS`](#decl-zfir0160f02-896-lt_rows), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`GT_IMSI1`](#decl-zfir0160top-32-gt_imsi1), [`LS_ROWS`](#decl-zfir0160f02-897-ls_rows) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L901-L927` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_COPY_ROWS#C1` + +### FORM SET_SAVE — `ZFIR0160F02` L1155-L1234 (80줄) + +*편집한 권한 내역을 검증 통과 시에만 권한 테이블 ZFIT0160 에 일괄 저장하고 결과를 건수로 알린다.* + +> 이 unit 의 조각 1개가 68/80줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [db_write] 앞선 검증에서 오류가 없을 때만 진행한다. 사용자ID 로 정렬해 ID 가 채워진 행만 저장 대상으로 모으고, 저장건이 없으면 메시지로 알린다. 모은 행을 커스텀 권한 테이블 ZFIT0160 에 MODIFY 로 일괄 반영하고, 성공하면 '전체 n건 중 m건 성공' 메시지를, 실패하면 오류 메시지와 함께 ROLLBACK WORK 로 되돌린다. + +```abap + 1165| CHECK GV_ERR IS INITIAL. + 1166| + 1167| CLEAR: GT_TABLE, GT_TABLE[], GV_CHK, + 1168| LV_TEXT, LV_CNT1, LV_CNT2. + 1169| + 1170| + 1171| SORT GT_MAIN BY USERID. + 1172| + 1173| + 1174| LOOP AT GT_MAIN. + 1175| + 1176| LV_TABIX = SY-TABIX. + 1177| + 1178| CLEAR: GT_MAIN-SCOL, LT_SCOL, LT_SCOL[]. + 1179| + 1180| + 1181| IF GT_MAIN-USERID IS NOT INITIAL. + 1182| + 1183| CLEAR GT_TABLE. + 1184| + 1185| MOVE-CORRESPONDING GT_MAIN TO GT_TABLE. + 1186| + 1187| * IF GT_TABLE-ERNAM IS INITIAL. + 1188| * GT_TABLE-ERNAM = SY-UNAME. + 1189| * GT_TABLE-ERDAT = SY-DATLO. + 1190| * GT_TABLE-ERZET = SY-TIMLO. + 1191| * ELSE. + 1192| * GT_TABLE-AENAM = SY-UNAME. + 1193| * GT_TABLE-AEDAT = SY-DATLO. + 1194| * GT_TABLE-AEZET = SY-TIMLO. + 1195| * ENDIF. + 1196| * + 1197| + 1198| APPEND GT_TABLE. + 1199| + 1200| LV_CNT1 = LV_CNT1 + 1. + 1201| + 1202| ENDIF. + 1203| + 1204| ENDLOOP. + 1205| + 1206| IF LV_CNT1 IS INITIAL. + 1207| LV_TEXT = '저장건이 없습니다'. + 1208| MESSAGE S001 WITH LV_TEXT. + 1209| ENDIF. + 1210| + 1211| + 1212| CHECK GT_TABLE[] IS NOT INITIAL. + 1213| + 1214| + 1215| MODIFY ZFIT0160 FROM TABLE GT_TABLE. + 1216| + 1217| IF SY-SUBRC = 0. + 1218| + 1219| DESCRIBE TABLE GT_MAIN LINES LV_CNT2. + 1220| + 1221| CONCATENATE `전체 ` LV_CNT2 `건 중 ` LV_CNT1 '건 성공하였습니다.' + 1222| INTO LV_TEXT. + 1223| CONDENSE LV_TEXT. + 1224| + 1225| MESSAGE S001 WITH LV_TEXT. + 1226| + 1227| ELSE. + 1228| + 1229| MESSAGE S001 WITH '저장에 실패하였습니다.' DISPLAY LIKE 'E'. + 1230| ROLLBACK WORK. + 1231| + 1232| ENDIF. +``` + +- **EN**: Only proceeds when validation passed; collects rows with a user ID, bulk-MODIFYs them into the custom authorization table ZFIT0160, and reports counts or rolls back on failure. +- 테이블(파서): read - / write [ZFIT0160](/tables/ZFIT0160.md) +- SAP 객체: ZFIT0160, USERID +- 업무 키워드: 권한저장, 권한테이블, 사용자ID, 일괄저장, 롤백, 저장건수, 권한관리 +- English: authorization save, authority table, user ID, bulk update, rollback, ZFIT0160 +- 정의부(복사 시 함께 필요): [`GV_ERR`](#decl-zfir0160t01-40-gv_err), [`ZFIT0160`](#decl-zfir0160top-5-zfit0160), [`GT_TABLE`](#decl-zfir0160top-39-gt_table), [`GV_CHK`](#decl-zfir0160t01-42-gv_chk), [`LV_TEXT`](#decl-zfir0160f02-1160-lv_text), [`LV_CNT1`](#decl-zfir0160f02-1161-lv_cnt1), [`LV_CNT2`](#decl-zfir0160f02-1162-lv_cnt2), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_TABIX`](#decl-zfir0160f02-1157-lv_tabix), [`LT_SCOL`](#decl-zfir0160f02-1158-lt_scol) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L1165-L1232` · confidence 0.88 · `ZFIR0160#ZFIR0160F02#FORM#SET_SAVE#C1` + +### FORM SET_ITAB_STYLE — `ZFIR0160F02` L13-L49 (37줄) + +*GT_MAIN 각 행에 대해 SET_CELLTAB 으로 셀 편집 스타일을 계산해 CELLTAB 에 반영하는 FORM이다.* + +> 이 unit 의 조각 1개가 26/37줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GT_MAIN 의 모든 행을 순회하며 현재 모드(GV_UCOMM)로 SET_CELLTAB 을 호출해 셀 스타일을 만들고 각 행의 CELLTAB 에 삽입 후 MODIFY 한다. + +```abap + 22| LOOP AT GT_MAIN. + 23| LV_TABIX = SY-TABIX. + 24| + 25| CLEAR: GT_MAIN-CELLTAB, + 26| LS_MAIN, LT_CELLTAB, LT_CELLTAB[], LV_UCOMM. + 27| + 28| MOVE-CORRESPONDING GT_MAIN TO LS_MAIN. + 29| + 30| * 개발번호 + 31| + 32| + 33| IF LV_UCOMM IS INITIAL. + 34| LV_UCOMM = GV_UCOMM. + 35| ENDIF. + 36| + 37| * SETTING COLOR + 38| + 39| PERFORM SET_CELLTAB USING LS_MAIN + 40| LV_UCOMM + 41| CHANGING LT_CELLTAB. + 42| + 43| INSERT LINES OF LT_CELLTAB INTO TABLE GT_MAIN-CELLTAB. + 44| MODIFY GT_MAIN INDEX LV_TABIX. + 45| + 46| + 47| ENDLOOP. +``` + +- **EN**: Loop over GT_MAIN, derive per-cell edit styles via SET_CELLTAB for the current mode and store them in each row's CELLTAB. +- 테이블(파서): read - / write [GT_MAIN](/tables/GT_MAIN.md) +- 호출(파서): SET_CELLTAB +- 업무 키워드: 행 스타일, 셀 편집 상태, 그리드 갱신 +- English: cell style, ALV editable grid +- 정의부(복사 시 함께 필요): [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [`LV_TABIX`](#decl-zfir0160f02-18-lv_tabix), [`LS_MAIN`](#decl-zfir0160f02-15-ls_main), [`LT_CELLTAB`](#decl-zfir0160f02-17-lt_celltab), [`LV_UCOMM`](#decl-zfir0160f02-20-lv_ucomm), [`GV_UCOMM`](#decl-zfir0160t01-38-gv_ucomm) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L22-L47` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_ITAB_STYLE#C1` + +### FORM SET_CELLTAB — `ZFIR0160F02` L94-L131 (38줄) + +*변경 모드(CHAN)에서 필드카탈로그를 순회하며 ZFIR0090 컬럼만 편집 가능하고 나머지는 편집 불가로 셀 스타일(LVC_T_STYL)을 만드는 FORM이다.* + +> 이 unit 의 조각 1개가 26/38줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GT_FCAT1 의 각 컬럼에 대해 변경 모드(CHAN)일 때 ZFIR0090 필드만 MC_STYLE_ENABLED, 나머지 컬럼은 MC_STYLE_DISABLED 로 셀 스타일을 설정해 P_CELLTAB 에 넣는다. + +```abap + 104| LOOP AT GT_FCAT1 INTO GS_FCAT. + 105| CLEAR LS_CELLTAB. + 106| + 107| CASE P_UCOMM. + 108| + 109| WHEN 'CHAN'. + 110| IF GS_FCAT-FIELDNAME = 'ZFIR0090'. + 111| + 112| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. + 113| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 114| LS_CELLTAB-STYLE = LV_MODE. + 115| + 116| + 117| ELSE. + 118| + 119| LV_MODE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. + 120| LS_CELLTAB-FIELDNAME = GS_FCAT-FIELDNAME. + 121| LS_CELLTAB-STYLE = LV_MODE. + 122| + 123| ENDIF. + 124| + 125| ENDCASE. + 126| + 127| INSERT LS_CELLTAB INTO TABLE P_CELLTAB. + 128| + 129| ENDLOOP. +``` + +- **EN**: For each field catalog column in change mode, enable editing only for ZFIR0090 and disable the others by building LVC_S_STYL entries. +- 호출(파서): CL_GUI_ALV_GRID=>MC_STYLE_ENABLED, CL_GUI_ALV_GRID=>MC_STYLE_DISABLED +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 셀 편집 가능, 셀 스타일, 변경 모드, 권한 항목 +- English: cell style, editable cell, LVC_T_STYL +- 정의부(복사 시 함께 필요): [`GT_FCAT1`](#decl-zfir0160t01-12-gt_fcat1), [`GS_FCAT`](#decl-zfir0160t01-11-gs_fcat), [`LS_CELLTAB`](#decl-zfir0160f02-98-ls_celltab), [`LV_MODE`](#decl-zfir0160f02-99-lv_mode) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L104-L129` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#SET_CELLTAB#C1` + +### FORM SET_F4_VARIANT — `ZFIR0160F01` L58-L80 (23줄) + +*REUSE_ALV_VARIANT_F4 로 ALV 레이아웃 변형 F4 도움말을 제공하는 FORM이다.* + +> 이 unit 의 조각 1개가 17/23줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] REUSE_ALV_VARIANT_F4 를 호출해 저장된 ALV 레이아웃 변형 목록을 팝업으로 보여주고 선택값을 GX_VARIANT 로 받는다(선택화면 반영 코드는 주석 처리됨). + +```abap + 62| CALL FUNCTION 'REUSE_ALV_VARIANT_F4' + 63| EXPORTING + 64| IS_VARIANT = GS_VARIANT + 65| I_SAVE = 'A' + 66| IMPORTING + 67| E_EXIT = GV_EXIT + 68| ES_VARIANT = GX_VARIANT + 69| EXCEPTIONS + 70| NOT_FOUND = 1. + 71| IF SY-SUBRC <> 0. + 72| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 73| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 74| ELSE. + 75| IF GV_EXIT IS INITIAL. + 76| **** PA_LAYOU = GX_VARIANT-VARIANT. + 77| ENDIF. + 78| ENDIF. +``` + +- **EN**: Call REUSE_ALV_VARIANT_F4 to offer a value help for saved ALV layout variants and return the chosen variant. +- 호출(파서): REUSE_ALV_VARIANT_F4 +- SAP 객체: REUSE_ALV_VARIANT_F4 +- 업무 키워드: 레이아웃 변형, F4 도움말, ALV 변형 +- English: ALV layout variant, value help +- 정의부(복사 시 함께 필요): [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant), [`GV_EXIT`](#decl-zfir0160t01-24-gv_exit), [`GX_VARIANT`](#decl-zfir0160t01-9-gx_variant) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L62-L78` · confidence 0.85 · `ZFIR0160#ZFIR0160F01#FORM#SET_F4_VARIANT#C1` + +### FORM SET_POP_MESSAGE — `ZFIR0160F01` L137-L159 (23줄) + +*POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다.* + +> 이 unit 의 조각 1개가 18/23줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM 을 호출해 전달받은 질문 텍스트로 예/아니오 팝업을 띄우고 응답을 P_ANSWER 로 반환하며 오류 시 시스템 메시지를 출력한다. + +```abap + 140| CALL FUNCTION 'POPUP_TO_CONFIRM' + 141| EXPORTING + 142| TEXT_QUESTION = P_TEXT + 143| TEXT_BUTTON_1 = '예(Yes)' + 144| TEXT_BUTTON_2 = '아니오(No)' + 145| DEFAULT_BUTTON = '1' + 146| DISPLAY_CANCEL_BUTTON = '' + 147| START_COLUMN = 25 + 148| START_ROW = 6 + 149| IMPORTING + 150| ANSWER = P_ANSWER + 151| EXCEPTIONS + 152| TEXT_NOT_FOUND = 1 + 153| OTHERS = 2. + 154| IF SY-SUBRC <> 0. + 155| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 156| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 157| ENDIF. +``` + +- **EN**: Calls POPUP_TO_CONFIRM with the given question text to get a Yes/No answer and raises the system message on failure. +- 호출(파서): POPUP_TO_CONFIRM +- SAP 객체: POPUP_TO_CONFIRM +- 업무 키워드: 확인 팝업, 예/아니오, 사용자 응답 +- English: Confirmation Popup, Dialog +- 정의부(복사 시 함께 필요): [`P_ANSWER`](#decl-zfir0160top-35-p_answer) +- 위치: `abap://ZFIR0160/ZFIR0160F01#L140-L157` · confidence 0.95 · `ZFIR0160#ZFIR0160F01#FORM#SET_POP_MESSAGE#C1` + +### FORM RUN_DISPLAY_ALV — `ZFIR0160F02` L549-L571 (23줄) + +*화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다.* + +> 이 unit 의 조각 1개가 19/23줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [output] 화면번호에 따라 그리드 객체와 GT_MAIN 을 필드심볼에 할당하고 SET_EVENT_UCOMM 이벤트 등록 후 CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY 로 레이아웃·변형·툴바제외·정렬을 적용해 ALV 를 표시한다. + +```abap + 551| CASE P_VALUE. + 552| WHEN '0100'. + 553| ASSIGN: GO_GRID TO , + 554| GT_MAIN[] TO . + 555| ENDCASE. + 556| + 557| PERFORM SET_EVENT_UCOMM. + 558| + 559| CALL METHOD ->SET_TABLE_FOR_FIRST_DISPLAY + 560| EXPORTING + 561| I_DEFAULT = 'X' + 562| IS_LAYOUT = GS_LAYOUT + 563| IS_VARIANT = GS_VARIANT + 564| IT_TOOLBAR_EXCLUDING = GT_EXCLUDE + 565| I_SAVE = 'A' + 566| CHANGING + 567| IT_OUTTAB = + 568| IT_FIELDCATALOG = + 569| IT_SORT = GT_SORT. +``` + +- **EN**: Assigns the grid and GT_MAIN by screen number, registers events and calls SET_TABLE_FOR_FIRST_DISPLAY with layout, variant, toolbar exclusions and sort to display the ALV grid. +- 호출(파서): SET_EVENT_UCOMM, ->SET_TABLE_FOR_FIRST_DISPLAY +- SAP 객체: CL_GUI_ALV_GRID, SET_TABLE_FOR_FIRST_DISPLAY +- 업무 키워드: ALV 표시, 그리드, 레이아웃, 변형 +- English: ALV Grid, Layout Variant, First Display +- 정의부(복사 시 함께 필요): [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [``](#decl-zfir0160t01-64--fs_grid-), [`GT_MAIN`](#decl-zfir0160top-19-gt_main), [``](#decl-zfir0160t01-65--fs_table-), [`GS_LAYOUT`](#decl-zfir0160t01-7-gs_layout), [`GS_VARIANT`](#decl-zfir0160t01-8-gs_variant), [`GT_EXCLUDE`](#decl-zfir0160t01-10-gt_exclude), [``](#decl-zfir0160t01-62--gt_field-), [`GT_SORT`](#decl-zfir0160t01-14-gt_sort) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L551-L569` · confidence 0.85 · `ZFIR0160#ZFIR0160F02#FORM#RUN_DISPLAY_ALV#C1` + +### FORM SET_CHANGE — `ZFIR0160F02` L799-L823 (25줄) + +*변경/조회 토글(CHAN↔DISP)에 따라 ALV 그리드의 입력 가능 상태를 SET_READY_FOR_INPUT 으로 전환하는 FORM이다.* + +> 이 unit 의 조각 1개가 17/25줄(68%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 현재 모드가 CHAN 이면 그리드를 읽기전용(0)으로 바꾸고 DISP 로, DISP 이고 잠금(GV_LOCK)이 없으면 입력가능(1)으로 바꾸고 CHAN 으로 토글한다. + +```abap + 801| CASE GV_UCOMM. + 802| WHEN 'CHAN'. + 803| CALL METHOD GO_GRID->SET_READY_FOR_INPUT + 804| EXPORTING + 805| I_READY_FOR_INPUT = 0. + 806| + 807| GV_UCOMM = 'DISP'. + 808| WHEN 'DISP'. + 809| + 810| IF GV_LOCK IS INITIAL. + 811| CALL METHOD GO_GRID->SET_READY_FOR_INPUT + 812| EXPORTING + 813| I_READY_FOR_INPUT = 1. + 814| + 815| GV_UCOMM = 'CHAN'. + 816| ENDIF. + 817| ENDCASE. +``` + +- **EN**: Toggle ALV grid edit mode via CL_GUI_ALV_GRID->SET_READY_FOR_INPUT between change (CHAN) and display (DISP), only allowing edit when no lock is set. +- 호출(파서): GO_GRID->SET_READY_FOR_INPUT, GO_GRID->SET_READY_FOR_INPUT +- SAP 객체: CL_GUI_ALV_GRID +- 업무 키워드: 변경 모드, 조회 모드, 입력 가능 전환, 잠금 +- English: edit mode, display mode, ready for input +- 정의부(복사 시 함께 필요): [`GV_UCOMM`](#decl-zfir0160t01-38-gv_ucomm), [`GO_GRID`](#decl-zfir0160c01-128-go_grid), [`GV_LOCK`](#decl-zfir0160t01-43-gv_lock) +- 위치: `abap://ZFIR0160/ZFIR0160F02#L801-L817` · confidence 0.9 · `ZFIR0160#ZFIR0160F02#FORM#SET_CHANGE#C1` + +### MODULE USER_COMMAND_0100_EXIT INPUT — `ZFIR0160I01` L10-L45 (36줄) + +*화면 0100 종료 시 변경 여부(GV_CHK)를 확인해 저장 팝업을 띄우고 확인 시 검증·저장 후 화면을 빠져나가는 EXIT 모듈이다.* + +> 이 unit 의 조각 2개가 23/36줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 그리드 변경 플래그(GV_CHK)가 있으면 저장 확인 팝업(SET_POP_MESSAGE)을 띄우고 '예'이면 CHK_DATA 검증 후 SET_SAVE 로 ZFIT0160 에 저장하며, 오류(GV_ERR)가 있으면 화면 종료를 중단한다. + +```abap + 14| IF GV_CHK IS NOT INITIAL. + 15| PERFORM SET_POP_MESSAGE USING TEXT-100 + 16| CHANGING GV_ANSWER. + 17| IF GV_ANSWER = '1'. + 18| PERFORM CHK_DATA. + 19| PERFORM SET_SAVE. + 20| + 21| * PERFORM SET_DATA. + 22| * PERFORM SET_ITAB_STYLE. " CHANGE + 23| * PERFORM SET_REFRESH. + 24| + 25| ELSE. + 26| MESSAGE S001 WITH TEXT-101. + 27| ENDIF. + 28| + 29| CHECK GV_ERR IS INITIAL. + 30| ENDIF. +``` + +- **EN**: If unsaved changes exist, show a save confirmation popup and on confirmation validate (CHK_DATA) and save to ZFIT0160 (SET_SAVE); abort exit when an error is flagged. +- 호출(파서): SET_POP_MESSAGE, CHK_DATA, SET_SAVE +- SAP 객체: ZFIT0160 +- 업무 키워드: 저장 확인, 변경 여부, 권한 테이블 저장, 화면 종료, 오류 체크 +- English: save confirmation, authorization maintenance, screen exit +- 정의부(복사 시 함께 필요): [`GV_CHK`](#decl-zfir0160t01-42-gv_chk), [`GV_ANSWER`](#decl-zfir0160t01-41-gv_answer), [`GV_ERR`](#decl-zfir0160t01-40-gv_err) +- 위치: `abap://ZFIR0160/ZFIR0160I01#L14-L30` · confidence 0.85 · `ZFIR0160#ZFIR0160I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C1` + +#### [control_flow] 기능코드 BACK/CANCEL(&F03,&F15)이면 화면 0으로 돌아가고 EXIT(&F12)이면 프로그램을 종료한다. + +```abap + 37| CASE SAVE_OK. + 38| WHEN '&F03' OR '&F15'. + 39| LEAVE TO SCREEN 0. + 40| WHEN '&F12'. + 41| LEAVE PROGRAM. + 42| ENDCASE. +``` + +- **EN**: Leave to screen 0 on BACK/CANCEL and leave the program on EXIT function codes. +- 업무 키워드: 화면 종료, 프로그램 종료, 기능코드 +- English: function code, leave screen +- 정의부(복사 시 함께 필요): [`SAVE_OK`](#decl-zfir0160t01-36-save_ok) +- 위치: `abap://ZFIR0160/ZFIR0160I01#L37-L42` · confidence 0.9 · `ZFIR0160#ZFIR0160I01#MODULE#USER_COMMAND_0100_EXIT_INPUT#C2` + +## 정의부 (109건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIR0160C01` (18건) + +#### LCL_EVENT_RECEIVER — class · L10-L55 {#decl-zfir0160c01-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION . + PUBLIC SECTION . + +* 변경 필드 값처리 + + METHODS : HANDLE_DATA_CHANGED + FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID + IMPORTING + ER_DATA_CHANGED. + +* ON F4처리 + + METHODS : HANDLE_ON_F4 + FOR EVENT ONF4 OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_FIELDNAME + E_FIELDVALUE + ES_ROW_NO + ER_EVENT_DATA + ET_BAD_CELLS + E_DISPLAY. + +* TOOLBAR + + METHODS: HANDLE_ON_TOOLBAR + FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID + IMPORTING E_OBJECT + E_INTERACTIVE + SENDER. + +* USER_COMMAND + + METHODS: HANDLE_USER_COMMAND + FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID + IMPORTING E_UCOMM. + +* DOUBLE_CLICK + + METHODS: HANDLE_DOUBLE_CLICK + FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID + IMPORTING SENDER + E_ROW + E_COLUMN + ES_ROW_NO. + +ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION +``` + +#### GO_CUSTOM — data · L114-L114 {#decl-zfir0160c01-114-go_custom} + +```abap +DATA: GO_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GO_CUSTOM2 — data · L115-L115 {#decl-zfir0160c01-115-go_custom2} + +```abap +DATA: + GO_CUSTOM2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### GO_DOCKING — data · L117-L117 {#decl-zfir0160c01-117-go_docking} + +```abap +DATA: GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_DOCKING2 — data · L118-L118 {#decl-zfir0160c01-118-go_docking2} + +```abap +DATA: + GO_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### GO_SPLITTER — data · L120-L120 {#decl-zfir0160c01-120-go_splitter} + +```abap +DATA: GO_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_SPLITTER2 — data · L121-L121 {#decl-zfir0160c01-121-go_splitter2} + +```abap +DATA: + GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. +``` + +#### GO_GRID — data · L128-L128 {#decl-zfir0160c01-128-go_grid} + +```abap +DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID2 — data · L129-L129 {#decl-zfir0160c01-129-go_grid2} + +```abap +DATA: + GO_GRID2 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID3 — data · L130-L130 {#decl-zfir0160c01-130-go_grid3} + +```abap +DATA: + GO_GRID3 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID4 — data · L131-L131 {#decl-zfir0160c01-131-go_grid4} + +```abap +DATA: + GO_GRID4 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_GRID5 — data · L132-L132 {#decl-zfir0160c01-132-go_grid5} + +```abap +DATA: + GO_GRID5 TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GO_CON — data · L134-L134 {#decl-zfir0160c01-134-go_con} + +```abap +DATA: GO_CON TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON2 — data · L135-L135 {#decl-zfir0160c01-135-go_con2} + +```abap +DATA: + GO_CON2 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON3 — data · L136-L136 {#decl-zfir0160c01-136-go_con3} + +```abap +DATA: + GO_CON3 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON4 — data · L137-L137 {#decl-zfir0160c01-137-go_con4} + +```abap +DATA: + GO_CON4 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_CON5 — data · L138-L138 {#decl-zfir0160c01-138-go_con5} + +```abap +DATA: + GO_CON5 TYPE REF TO CL_GUI_CONTAINER. +``` + +#### GO_EVENT — data · L140-L140 {#decl-zfir0160c01-140-go_event} + +```abap +DATA: GO_EVENT TYPE REF TO LCL_EVENT_RECEIVER. +``` + +### `ZFIR0160T01` (36건) + +#### GS_LAYOUT — data · L7-L7 {#decl-zfir0160t01-7-gs_layout} + +```abap +DATA: GS_LAYOUT TYPE LVC_S_LAYO. +``` + +#### GS_VARIANT — data · L8-L8 {#decl-zfir0160t01-8-gs_variant} + +```abap +DATA: + GS_VARIANT TYPE DISVARIANT. +``` + +#### GX_VARIANT — data · L9-L9 {#decl-zfir0160t01-9-gx_variant} + +```abap +DATA: + GX_VARIANT TYPE DISVARIANT. +``` + +#### GT_EXCLUDE — data · L10-L10 {#decl-zfir0160t01-10-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_FCAT — data · L11-L11 {#decl-zfir0160t01-11-gs_fcat} + +```abap +DATA: + GS_FCAT TYPE LVC_S_FCAT. +``` + +#### GT_FCAT1 — data · L12-L12 {#decl-zfir0160t01-12-gt_fcat1} + +```abap +DATA: + GT_FCAT1 TYPE LVC_T_FCAT. +``` + +#### GS_SORT — data · L13-L13 {#decl-zfir0160t01-13-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. +``` + +#### GT_SORT — data · L14-L14 {#decl-zfir0160t01-14-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. +``` + +#### GS_GLAY — data · L15-L15 {#decl-zfir0160t01-15-gs_glay} + +```abap +DATA: + GS_GLAY TYPE LVC_S_GLAY. +``` + +#### GT_HEAD — data · L16-L16 {#decl-zfir0160t01-16-gt_head} + +```abap +DATA: + GT_HEAD TYPE LVC_T_HEAD. +``` + +#### GS_HEAD — data · L17-L17 {#decl-zfir0160t01-17-gs_head} + +```abap +DATA: + GS_HEAD TYPE LVC_S_HEAD. +``` + +#### GS_EVENT — data · L18-L18 {#decl-zfir0160t01-18-gs_event} + +```abap +DATA: + GS_EVENT TYPE LVC_S_EVTS. +``` + +#### GT_EVENT — data · L19-L19 {#decl-zfir0160t01-19-gt_event} + +```abap +DATA: + GT_EVENT TYPE LVC_T_EVTS. +``` + +#### GS_STBL — data · L20-L20 {#decl-zfir0160t01-20-gs_stbl} + +```abap +DATA: + GS_STBL TYPE LVC_S_STBL. " Refresh stability. +``` + +#### G_REPID — data · L22-L22 {#decl-zfir0160t01-22-g_repid} + +```abap +DATA: G_REPID TYPE SY-REPID. +``` + +#### G_TABNAME — data · L23-L23 {#decl-zfir0160t01-23-g_tabname} + +```abap +DATA: + G_TABNAME TYPE SLIS_TABNAME. +``` + +#### GV_EXIT — data · L24-L24 {#decl-zfir0160t01-24-gv_exit} + +```abap +DATA: + GV_EXIT TYPE C. +``` + +#### GS_F4 — data · L26-L26 {#decl-zfir0160t01-26-gs_f4} + +```abap +DATA: GS_F4 TYPE LVC_S_F4. " F4 ## ## +``` + +#### GT_F4 — data · L27-L27 {#decl-zfir0160t01-27-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### OK_CODE — data · L35-L35 {#decl-zfir0160t01-35-ok_code} + +```abap +DATA: OK_CODE TYPE SY-UCOMM. +``` + +#### SAVE_OK — data · L36-L36 {#decl-zfir0160t01-36-save_ok} + +```abap +DATA: + SAVE_OK TYPE SY-UCOMM. +``` + +#### GV_UCOMM — data · L38-L38 {#decl-zfir0160t01-38-gv_ucomm} + +```abap +DATA: GV_UCOMM TYPE SY-UCOMM. " COMMAND +``` + +#### GS_MSG — data · L39-L39 {#decl-zfir0160t01-39-gs_msg} + +```abap +DATA: + GS_MSG LIKE FIMSG. " MESSSAGE +``` + +#### GV_ERR — data · L40-L40 {#decl-zfir0160t01-40-gv_err} + +```abap +DATA: + GV_ERR TYPE C. " ERROR +``` + +#### GV_ANSWER — data · L41-L41 {#decl-zfir0160t01-41-gv_answer} + +```abap +DATA: + GV_ANSWER TYPE C. " MESSAGE +``` + +#### GV_CHK — data · L42-L42 {#decl-zfir0160t01-42-gv_chk} + +```abap +DATA: + GV_CHK TYPE C. " CHANGE +``` + +#### GV_LOCK — data · L43-L43 {#decl-zfir0160t01-43-gv_lock} + +```abap +DATA: + GV_LOCK TYPE C. +``` + +#### GV_MNAME — data · L44-L44 {#decl-zfir0160t01-44-gv_mname} + +```abap +DATA: + GV_MNAME TYPE STRING. +``` + +#### GC_YEL — constants · L51-L51 {#decl-zfir0160t01-51-gc_yel} + +```abap +CONSTANTS: GC_YEL(4) VALUE '@09@'. " ICON_LED_YELLOW +``` + +#### GC_GRE — constants · L52-L52 {#decl-zfir0160t01-52-gc_gre} + +```abap +CONSTANTS: + GC_GRE(4) VALUE '@08@'. " ICON_LED_GREEN +``` + +#### GC_OUT — constants · L53-L53 {#decl-zfir0160t01-53-gc_out} + +```abap +CONSTANTS: + GC_OUT(4) VALUE '@EB@'. " ICON_LED_LIGHT_OUT +``` + +#### GC_RED — constants · L54-L54 {#decl-zfir0160t01-54-gc_red} + +```abap +CONSTANTS: + GC_RED(4) VALUE '@0A@'. " ICON_LED_RED +``` + +#### — field-symbol · L61-L61 {#decl-zfir0160t01-61--gs_field-} + +```abap +FIELD-SYMBOLS: TYPE LVC_S_FCAT. +``` + +#### — field-symbol · L62-L62 {#decl-zfir0160t01-62--gt_field-} + +```abap +FIELD-SYMBOLS: + TYPE LVC_T_FCAT. +``` + +#### — field-symbol · L64-L64 {#decl-zfir0160t01-64--fs_grid-} + +```abap +FIELD-SYMBOLS: TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### — field-symbol · L65-L65 {#decl-zfir0160t01-65--fs_table-} + +```abap +FIELD-SYMBOLS: + TYPE TABLE. +``` + +### `ZFIR0160TOP` (21건) + +#### BKPF — tables · L5-L5 {#decl-zfir0160top-5-bkpf} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### BSAK — tables · L5-L5 {#decl-zfir0160top-5-bsak} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### BSEG — tables · L5-L5 {#decl-zfir0160top-5-bseg} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### BSIK — tables · L5-L5 {#decl-zfir0160top-5-bsik} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### BSIS — tables · L5-L5 {#decl-zfir0160top-5-bsis} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### T012K — tables · L5-L5 {#decl-zfir0160top-5-t012k} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### ZFIT0160 — tables · L5-L5 {#decl-zfir0160top-5-zfit0160} + +```abap +TABLES: ZFIT0160, T012K, BKPF, BSIS, BSIK, BSAK, BSEG. +``` + +#### ICON — type-pool · L7-L7 {#decl-zfir0160top-7-icon} + +```abap +TYPE-POOLS: SLIS, ICON. +``` + +#### SLIS — type-pool · L7-L7 {#decl-zfir0160top-7-slis} + +```abap +TYPE-POOLS: SLIS, ICON. +``` + +#### IT_T012K — data · L10-L12 {#decl-zfir0160top-10-it_t012k} + +```abap +DATA: BEGIN OF IT_T012K OCCURS 0. + INCLUDE STRUCTURE T012K. +DATA END OF IT_T012K. +``` + +#### IT_ZFIT0160 — data · L14-L16 {#decl-zfir0160top-14-it_zfit0160} + +```abap +DATA: BEGIN OF IT_ZFIT0160 OCCURS 0. + INCLUDE STRUCTURE ZFIT0160. +DATA END OF IT_ZFIT0160. +``` + +#### GT_MAIN — data · L19-L28 {#decl-zfir0160top-19-gt_main} + +```abap +DATA: BEGIN OF GT_MAIN OCCURS 0, + MARK LIKE ICON-STATUS, + USERID LIKE ZFIT0160-USERID, + NAME(20), + ZFIR0090 LIKE ZFIT0160-ZFIR0090. + + +DATA: CELLTAB TYPE LVC_T_STYL, + SCOL TYPE LVC_T_SCOL, + END OF GT_MAIN. +``` + +#### GT_IMSI — data · L31-L31 {#decl-zfir0160top-31-gt_imsi} + +```abap +DATA: GT_IMSI LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### GT_IMSI1 — data · L32-L32 {#decl-zfir0160top-32-gt_imsi1} + +```abap +DATA: GT_IMSI1 LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### P_ANSWER — data · L35-L35 {#decl-zfir0160top-35-p_answer} + +```abap +DATA: P_ANSWER. +``` + +#### TMP_MAIN — data · L37-L37 {#decl-zfir0160top-37-tmp_main} + +```abap +DATA: TMP_MAIN LIKE TABLE OF GT_MAIN WITH HEADER LINE. +``` + +#### GT_TABLE — data · L39-L39 {#decl-zfir0160top-39-gt_table} + +```abap +DATA: GT_TABLE LIKE TABLE OF ZFIT0160 WITH HEADER LINE. +``` + +#### GT_ANY — data · L41-L41 {#decl-zfir0160top-41-gt_any} + +```abap +DATA GT_ANY TYPE REF TO DATA. +``` + +#### I_TABNAM — data · L42-L42 {#decl-zfir0160top-42-i_tabnam} + +```abap +DATA I_TABNAM TYPE TABNAME16. +``` + +#### — field-symbol · L44-L44 {#decl-zfir0160top-44--fs_s-} + +```abap +FIELD-SYMBOLS: TYPE ANY. +``` + +#### — field-symbol · L45-L45 {#decl-zfir0160top-45--fs_t-} + +```abap +FIELD-SYMBOLS: + TYPE ANY TABLE. +``` + +### `ZFIR0160F01` (4건) + +#### L_TABIX — data · unit 로컬 · L177-L177 {#decl-zfir0160f01-177-l_tabix} + +```abap + DATA: L_TABIX LIKE SY-TABIX. +``` + +#### L_DEFAULTOPTION — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_defaultoption} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +#### L_TEXTLINE1 — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_textline1} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +#### L_TEXTLINE2 — data · unit 로컬 · L205-L205 {#decl-zfir0160f01-205-l_textline2} + +```abap + DATA: L_DEFAULTOPTION, L_TEXTLINE1(70), L_TEXTLINE2(70). +``` + +### `ZFIR0160F02` (30건) + +#### LS_MAIN — data · unit 로컬 · L15-L15 {#decl-zfir0160f02-15-ls_main} + +```abap + DATA: LS_MAIN LIKE GT_MAIN. +``` + +#### LT_CELLTAB — data · unit 로컬 · L17-L17 {#decl-zfir0160f02-17-lt_celltab} + +```abap + DATA: LT_CELLTAB TYPE LVC_T_STYL. +``` + +#### LV_TABIX — data · unit 로컬 · L18-L18 {#decl-zfir0160f02-18-lv_tabix} + +```abap +DATA: + LV_TABIX TYPE SY-TABIX. +``` + +#### LV_UCOMM — data · unit 로컬 · L20-L20 {#decl-zfir0160f02-20-lv_ucomm} + +```abap + DATA: LV_UCOMM TYPE SY-UCOMM. +``` + +#### LS_MAIN — data · unit 로컬 · L56-L56 {#decl-zfir0160f02-56-ls_main} + +```abap + DATA: LS_MAIN LIKE GT_MAIN. +``` + +#### LT_CELLTAB — data · unit 로컬 · L58-L58 {#decl-zfir0160f02-58-lt_celltab} + +```abap + DATA: LT_CELLTAB TYPE LVC_T_STYL. +``` + +#### LV_TABIX — data · unit 로컬 · L59-L59 {#decl-zfir0160f02-59-lv_tabix} + +```abap +DATA: + LV_TABIX TYPE SY-TABIX. +``` + +#### LV_UCOMM — data · unit 로컬 · L61-L61 {#decl-zfir0160f02-61-lv_ucomm} + +```abap + DATA: LV_UCOMM TYPE SY-UCOMM. +``` + +#### LS_CELLTAB — data · unit 로컬 · L98-L98 {#decl-zfir0160f02-98-ls_celltab} + +```abap + DATA: LS_CELLTAB TYPE LVC_S_STYL. +``` + +#### LV_MODE — data · unit 로컬 · L99-L99 {#decl-zfir0160f02-99-lv_mode} + +```abap +DATA: + LV_MODE TYPE RAW4. +``` + +#### LS_CELLTAB — data · unit 로컬 · L140-L140 {#decl-zfir0160f02-140-ls_celltab} + +```abap + DATA: LS_CELLTAB TYPE LVC_S_STYL. +``` + +#### LV_MODE — data · unit 로컬 · L141-L141 {#decl-zfir0160f02-141-lv_mode} + +```abap +DATA: + LV_MODE TYPE RAW4. +``` + +#### LT_ROWS — data · unit 로컬 · L836-L836 {#decl-zfir0160f02-836-lt_rows} + +```abap + DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 +``` + +#### LS_ROWS — data · unit 로컬 · L837-L837 {#decl-zfir0160f02-837-ls_rows} + +```abap +DATA: + LS_ROWS TYPE LVC_S_ROW. +``` + +#### LV_CNT — data · unit 로컬 · L839-L839 {#decl-zfir0160f02-839-lv_cnt} + +```abap + DATA: LV_CNT TYPE STRING. +``` + +#### LT_ROWS — data · unit 로컬 · L896-L896 {#decl-zfir0160f02-896-lt_rows} + +```abap + DATA: LT_ROWS TYPE LVC_T_ROW. " ALV 제어: 테이블행 +``` + +#### LS_ROWS — data · unit 로컬 · L897-L897 {#decl-zfir0160f02-897-ls_rows} + +```abap +DATA: + LS_ROWS TYPE LVC_S_ROW. +``` + +#### LS_MOD_CELLS — data · unit 로컬 · L942-L942 {#decl-zfir0160f02-942-ls_mod_cells} + +```abap + DATA: LS_MOD_CELLS TYPE LVC_S_MODI. +``` + +#### — field-symbol · unit 로컬 · L946-L946 {#decl-zfir0160f02-946--fs_field-} + +```abap + FIELD-SYMBOLS: TYPE ANY. +``` + +#### LV_TABIX — data · unit 로컬 · L1157-L1157 {#decl-zfir0160f02-1157-lv_tabix} + +```abap + DATA: LV_TABIX TYPE SY-TABIX. +``` + +#### LT_SCOL — data · unit 로컬 · L1158-L1158 {#decl-zfir0160f02-1158-lt_scol} + +```abap +DATA: + LT_SCOL TYPE LVC_T_SCOL. +``` + +#### LV_TEXT — data · unit 로컬 · L1160-L1160 {#decl-zfir0160f02-1160-lv_text} + +```abap + DATA: LV_TEXT TYPE STRING. +``` + +#### LV_CNT1 — data · unit 로컬 · L1161-L1161 {#decl-zfir0160f02-1161-lv_cnt1} + +```abap +DATA: + LV_CNT1 TYPE STRING. " 성공 +``` + +#### LV_CNT2 — data · unit 로컬 · L1162-L1162 {#decl-zfir0160f02-1162-lv_cnt2} + +```abap +DATA: + LV_CNT2 TYPE STRING. " 실패 +``` + +#### SELECTFIELD — data · unit 로컬 · L1327-L1327 {#decl-zfir0160f02-1327-selectfield} + +```abap + DATA : SELECTFIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### IT_FIELDS — data · unit 로컬 · L1328-L1328 {#decl-zfir0160f02-1328-it_fields} + +```abap +DATA: + IT_FIELDS LIKE HELP_VALUE OCCURS 1 WITH HEADER LINE. +``` + +#### SELECT_VALUE — data · unit 로컬 · L1329-L1329 {#decl-zfir0160f02-1329-select_value} + +```abap +DATA: + SELECT_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### LD_TABIX — data · unit 로컬 · L1330-L1330 {#decl-zfir0160f02-1330-ld_tabix} + +```abap +DATA: + LD_TABIX LIKE SY-TABIX. +``` + +#### IT_USER — data · unit 로컬 · L1336-L1339 {#decl-zfir0160f02-1336-it_user} + +```abap + DATA : BEGIN OF IT_USER OCCURS 0, + BNAME LIKE USER_ADDRP-BNAME, + NAME_TEXT LIKE USER_ADDRP-NAME_LAST, + END OF IT_USER. +``` + +#### IT_VALUE — data · unit 로컬 · L1341-L1344 {#decl-zfir0160f02-1341-it_value} + +```abap + DATA : BEGIN OF IT_VALUE OCCURS 0, + TEXT1(12), + TEXT2(80), + END OF IT_VALUE. +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| INITIALIZATION | EVENT | ZFIR0160 L36-42 | 0 | INITIALIZATION 에서 SET_INIT 을 호출해 초기값을 설정하는 플러밍 블록이다. | +| AT SELECTION-SCREEN | EVENT | ZFIR0160 L43-50 | 0 | AT SELECTION-SCREEN 이벤트에서 GET_VARIANT(빈 FORM)를 호출하는 플러밍 블록이다. | +| START-OF-SELECTION | EVENT | ZFIR0160 L51-61 | 0 | START-OF-SELECTION 에서 SET_DATA(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 호출하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0160 L62-65 | 0 | END-OF-SELECTION 에서 권한 관리 화면 0100 을 호출하는 플러밍 블록이다. | +| LCL_EVENT_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZFIR0160C01 L67-69 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_ON_F4 | METHOD | ZFIR0160C01 L73-84 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_ON_TOOLBAR | METHOD | ZFIR0160C01 L88-92 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZFIR0160C01 L96-98 | 0 | | +| LCL_EVENT_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZFIR0160C01 L102-106 | 0 | | +| SET_INIT | FORM | ZFIR0160F01 L7-15 | 0 | 프로그램 ID 와 초기 모드(DISP 조회)를 설정하고 초기 레이아웃 변형을 불러오는 초기화 FORM이다. | +| SET_INIT_VARIANT | FORM | ZFIR0160F01 L20-29 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트 ID·사용자·핸들 0010 을 세팅하는 ALV 설정 FORM이다. | +| GET_INIT_VARIANT | FORM | ZFIR0160F01 L34-53 | 1 | 변형 키를 초기화하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형(Variant)을 조회하는 FORM 이다. | +| SET_F4_VARIANT | FORM | ZFIR0160F01 L58-80 | 1 | REUSE_ALV_VARIANT_F4 로 ALV 레이아웃 변형 F4 도움말을 제공하는 FORM이다. | +| GET_VARIANT | FORM | ZFIR0160F01 L85-86 | 0 | 본문이 비어 있는 GET_VARIANT FORM으로 아무 동작도 하지 않는다. | +| SET_DATA | FORM | ZFIR0160F01 L91-109 | 1 | 오류가 없을 때 진행 메시지를 띄우고 SELECT_PROCESS(ZFIT0160 조회)와 MODIFY_PROCESS(성명 보완)를 순서대로 수행해 그리드 데이터를 준비하는 FORM이다. | +| RUN_MSG_PROC | FORM | ZFIR0160F01 L119-126 | 0 | SAPGUI_PROGRESS_INDICATOR 로 진행 메시지를 표시하는 유틸리티 FORM이다. | +| SET_POP_MESSAGE | FORM | ZFIR0160F01 L137-159 | 1 | POPUP_TO_CONFIRM 으로 예/아니오 확인 팝업을 띄워 사용자 응답(P_ANSWER)을 돌려주는 FORM 이다. | +| SELECT_PROCESS | FORM | ZFIR0160F01 L164-170 | 0 | ZFIT0160_PROCESS 를 호출해 권한 데이터를 조회하는 단순 위임 FORM이다. | +| MODIFY_PROCESS | FORM | ZFIR0160F01 L174-195 | 1 | GT_MAIN 의 각 사용자 ID 에 대해 공용 풀(ZTR_POOL)의 USER_ADDRP_PROCESS 로 성명을 조회해 NAME 컬럼을 채우는 FORM이다. | +| POPUP_TO_CONFIRM | FORM | ZFIR0160F01 L203-239 | 1 | 저장/삭제/역분개 기능코드에 맞는 문구로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답을 돌려주는 FORM이다. | +| ZFIT0160_PROCESS | FORM | ZFIR0160F01 L243-256 | 1 | 권한 테이블 ZFIT0160 전체를 읽어 그리드 내부테이블 GT_MAIN 에 적재하는 FORM이다. | +| SET_ITAB_STYLE | FORM | ZFIR0160F02 L13-49 | 1 | GT_MAIN 각 행에 대해 SET_CELLTAB 으로 셀 편집 스타일을 계산해 CELLTAB 에 반영하는 FORM이다. | +| SET_LINE_ITAB_STYLE | FORM | ZFIR0160F02 L54-88 | 1 | 현재 GT_MAIN 행 하나에 SET_LINE_CELLTAB 으로 신규 행 셀 스타일을 계산해 CELLTAB 에 반영하는 FORM이다. | +| SET_CELLTAB | FORM | ZFIR0160F02 L94-131 | 1 | 변경 모드(CHAN)에서 필드카탈로그를 순회하며 ZFIR0090 컬럼만 편집 가능하고 나머지는 편집 불가로 셀 스타일(LVC_T_STYL)을 만드는 FORM이다. | +| SET_LINE_CELLTAB | FORM | ZFIR0160F02 L136-172 | 1 | 행 삽입/복사(INSE/COPY)된 신규 행에 대해 USERID·ZFIR0090 컬럼만 편집 가능하도록 셀 스타일(LVC_T_STYL)을 만드는 FORM이다. | +| SET_CONTAINER | FORM | ZFIR0160F02 L184-196 | 0 | 컨테이너 생성→툴바 제외→레이아웃→필드카탈로그→이벤트→ALV 표시 순으로 화면 0100 ALV 구성을 호출하는 디스패치 FORM이다. | +| SET_FRAME | FORM | ZFIR0160F02 L207-217 | 0 | 커스텀 컨테이너 CON_0100 과 ALV 그리드 객체를 생성하는 플러밍 FORM이다. | +| SET_VARIANT | FORM | ZFIR0160F02 L227-236 | 0 | ALV 변형 구조 GS_VARIANT 에 리포트 ID·사용자·핸들을 세팅하는 ALV 설정 FORM이다. | +| SET_TOOLBAR_EXCLUDE | FORM | ZFIR0160F02 L247-410 | 0 | ALV 표준 툴바에서 로컬 편집 기능(UNDO·복사·잘라내기·행 삽입/삭제/추가·붙여넣기·REFRESH)을 제외 목록 GT_EXCLUDE 에 담는 FORM이다. | +| SET_LAYOUT | FORM | ZFIR0160F02 L420-437 | 0 | ALV 레이아웃(열너비 최적화, 선택모드 D, 셀 스타일 CELLTAB, 색상 SCOL)을 설정하는 FORM이다. | +| SET_FIELDCATALOG | FORM | ZFIR0160F02 L447-460 | 0 | 화면 0100 용 필드카탈로그 GT_FCAT1 을 필드심볼에 할당하고 SET_FIELD01 로 정의하는 ALV 설정 FORM이다. | +| SET_FIELD01 | FORM | ZFIR0160F02 L471-502 | 0 | 권한 그리드의 필드카탈로그(USERID·NAME·ZFIR0090 체크박스)를 SET_FIELD 로 정의하는 ALV 설정 FORM이다. | +| SET_FIELD | FORM | ZFIR0160F02 L514-539 | 0 | 필드카탈로그 구조의 특정 필드를 동적 ASSIGN 으로 채우고 S/E 타입에 따라 초기화·APPEND 하는 필드카탈로그 빌더 유틸리티 FORM이다. | +| RUN_DISPLAY_ALV | FORM | ZFIR0160F02 L549-571 | 1 | 화면 0100 용 그리드(GO_GRID)와 GT_MAIN 을 할당하고 이벤트 등록 후 SET_TABLE_FOR_FIRST_DISPLAY 로 편집 가능한 ALV 를 최초 표시한다. | +| SET_EVENT_UCOMM | FORM | ZFIR0160F02 L582-614 | 0 | 그리드를 읽기전용으로 초기화하고 MODIFIED/ENTER 편집 이벤트를 등록하며 변경 감지·포커스를 설정하는 ALV 이벤트 등록 FORM이다. | +| SET_EVENT | FORM | ZFIR0160F02 L624-636 | 0 | 이벤트 핸들러 객체를 생성하고 F4·DATA_CHANGED·USER_COMMAND·TOOLBAR·DOUBLE_CLICK 핸들러를 그리드에 등록하는 플러밍 FORM이다. | +| SET_REFRESH | FORM | ZFIR0160F02 L647-670 | 0 | 프론트엔드 레이아웃을 재설정하고 REFRESH_TABLE_DISPLAY(행·열 안정)와 CL_GUI_CFW=>FLUSH 로 ALV 그리드를 갱신하는 플러밍 FORM이다. | +| TOOLBAR | FORM | ZFIR0160F02 L682-736 | 0 | ALV 툴바에 행 삽입·삭제·복사·저장 버튼을 추가하고 조회 모드(DISP)에서는 비활성화하는 툴바 설정 FORM이다. | +| USER_COMMAND | FORM | ZFIR0160F02 L746-788 | 1 | ALV 툴바 기능코드(INSE/DELE/COPY/SAVE)별로 행 삽입·삭제·복사·저장 처리를 분기하는 USER_COMMAND 핸들러이다. | +| SET_CHANGE | FORM | ZFIR0160F02 L799-823 | 1 | 변경/조회 토글(CHAN↔DISP)에 따라 ALV 그리드의 입력 가능 상태를 SET_READY_FOR_INPUT 으로 전환하는 FORM이다. | +| SET_DELETE_ROWS | FORM | ZFIR0160F02 L834-883 | 2 | 그리드에서 선택한 사용자 행을 GT_MAIN 과 권한 테이블 ZFIT0160 에서 즉시 삭제하고 건수를 메시지로 알리는 FORM이다. | +| SET_COPY_ROWS | FORM | ZFIR0160F02 L894-929 | 1 | 그리드에서 선택한 행들을 복사해 GT_MAIN 에 새 행으로 추가하고 편집 스타일을 부여하는 FORM이다. | +| DATA_CHANGED | FORM | ZFIR0160F02 L939-1028 | 1 | 편집 그리드 셀 변경(DATA_CHANGED) 시 변경값을 GT_MAIN 에 반영하고 ZINOUT 값을 검증해 오류면 프로토콜에 기록, 정상이면 셀을 갱신하는 FORM이다. | +| CHK_ZINOUT | FORM | ZFIR0160F02 L1042-1064 | 1 | 입출구분자(ZINOUT) 값이 허용 코드(11,12,13,14,51~55,57) 중 하나인지 검증하고 아니면 오류 플래그와 메시지를 돌려주는 FORM이다. | +| ADD_PROTOCAL_ENTRY | FORM | ZFIR0160F02 L1076-1096 | 1 | 편집 ALV 의 셀 검증 오류를 CL_ALV_CHANGED_DATA_PROTOCOL->ADD_PROTOCOL_ENTRY 로 오류 로그(메시지 00/E)에 추가하는 FORM 이다. | +| HANDLE_DOUBLE_CLICK | FORM | ZFIR0160F02 L1108-1122 | 0 | ALV 더블클릭 이벤트 핸들러로, 선택 행을 읽지만 실제 후속 처리(FB03 호출)는 주석 처리되어 동작이 없다. | +| CHK_DATA | FORM | ZFIR0160F02 L1133-1144 | 0 | 저장 전 데이터 검증용 FORM이나 검증 로직(개발항목 필수 체크)이 전부 주석 처리되어 현재는 아무 동작도 하지 않는다. | +| SET_SAVE | FORM | ZFIR0160F02 L1155-1234 | 1 | 편집한 권한 내역을 검증 통과 시에만 권한 테이블 ZFIT0160 에 일괄 저장하고 결과를 건수로 알린다. | +| GET_COLOR | FORM | ZFIR0160F02 L1245-1260 | 0 | DEVNUM 컬럼에 색상(COL 6)을 지정하는 ALV 셀 색상 설정 FORM이다. | +| ON_F4 | FORM | ZFIR0160F02 L1264-1288 | 0 | ALV ONF4 이벤트 핸들러로 USERID 필드일 때 F4_UNAME_PROCESS 를 호출하는 단순 분기 FORM이다. | +| F4_FIELD_ENTRY_PART | FORM | ZFIR0160F02 L1297-1309 | 0 | 편집 ALV 그리드의 USERID 컬럼에 F4 도움말을 등록하는 플러밍 FORM이다. | +| F4_UNAME_PROCESS | FORM | ZFIR0160F02 L1314-1417 | 3 | USERID 셀의 F4 도움말로 USER_ADDRP 사용자 목록을 HELP_VALUES_GET_NO_DD_NAME 팝업으로 보여주고 선택값과 성명을 GT_MAIN 행에 반영하는 FORM이다. | +| USER_COMMAND_0100_EXIT INPUT | MODULE | ZFIR0160I01 L10-45 | 2 | 화면 0100 종료 시 변경 여부(GV_CHK)를 확인해 저장 팝업을 띄우고 확인 시 검증·저장 후 화면을 빠져나가는 EXIT 모듈이다. | +| USER_COMMAND_0100 INPUT | MODULE | ZFIR0160I01 L53-63 | 0 | 화면 0100 PAI에서 CHAN(변경) 기능코드를 받아 SET_CHANGE 를 호출하는 단순 디스패치 모듈이다. | +| STATUS_0100 OUTPUT | MODULE | ZFIR0160O01 L10-29 | 0 | | +| SET_SCREEN_0100 OUTPUT | MODULE | ZFIR0160O01 L37-48 | 0 | | +| SET_GRID_0100 OUTPUT | MODULE | ZFIR0160O01 L56-75 | 0 | | diff --git a/wiki/programs/ZFIR0170.md b/wiki/programs/ZFIR0170.md new file mode 100644 index 0000000..1a31201 --- /dev/null +++ b/wiki/programs/ZFIR0170.md @@ -0,0 +1,3720 @@ +--- +type: abap-program +title: "ZFIR0170 — 장려금 구매 정산" +description: "제조사·공급업체에서 받는 판매장려금의 구매 정산 내역(CBO 테이블 ZFIT0170/0171)을 조회하는 리포트다. 손익센터와 처리상태(전체/오류)로 걸러 상세 리스트와 집계표 두 형태로 보여준다. ZFIR0030 의 거래유형 B59(판매장려금)와 연결되는 정산 확인 화면이다." +resource: "abap://ZFIR0170" +tags: ["장려금", "정산", "구매", "리포트", "채권관리", "FI", "구매정산", "처리상태", "정산월", "손익센터", "오류", "외부시스템오류", "지점매핑", "사업장", "거래유형", "계정매핑", "전표유형", "계정결정", "손익센터명", "사업장명"] +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: ["CEPCT", "CSKT", "DD07T", "J_1BBRANCH", "KNA1", "LTDX", "SKAT", "T007S", "TKA02", "USR01", "V_USERNAME", "ZFIT0040", "ZFIT0160", "ZFIT0170", "ZFIT0171"] +x-tables-write: [] +x-calls: ["BAL_DSP_LOG_DISPLAY", "BAL_LOG_CREATE", "BAL_LOG_MSG_ADD", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_TO_FOREIGN_CURRENCY", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DOMAIN_VALUE_GET", "DYNP_VALUES_READ", "F4IF_INT_TABLE_VALUE_REQUEST", "FB03", "FK03", "GUI_UPLOAD", "HELP_VALUES_GET_NO_DD_NAME", "HRVE_GET_TIME_BETWEEN_DATES", "ICON_CREATE", "KCD_EXCEL_OLE_TO_INT_CONVERT", "LVC_VARIANT_DEFAULT_GET", "LVC_VARIANT_EXISTENCE_CHECK", "LVC_VARIANT_F4", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "NUMERIC_CHECK", "POPUP_TO_CONFIRM_STEP", "P_TCODE", "REUSE_ALV_EVENTS_GET", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_DISPLAY", "REUSE_ALV_GRID_DISPLAY_LVC", "REUSE_ALV_HIERSEQ_LIST_DISPLAY", "RP_CALC_DATE_IN_INTERVAL", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SSF_CLOSE", "SSF_FUNCTION_MODULE_NAME", "SSF_OPEN", "TEXT_CONVERT_XLS_TO_SAP"] +x-code-hash: "d20f2a4e200b6a08623c4ee8b8976b6f9bdcad28d8721136d6b43526ec3e371d" +x-unit-count: 87 +x-chunk-count: 41 +x-declaration-count: 297 +--- + +## 업무 목적 + +제조사·공급업체에서 받는 판매장려금의 구매 정산 내역(CBO 테이블 ZFIT0170/0171)을 조회하는 리포트다. 손익센터와 처리상태(전체/오류)로 걸러 상세 리스트와 집계표 두 형태로 보여준다. ZFIR0030 의 거래유형 B59(판매장려금)와 연결되는 정산 확인 화면이다. + +## 주 흐름 + +1. ALV 설정과 도메인 텍스트를 준비한다 (ALV_SETTING → GET_DOMAIN) +2. 회사코드 권한을 검증한다 (AUTHORITY_BUKRS) +3. 손익센터·처리상태 조건으로 장려금 구매정산 데이터를 추출한다 (GET_ZFIT0170) +4. 고객·손익센터·코스트센터 텍스트를 붙인다 +5. 상세 리스트를 ALV 로 출력한다 (DISPLAY_LIST_DATA) +6. 집계표 형태로도 출력한다 (DISPLAY_SUM_DATA) + +## 핵심 내부테이블 + +- `GT_DATA` — 장려금 구매정산 내역 (채움: GET_ZFIT0170 / 소비: DISPLAY_LIST_DATA, DISPLAY_SUM_DATA) + +## 테이블 / 외부 호출 + +- read: CEPCT, CSKT, DD07T, J_1BBRANCH, KNA1, LTDX, SKAT, T007S, TKA02, USR01, V_USERNAME, ZFIT0040, ZFIT0160, ZFIT0170, ZFIT0171 +- write: - +- 외부 호출: BAL_DSP_LOG_DISPLAY, BAL_LOG_CREATE, BAL_LOG_MSG_ADD, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_TO_FOREIGN_CURRENCY, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DOMAIN_VALUE_GET, DYNP_VALUES_READ, F4IF_INT_TABLE_VALUE_REQUEST, FB03, FK03, GUI_UPLOAD, HELP_VALUES_GET_NO_DD_NAME, HRVE_GET_TIME_BETWEEN_DATES, ICON_CREATE, KCD_EXCEL_OLE_TO_INT_CONVERT, LVC_VARIANT_DEFAULT_GET, LVC_VARIANT_EXISTENCE_CHECK, LVC_VARIANT_F4, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, NUMERIC_CHECK, POPUP_TO_CONFIRM_STEP, P_TCODE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE + +## 로직 조각 (41건 / unit 36개) + +LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. +테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. + +### EVENT INITIALIZATION — `ZFIR0170` L32-L50 (19줄) + +*초기화 시 ALV 기본 설정과 도메인 텍스트를 준비하고 조회 기간(P_SPMON)을 전월로 기본 세팅한다.* + +> 이 unit 의 조각 1개가 3/19줄(16%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 현재 월에서 1을 빼 전월을 구하고 연도와 결합해 조회 기간 파라미터 P_SPMON 의 기본값을 전월(YYYYMM)로 설정한다. + +```abap + 39| GV_MONTH = SY-DATUM+4(2). + 40| GV_MONTH = GV_MONTH - 1. + 41| CONCATENATE SY-DATUM(4) GV_MONTH INTO P_SPMON. +``` + +- **EN**: Default the period parameter P_SPMON to the previous month (YYYYMM) from the system date. +- 업무 키워드: 전월 기본값, 조회 기간, 초기값 +- English: Default Period, Previous Month +- 정의부(복사 시 함께 필요): [`GV_MONTH`](#decl-zfir0170top-80-gv_month), [`P_SPMON`](#decl-zfir0170top-98-p_spmon) +- 위치: `abap://ZFIR0170/ZFIR0170#L39-L41` · confidence 0.8 · `ZFIR0170#ZFIR0170#EVENT#INITIALIZATION#C1` + +### FORM GET_DOMAIN — `ZFIR0170F01` L9-L32 (24줄) + +*발생/취소구분(ZCFLAG)과 거래유형(ZDBTYPE3) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다.* + +> 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 도메인 ZCFLAG(발생/취소 구분)와 ZDBTYPE3(거래유형)의 활성 고정값 텍스트를 로그온 언어로 DD07T 에서 조회해 GT_DOMAIN 에 적재하여 ALV 텍스트 표시에 사용한다. + +```abap + 13| SELECT DOMNAME + 14| DOMVALUE_L + 15| DDTEXT + 16| INTO TABLE GT_DOMAIN + 17| FROM DD07T + 18| WHERE DD07T~DOMNAME EQ 'ZCFLAG' + 19| AND DD07T~DDLANGUAGE EQ SY-LANGU + 20| AND DD07T~AS4LOCAL EQ C_A. + 21| + 22| * 거래유형(ZDBTYPE3) + 23| SELECT DOMNAME + 24| DOMVALUE_L + 25| DDTEXT + 26| APPENDING TABLE GT_DOMAIN + 27| FROM DD07T + 28| WHERE DD07T~DOMNAME EQ 'ZDBTYPE3' + 29| AND DD07T~DDLANGUAGE EQ SY-LANGU + 30| AND DD07T~AS4LOCAL EQ C_A. +``` + +- **EN**: Read the fixed value texts of domains ZCFLAG and ZDBTYPE3 from DD07T in the logon language into GT_DOMAIN for display. +- 테이블(파서): read [DD07T](/tables/DD07T.md) / write - +- SAP 객체: DD07T +- 업무 키워드: 도메인 고정값, 텍스트 조회, 발생/취소 구분, 거래유형 +- English: Domain Fixed Values, DD07T, Text +- 정의부(복사 시 함께 필요): [`GT_DOMAIN`](#decl-zfir0170top-71-gt_domain), [`C_A`](#decl-zficom-208-c_a) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L13-L30` · confidence 0.9 · `ZFIR0170#ZFIR0170F01#FORM#GET_DOMAIN#C1` + +### EVENT START-OF-SELECTION — `ZFIR0170` L51-L59 (9줄) + +*START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다.* + +> 이 unit 의 조각 1개가 3/9줄(33%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 공용 AUTHORITY_BUKRS 로 선택한 회사코드(P_BUKRS)에 대한 사용자 권한(ZFIT0160 기반)을 검증한 뒤 GET_DATA 로 수불부 I/F 이력을 조회한다. + +```abap + 53| PERFORM AUTHORITY_BUKRS USING P_BUKRS. + 54| + 55| PERFORM GET_DATA. +``` + +- **EN**: Check the user's authorization for the selected company code via AUTHORITY_BUKRS and then extract the interface history with GET_DATA. +- 호출(파서): AUTHORITY_BUKRS, GET_DATA +- SAP 객체: ZFIT0160 +- 업무 키워드: 회사코드 권한 체크, 권한 검증, 데이터 조회 +- English: authorization check, company code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs) +- 위치: `abap://ZFIR0170/ZFIR0170#L53-L55` · confidence 0.8 · `ZFIR0170#ZFIR0170#EVENT#START-OF-SELECTION#C1` + +### FORM AUTHORITY_BUKRS — `ZFICOM` L528-L536 (9줄) + +*회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다.* + +> 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 전표 권한 오브젝트 F_BKPF_BUK 로 해당 회사코드 접근 권한을 검사하고, 권한이 없으면 메시지를 띄운 뒤 리스트 처리를 즉시 중단한다. + +```abap + 529| AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' + 530| ID 'BUKRS' FIELD P_BUKRS. + 531| IF SY-SUBRC NE 0. + 532| MESSAGE I240(FZ) WITH P_BUKRS. + 533| GF_CHECK = C_X. + 534| LEAVE LIST-PROCESSING. + 535| ENDIF. +``` + +- **EN**: Checks company-code authorization via F_BKPF_BUK and aborts list processing when the user lacks it. +- SAP 객체: F_BKPF_BUK, T001, BUKRS +- 업무 키워드: 권한체크, 회사코드권한, 권한오브젝트, 접근제어, 처리중단 +- English: authority check, company code authorization, F_BKPF_BUK, access control +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0170/ZFICOM#L529-L535` · confidence 0.93 · `ZFIR0170#ZFICOM#FORM#AUTHORITY_BUKRS#C1` + +### FORM GET_DATA — `ZFIR0170F01` L38-L52 (15줄) + +*장려금 구매정산 내역(ZFIT0170)을 추출한 뒤 라디오버튼(P_R1)에 따라 리스트 또는 집계표 데이터로 가공한다.* + +> 이 unit 의 조각 1개가 9/15줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] GET_ZFIT0170 으로 장려금 구매정산 데이터를 조회하고 리스트 옵션(P_R1)이면 DISPLAY_LIST_DATA, 아니면 DISPLAY_SUM_DATA 로 집계표를 만든다. + +```abap + 41| PERFORM GET_ZFIT0170. + 42| + 43| * 리스트 + 44| IF P_R1 EQ C_X. + 45| PERFORM DISPLAY_LIST_DATA. + 46| * 집계표 + 47| ELSE. + 48| PERFORM DISPLAY_SUM_DATA. + 49| ENDIF. +``` + +- **EN**: Fetch incentive settlement data from ZFIT0170 and build either the list or the summary output depending on the radio button. +- 호출(파서): GET_ZFIT0170, DISPLAY_LIST_DATA, DISPLAY_SUM_DATA +- SAP 객체: ZFIT0170 +- 업무 키워드: 장려금 구매정산, 리스트, 집계표, 출력 유형 +- English: Incentive Settlement, List, Summary +- 정의부(복사 시 함께 필요): [`P_R1`](#decl-zfir0170top-106-p_r1), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L41-L49` · confidence 0.8 · `ZFIR0170#ZFIR0170F01#FORM#GET_DATA#C1` + +### FORM GET_ZFIT0170 — `ZFIR0170F01` L58-L172 (115줄) + +*장려금 구매정산 내역을 처리상태별로 읽고, 지점 매핑과 거래유형별 계정을 채운 뒤 표시용 텍스트를 붙인다.* + +> 이 unit 의 조각 3개가 102/115줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 선택한 처리상태(전체/성공 S/오류 E+F)를 레인지로 만들어, 회사코드·정산월·손익센터·고객 조건으로 장려금 정산 테이블 ZFIT0170 을 조회한다. 오류 선택 시 SAP 오류(E)와 외부시스템(HISIS) 오류(F)를 함께 잡는다. + +```abap + 65| R_STATS-SIGN = C_I. + 66| R_STATS-OPTION = C_EQ. + 67| CASE C_X. + 68| WHEN P_RA. + 69| WHEN P_RS. + 70| R_STATS-LOW = C_S. + 71| APPEND R_STATS. + 72| WHEN P_RE. + 73| R_STATS-LOW = C_E. + 74| APPEND R_STATS. + 75| R_STATS-LOW = C_F. + 76| APPEND R_STATS. + 77| ENDCASE. + 78| + 79| SELECT * + 80| INTO TABLE GT_Z0170 + 81| FROM ZFIT0170 + 82| WHERE BUKRS EQ P_BUKRS + 83| AND SPMON EQ P_SPMON + 84| AND PRCTR IN S_PRCTR + 85| AND KUNNR IN S_KUNNR + 86| AND STATS IN R_STATS. + 87| + 88| CHECK GT_Z0170[] IS NOT INITIAL. +``` + +- **EN**: Builds a status range (success S, errors E and F) and reads rebate settlement records from ZFIT0170 by period, profit center and customer. +- 테이블(파서): read [ZFIT0170](/tables/ZFIT0170.md) / write - +- SAP 객체: ZFIT0170, SPMON, PRCTR, KUNNR, STATS +- 업무 키워드: 장려금, 구매정산, 처리상태, 정산월, 손익센터, 오류, 외부시스템오류 +- English: rebate, purchase settlement, processing status, period, profit center, error +- 정의부(복사 시 함께 필요): [`R_STATS`](#decl-zfir0170top-77-r_stats), [`C_I`](#decl-zficom-216-c_i), [`C_EQ`](#decl-zficom-244-c_eq), [`C_X`](#decl-zficom-231-c_x), [`P_RA`](#decl-zfir0170top-116-p_ra), [`P_RS`](#decl-zfir0170top-118-p_rs), [`C_S`](#decl-zficom-226-c_s), [`P_RE`](#decl-zfir0170top-120-p_re), [`C_E`](#decl-zficom-212-c_e), [`C_F`](#decl-zficom-213-c_f), [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_Z0170`](#decl-zfir0170top-44-gt_z0170) 외 4건 +- 위치: `abap://ZFIR0170/ZFIR0170F01#L65-L88` · confidence 0.87 · `ZFIR0170#ZFIR0170F01#FORM#GET_ZFIT0170#C1` + +#### [aggregation] 지점코드 앞 7자리로 ZFIT0040 매핑을 읽어 손익센터·사업장을 채우고, 거래유형별 계정매핑 ZFIT0171 에서 전표유형·차변계정·대변계정을 가져와 각 정산 건에 반영한다. HISIS 오류(F) 건은 건너뛴다. + +```abap + 91| SELECT * + 92| INTO TABLE GT_Z0040 + 93| FROM ZFIT0040 + 94| FOR ALL ENTRIES IN GT_Z0170 + 95| WHERE BUKRS EQ P_BUKRS + 96| AND GSBER2 EQ GT_Z0170-GSBER2(7). + 97| + 98| * 거래유형별 계정 매핑내역 추출 + 99| SELECT * + 100| INTO TABLE GT_Z0171 + 101| FROM ZFIT0171 + 102| FOR ALL ENTRIES IN GT_Z0170 + 103| WHERE BUKRS EQ P_BUKRS + 104| AND BTYPE EQ GT_Z0170-BTYPE. + 105| + 106| LOOP AT GT_Z0170. + 107| CHECK GT_Z0170-STATS NE C_F. "HISIS 오류이외.. + 108| * 지점에 매핑된 값 + 109| READ TABLE GT_Z0040 WITH KEY BUKRS = P_BUKRS + 110| GSBER2 = GT_Z0170-GSBER2(7). + 111| IF SY-SUBRC EQ 0. + 112| GT_Z0170-PRCTR = GT_Z0040-PRCTR. + 113| GT_Z0170-BUPLA = GT_Z0040-BUPLA. + 114| ENDIF. + 115| * 거래유형별 계정 + 116| READ TABLE GT_Z0171 WITH KEY BUKRS = P_BUKRS + 117| BTYPE = GT_Z0170-BTYPE. + 118| IF SY-SUBRC EQ 0. + 119| GT_Z0170-BLART = GT_Z0171-BLART. + 120| GT_Z0170-HKONT = GT_Z0171-HKONT. + 121| GT_Z0170-HKONT2 = GT_Z0171-HKONT2. + 122| ENDIF. + 123| + 124| MODIFY GT_Z0170. + 125| ENDLOOP. +``` + +- **EN**: Fills profit center and business place from the branch mapping (ZFIT0040, first 7 chars) and the document type plus debit/credit accounts from ZFIT0171, skipping external-system error rows. +- 테이블(파서): read [ZFIT0040](/tables/ZFIT0040.md), [ZFIT0171](/tables/ZFIT0171.md) / write - +- SAP 객체: ZFIT0040, ZFIT0171, GSBER2, BLART, HKONT, PRCTR, BUPLA +- 업무 키워드: 지점매핑, 손익센터, 사업장, 거래유형, 계정매핑, 전표유형, 계정결정 +- English: branch mapping, profit center, business place, transaction type, account mapping, document type +- 정의부(복사 시 함께 필요): [`ZFIT0040`](#decl-zfir0170top-7-zfit0040), [`GT_Z0040`](#decl-zfir0170top-47-gt_z0040), [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_Z0170`](#decl-zfir0170top-44-gt_z0170), [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs), [`ZFIT0171`](#decl-zfir0170top-7-zfit0171), [`GT_Z0171`](#decl-zfir0170top-46-gt_z0171), [`C_F`](#decl-zficom-213-c_f) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L91-L125` · confidence 0.85 · `ZFIR0170#ZFIR0170F01#FORM#GET_ZFIT0170#C2` + +#### [sql_select] 관리회계영역(TKA02)을 읽고 손익센터명·사업장명·고객명·지점고객명·세금코드명을 FOR ALL ENTRIES 로 붙여 화면 표시용 텍스트를 확보한다. + +```abap + 127| SELECT SINGLE * + 128| FROM TKA02 + 129| WHERE BUKRS EQ P_BUKRS. + 130| + 131| * 손익센터명 + 132| SELECT PRCTR KTEXT + 133| INTO TABLE GT_CEPCT + 134| FROM CEPCT + 135| FOR ALL ENTRIES IN GT_Z0170 + 136| WHERE SPRAS EQ SY-LANGU + 137| AND KOKRS EQ TKA02-KOKRS + 138| AND PRCTR EQ GT_Z0170-PRCTR. + 139| + 140| * 사업장명 + 141| SELECT BRANCH NAME + 142| INTO TABLE GT_BRANCH + 143| FROM J_1BBRANCH + 144| FOR ALL ENTRIES IN GT_Z0170 + 145| WHERE BUKRS EQ P_BUKRS + 146| AND BRANCH EQ GT_Z0170-BUPLA. + 147| + 148| * 고객명 + 149| SELECT KUNNR NAME1 + 150| INTO TABLE GT_KNA1 + 151| FROM KNA1 + 152| FOR ALL ENTRIES IN GT_Z0170 + 153| WHERE KUNNR EQ GT_Z0170-KUNNR. + 154| + 155| * 지점고객명 + 156| SELECT KUNNR NAME1 + 157| APPENDING TABLE GT_KNA1 + 158| FROM KNA1 + 159| FOR ALL ENTRIES IN GT_Z0170 + 160| WHERE KUNNR EQ GT_Z0170-KUNNR2. + 161| + 162| * 세금코드명 + 163| SELECT MWSKZ TEXT1 + 164| INTO TABLE GT_T007S + 165| FROM T007S + 166| FOR ALL ENTRIES IN GT_Z0170 + 167| WHERE SPRAS EQ SY-LANGU + 168| AND KALSM EQ C_KALSM + 169| AND MWSKZ EQ GT_Z0170-MWSKZ. +``` + +- **EN**: Enriches the settlement rows with profit center, business place, customer and tax-code texts for display. +- 테이블(파서): read [TKA02](/tables/TKA02.md), [CEPCT](/tables/CEPCT.md), [J_1BBRANCH](/tables/J_1BBRANCH.md), [KNA1](/tables/KNA1.md), [T007S](/tables/T007S.md) / write - +- SAP 객체: TKA02, CEPCT, J_1BBRANCH, KNA1, T007S, MWSKZ +- 업무 키워드: 손익센터명, 사업장명, 고객명, 세금코드, 텍스트보강 +- English: profit center text, business place name, customer name, tax code text, text enrichment +- 정의부(복사 시 함께 필요): [`TKA02`](#decl-zfir0170top-7-tka02), [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs), [`GT_CEPCT`](#decl-zfir0170top-51-gt_cepct), [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_Z0170`](#decl-zfir0170top-44-gt_z0170), [`GT_BRANCH`](#decl-zfir0170top-56-gt_branch), [`GT_KNA1`](#decl-zfir0170top-61-gt_kna1), [`KNA1`](#decl-zficom-38-kna1), [`GT_T007S`](#decl-zfir0170top-66-gt_t007s), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L127-L169` · confidence 0.88 · `ZFIR0170#ZFIR0170F01#FORM#GET_ZFIT0170#C3` + +### FORM DISPLAY_LIST_DATA — `ZFIR0170F01` L178-L238 (61줄) + +*장려금 구매정산 내역(GT_Z0170)을 리스트 출력용 GT_DATA 로 변환하며 상태 아이콘과 발생/취소·거래유형·손익센터·사업장·고객·세금코드 텍스트를 붙인다.* + +> 이 unit 의 조각 1개가 56/61줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [calculation] 각 정산 건에 처리 상태(S 성공/F 실패/기타)에 따라 녹·적·황 신호등 아이콘을 넣고 도메인 텍스트(ZDCFLAG 발생/취소, ZDBTYPE3 거래유형)·손익센터명(CEPCT)·사업장명(J_1BBRANCH)·고객명·지점고객명(KNA1)·세금코드명(T007S)을 미리 조회된 테이블에서 READ 해 채운 뒤 POOL_NO 로 정렬하고 건수를 센다. + +```abap + 181| LOOP AT GT_Z0170. + 182| MOVE-CORRESPONDING GT_Z0170 TO GT_DATA. + 183| + 184| * 상태 아이콘 + 185| IF GT_Z0170-STATS EQ C_S. + 186| GT_DATA-CICON = ICON_GREEN_LIGHT. + 187| ELSEIF GT_Z0170-STATS EQ C_F. + 188| GT_DATA-CICON = ICON_RED_LIGHT. + 189| ELSE. + 190| GT_DATA-CICON = ICON_YELLOW_LIGHT. + 191| ENDIF. + 192| + 193| * 발생/취소구분 + 194| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDCFLAG' + 195| DOMVALUE_L = GT_Z0170-CFLAG. + 196| IF SY-SUBRC EQ 0. + 197| GT_DATA-CFLAG_T = GT_DOMAIN-DDTEXT. + 198| ENDIF. + 199| * 거래유형명 + 200| READ TABLE GT_DOMAIN WITH KEY DOMNAME = 'ZDBTYPE3' + 201| DOMVALUE_L = GT_Z0170-BTYPE. + 202| IF SY-SUBRC EQ 0. + 203| GT_DATA-BTYPE_T = GT_DOMAIN-DDTEXT. + 204| ENDIF. + 205| * 손익센터명 + 206| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0170-PRCTR. + 207| IF SY-SUBRC EQ 0. + 208| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 209| ENDIF. + 210| * 사업장명 + 211| READ TABLE GT_BRANCH WITH KEY BRANCH = GT_Z0170-BUPLA. + 212| IF SY-SUBRC EQ 0. + 213| GT_DATA-BUPLA_T = GT_BRANCH-NAME. + 214| ENDIF. + 215| * 고객명 + 216| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0170-KUNNR. + 217| IF SY-SUBRC EQ 0. + 218| GT_DATA-KUNNR_T = GT_KNA1-NAME1. + 219| ENDIF. + 220| * 지점고객명 + 221| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0170-KUNNR2. + 222| IF SY-SUBRC EQ 0. + 223| GT_DATA-KUNNR2_T = GT_KNA1-NAME1. + 224| ENDIF. + 225| * 세금코드명 + 226| READ TABLE GT_T007S WITH KEY MWSKZ = GT_Z0170-MWSKZ. + 227| IF SY-SUBRC EQ 0. + 228| GT_DATA-MWSKZ_T = GT_T007S-TEXT1. + 229| ENDIF. + 230| + 231| APPEND GT_DATA. CLEAR GT_DATA. + 232| ENDLOOP. + 233| + 234| SORT GT_DATA BY POOL_NO. + 235| + 236| DESCRIBE TABLE GT_DATA LINES GV_DBCNT. +``` + +- **EN**: For each settlement record set a traffic-light status icon and look up descriptive texts (domain values, profit center, business place, customer, branch customer, tax code) into GT_DATA, then sort by POOL_NO. +- SAP 객체: CEPCT, J_1BBRANCH, KNA1, T007S +- 업무 키워드: 장려금 구매정산, 상태 아이콘, 손익센터명, 사업장명, 고객명, 세금코드명 +- English: Incentive Settlement, Status Icon, Profit Center, Business Place, Tax Code, List Output +- 정의부(복사 시 함께 필요): [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_Z0170`](#decl-zfir0170top-44-gt_z0170), [`GT_DATA`](#decl-zfir0170top-14-gt_data), [`C_S`](#decl-zficom-226-c_s), [`C_F`](#decl-zficom-213-c_f), [`GT_DOMAIN`](#decl-zfir0170top-71-gt_domain), [`GT_CEPCT`](#decl-zfir0170top-51-gt_cepct), [`GT_BRANCH`](#decl-zfir0170top-56-gt_branch), [`GT_KNA1`](#decl-zfir0170top-61-gt_kna1), [`GT_T007S`](#decl-zfir0170top-66-gt_t007s), [`GV_DBCNT`](#decl-zficom-68-gv_dbcnt) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L181-L236` · confidence 0.85 · `ZFIR0170#ZFIR0170F01#FORM#DISPLAY_LIST_DATA#C1` + +### FORM DISPLAY_SUM_DATA — `ZFIR0170F01` L244-L280 (37줄) + +*장려금 구매정산 내역(GT_Z0170)을 월·손익센터·고객 단위로 거래유형(D01/D03/D05)별 금액과 합계로 집계하여 집계표용 GT_DATA 를 만든다.* + +> 이 unit 의 조각 1개가 32/37줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [aggregation] 취소(역분개, BTYPE='C') 건을 제외하고 월(SPMON)·손익센터(PRCTR, CEPCT 텍스트)·고객(KNA1 명) 키로 거래유형 D01/D03/D05 별 현지통화 금액(DMBTR_C)을 해당 컬럼에 넣고 TOTAL 을 계산하여 COLLECT 로 집계한다. + +```abap + 247| LOOP AT GT_Z0170. + 248| * 취소건 즉 역분개 건은 제외 + 249| CHECK GT_Z0170-BTYPE NE C_C. + 250| + 251| GT_DATA-SPMON = GT_Z0170-SPMON. + 252| GT_DATA-PRCTR = GT_Z0170-PRCTR. + 253| * 손익센터명 + 254| READ TABLE GT_CEPCT WITH KEY PRCTR = GT_Z0170-PRCTR. + 255| IF SY-SUBRC EQ 0. + 256| GT_DATA-PRCTR_T = GT_CEPCT-KTEXT. + 257| ENDIF. + 258| GT_DATA-KUNNR = GT_DATA-KUNNR. + 259| * 고객명 + 260| READ TABLE GT_KNA1 WITH KEY KUNNR = GT_Z0170-KUNNR. + 261| IF SY-SUBRC EQ 0. + 262| GT_DATA-KUNNR_T = GT_KNA1-NAME1. + 263| ENDIF. + 264| * 거래유형에 따라.. + 265| CASE GT_Z0170-BTYPE. + 266| WHEN 'D01'. + 267| GT_DATA-AMT_D01 = GT_Z0170-DMBTR_C. + 268| WHEN 'D03'. + 269| GT_DATA-AMT_D03 = GT_Z0170-DMBTR_C. + 270| WHEN 'D05'. + 271| GT_DATA-AMT_D05 = GT_Z0170-DMBTR_C. + 272| ENDCASE. + 273| + 274| GT_DATA-TOTAL = + 275| GT_DATA-AMT_D01 + GT_DATA-AMT_D03 + GT_DATA-AMT_D05. + 276| + 277| COLLECT GT_DATA. CLEAR GT_DATA. + 278| ENDLOOP. +``` + +- **EN**: Excluding reversal records, aggregate settlement amounts per month, profit center and customer into columns by transaction type D01/D03/D05 plus a total using COLLECT. +- SAP 객체: CEPCT, KNA1 +- 업무 키워드: 장려금 구매정산, 집계표, 손익센터, 거래유형, 역분개 제외, 월별 집계 +- English: Incentive Settlement, Profit Center, Transaction Type, COLLECT, Summary +- 정의부(복사 시 함께 필요): [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_Z0170`](#decl-zfir0170top-44-gt_z0170), [`C_C`](#decl-zficom-210-c_c), [`GT_DATA`](#decl-zfir0170top-14-gt_data), [`GT_CEPCT`](#decl-zfir0170top-51-gt_cepct), [`GT_KNA1`](#decl-zfir0170top-61-gt_kna1) +- 위치: `abap://ZFIR0170/ZFIR0170F01#L247-L278` · confidence 0.85 · `ZFIR0170#ZFIR0170F01#FORM#DISPLAY_SUM_DATA#C1` + +### EVENT END-OF-SELECTION — `ZFIR0170` L60-L66 (7줄) + +*END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다.* + +> 이 unit 의 조각 1개가 6/7줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 자가소비 이력 데이터가 없으면 '데이터 없음' 메시지(S003)를 내고 리스트 처리를 종료하며, 있으면 ALV 화면 0100 을 호출한다. + +```abap + 61| IF GT_DATA[] IS INITIAL. + 62| MESSAGE S003. + 63| LEAVE LIST-PROCESSING. + 64| ELSE. + 65| CALL SCREEN 0100. + 66| ENDIF. +``` + +- **EN**: If no data was found issue message S003 and leave, otherwise call screen 0100 to show the ALV. +- 호출(파서): 0100 +- 업무 키워드: 결과 없음, 화면 호출 +- English: no data, call screen +- 정의부(복사 시 함께 필요): [`ZFIT0170`](#decl-zfir0170top-7-zfit0170), [`GT_DATA`](#decl-zfir0170top-14-gt_data) +- 위치: `abap://ZFIR0170/ZFIR0170#L61-L66` · confidence 0.8 · `ZFIR0170#ZFIR0170#EVENT#END-OF-SELECTION#C1` + +### FORM NAME_SELECT — `ZFICOM` L378-L387 (10줄) + +*사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/10줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] V_USERNAME 뷰에서 사용자 ID 의 이름(NAME_TEXT)을 조회하고 이름이 비어 있으면 사용자 ID 를 그대로 돌려준다. + +```abap + 380| SELECT SINGLE V_USERNAME~NAME_TEXT + 381| INTO P_NAMET + 382| FROM V_USERNAME + 383| WHERE V_USERNAME~BNAME EQ P_UNAME. + 384| IF SY-DBCNT GT 0 AND P_NAMET IS INITIAL. + 385| P_NAMET = P_UNAME. + 386| ENDIF. +``` + +- **EN**: Reads the user's full name from view V_USERNAME by user ID, falling back to the user ID when the name is empty. +- 테이블(파서): read [V_USERNAME](/tables/V_USERNAME.md) / write - +- SAP 객체: V_USERNAME, USR21, ADRP +- 업무 키워드: 사용자 이름, 사용자 ID, 담당자명 +- English: User Name, V_USERNAME, User Master +- 선언을 못 찾은 이름: V_USERNAME (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0170/ZFICOM#L380-L386` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#NAME_SELECT#C1` + +### FORM SELECT_CSKT — `ZFICOM` L397-L408 (12줄) + +*관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 7/12줄(58%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] CSKT 에서 영어 언어 기준 관리회계영역(KOKRS)·코스트센터(KOSTL)의 현재 유효(DATBI ≥ 오늘)한 명칭 KTEXT 를 단건 조회한다. + +```abap + 401| SELECT SINGLE CSKT~KTEXT + 402| INTO P_KTEXT + 403| FROM CSKT + 404| WHERE CSKT~SPRAS EQ 'E' "SY-LANGU + 405| AND CSKT~KOKRS EQ P_KOKRS + 406| AND CSKT~KOSTL EQ P_KOSTL + 407| AND CSKT~DATBI GE SY-DATLO. +``` + +- **EN**: Reads the currently valid cost center name KTEXT from CSKT for the controlling area and cost center (language 'E', DATBI >= today). +- 테이블(파서): read [CSKT](/tables/CSKT.md) / write - +- SAP 객체: CSKT +- 업무 키워드: 코스트센터, 코스트센터명, 관리회계영역, 유효기간 +- English: Cost Center, Controlling Area, CSKT +- 위치: `abap://ZFIR0170/ZFICOM#L401-L407` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#SELECT_CSKT#C1` + +### FORM SELECT_J_1BBRANCH — `ZFICOM` L419-L428 (10줄) + +*회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 회사코드와 사업장 코드로 J_1BBRANCH 에서 사업장명(NAME)을 단건 조회한다. + +```abap + 423| SELECT SINGLE J_1BBRANCH~NAME + 424| INTO P_NAME + 425| FROM J_1BBRANCH + 426| WHERE J_1BBRANCH~BUKRS EQ P_BUKRS + 427| AND J_1BBRANCH~BRANCH EQ P_BRANCH. +``` + +- **EN**: Reads the business place name from J_1BBRANCH for the company code and branch. +- 테이블(파서): read [J_1BBRANCH](/tables/J_1BBRANCH.md) / write - +- SAP 객체: J_1BBRANCH +- 업무 키워드: 사업장, 사업장명, 회사코드, 세금계산서 +- English: Business Place, Branch, Company Code +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs) +- 선언을 못 찾은 이름: J_1BBRANCH (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIR0170/ZFICOM#L423-L427` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#SELECT_J_1BBRANCH#C1` + +### FORM SELECT_SKAT — `ZFICOM` L438-L464 (27줄) + +*G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 파라미터 ID ZSP 또는 로그온 언어로 언어를 정한 뒤 텍스트 유형(L/S)에 따라 SKAT 에서 계정과목 장문(TXT50) 또는 단문(TXT20)을 계정표(C_KTOPL) 기준으로 단건 조회한다. + +```abap + 443| GET PARAMETER ID 'ZSP' FIELD L_LANG. + 444| IF L_LANG IS INITIAL. + 445| L_LANG = SY-LANGU. + 446| ENDIF. + 447| * Long text + 448| IF P_TYPE EQ C_L. + 449| SELECT SINGLE SKAT~TXT50 + 450| INTO P_TXT20 + 451| FROM SKAT + 452| WHERE SKAT~SPRAS EQ L_LANG + 453| AND SKAT~KTOPL EQ C_KTOPL + 454| AND SKAT~SAKNR EQ P_SAKNR. + 455| * Short text + 456| ELSE. + 457| SELECT SINGLE SKAT~TXT20 + 458| INTO P_TXT20 + 459| FROM SKAT + 460| WHERE SKAT~SPRAS EQ L_LANG + 461| AND SKAT~KTOPL EQ C_KTOPL + 462| AND SKAT~SAKNR EQ P_SAKNR. + 463| ENDIF. +``` + +- **EN**: Determines the language (parameter ZSP or SY-LANGU) and reads the G/L account long text TXT50 or short text TXT20 from SKAT for the chart of accounts. +- 테이블(파서): read [SKAT](/tables/SKAT.md) / write - +- SAP 객체: SKAT +- 업무 키워드: 계정과목 텍스트, G/L 계정, 계정표, 언어 +- English: G/L Account, Chart of Accounts, Account Text, SKAT +- 정의부(복사 시 함께 필요): [`L_LANG`](#decl-zficom-441-l_lang), [`C_L`](#decl-zficom-219-c_l), [`C_KTOPL`](#decl-zficom-202-c_ktopl) +- 위치: `abap://ZFIR0170/ZFICOM#L443-L463` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#SELECT_SKAT#C1` + +### FORM CHECK_CONFIRM_STEP — `ZFICOM` L476-L491 (16줄) + +*제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/16줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 482| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 483| EXPORTING + 484| DEFAULTOPTION = P_BUTTON + 485| TEXTLINE1 = P_MESS1 + 486| TITEL = P_TITLE + 487| CANCEL_DISPLAY = P_CANCEL + 488| IMPORTING + 489| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0170/ZFICOM#L482-L489` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#CHECK_CONFIRM_STEP#C1` + +### FORM CHECK_CONFIRM_STEP_2 — `ZFICOM` L503-L520 (18줄) + +*제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] POPUP_TO_CONFIRM_STEP 으로 제목·메시지 2줄·취소버튼 여부·기본버튼을 지정한 확인 팝업을 띄우고 사용자의 응답을 GF_ANSWER 에 받는다. + +```abap + 510| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' + 511| EXPORTING + 512| DEFAULTOPTION = P_BUTTON + 513| TEXTLINE1 = P_MESS1 + 514| TEXTLINE2 = P_MESS2 + 515| TITEL = P_TITLE + 516| CANCEL_DISPLAY = P_CANCEL + 517| IMPORTING + 518| ANSWER = GF_ANSWER. +``` + +- **EN**: Shows a confirmation popup via POPUP_TO_CONFIRM_STEP with two text lines and returns the user's answer in GF_ANSWER. +- 호출(파서): POPUP_TO_CONFIRM_STEP +- SAP 객체: POPUP_TO_CONFIRM_STEP +- 업무 키워드: 확인 팝업, 사용자 확인, 실행 확인 +- English: Confirmation Popup, POPUP_TO_CONFIRM_STEP +- 정의부(복사 시 함께 필요): [`GF_ANSWER`](#decl-zficom-90-gf_answer) +- 위치: `abap://ZFIR0170/ZFICOM#L510-L518` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#CHECK_CONFIRM_STEP_2#C1` + +### FORM AUTHORITY_PG — `ZFICOM` L545-L563 (19줄) + +*사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 16/19줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] ZFIT0160 에서 사용자 ID 의 프로그램 권한 행을 조회하고, 미등록이거나 ZFIR0090 권한 플래그가 비어 있으면 '프로그램 권한이 없습니다' 메시지 후 GF_CHECK 를 세우고 처리를 중단한다. + +```abap + 547| SELECT SINGLE * FROM ZFIT0160 + 548| WHERE USERID = P_UNAME. + 549| + 550| IF SY-SUBRC = 0. + 551| IF P_TCODE = 'ZFIR0090'. + 552| IF ZFIT0160-ZFIR0090 = ''. + 553| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 554| GF_CHECK = C_X. + 555| LEAVE LIST-PROCESSING. + 556| ENDIF. + 557| ENDIF. + 558| ELSE. + 559| MESSAGE I000 WITH '프로그램 권한이 없습니다 (ZFIR0160) 미등록'. + 560| GF_CHECK = C_X. + 561| LEAVE LIST-PROCESSING. + 562| ENDIF. +``` + +- **EN**: Reads the custom program authorization table ZFIT0160 by user ID and stops with an 'no program authorization' message (GF_CHECK = X) when the user is not registered or the ZFIR0090 flag is empty. +- 테이블(파서): read [ZFIT0160](/tables/ZFIT0160.md) / write - +- SAP 객체: ZFIT0160, ZFIR0090 +- 업무 키워드: 프로그램 권한, 권한 체크, 사용자 ID, 권한 테이블 +- English: Authorization Check, Custom Authorization Table, User ID +- 정의부(복사 시 함께 필요): [`ZFIT0160`](#decl-zficom-45-zfit0160), [`GF_CHECK`](#decl-zficom-87-gf_check), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0170/ZFICOM#L547-L562` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#AUTHORITY_PG#C1` + +### FORM GET_DOMAIN_VALUE — `ZFICOM` L574-L593 (20줄) + +*DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 14/20줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 도메인명·값으로 DOMAIN_VALUE_GET 을 호출해 고정값 텍스트(DDTEXT)를 얻고 미존재 시 시스템 메시지를 표시한다. + +```abap + 578| CALL FUNCTION 'DOMAIN_VALUE_GET' + 579| EXPORTING + 580| I_DOMNAME = P_DOMNAME + 581| I_DOMVALUE = P_DOMVALUE + 582| IMPORTING + 583| E_DDTEXT = P_DDTEXT + 584| EXCEPTIONS + 585| NOT_EXIST = 1 + 586| OTHERS = 2. + 587| + 588| IF SY-SUBRC NE 0. + 589| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 590| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 591| ENDIF. +``` + +- **EN**: Calls DOMAIN_VALUE_GET to get the fixed-value text of a domain value and raises the system message if not found. +- 호출(파서): DOMAIN_VALUE_GET +- SAP 객체: DOMAIN_VALUE_GET +- 업무 키워드: 도메인, 고정값 텍스트, 코드 설명 +- English: Domain, Fixed Value, DDTEXT +- 위치: `abap://ZFIR0170/ZFICOM#L578-L591` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#GET_DOMAIN_VALUE#C1` + +### FORM CALC_DATE_IN_INTERVAL — `ZFICOM` L606-L623 (18줄) + +*기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 9/18줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 기준일에 일·월·년 값을 부호(SIGNUM)에 따라 더하거나 빼서 결과 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산한다. + +```abap + 613| CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' + 614| EXPORTING + 615| DATE = P_DATE + 616| DAYS = P_DAYS + 617| MONTHS = P_MONTHS + 618| SIGNUM = P_SIGNUM + 619| YEARS = P_YEARS + 620| IMPORTING + 621| CALC_DATE = P_CALC_DATE. +``` + +- **EN**: Adds or subtracts days/months/years to a base date with RP_CALC_DATE_IN_INTERVAL according to SIGNUM. +- 호출(파서): RP_CALC_DATE_IN_INTERVAL +- SAP 객체: RP_CALC_DATE_IN_INTERVAL +- 업무 키워드: 날짜 계산, 기준일, 일자 가감 +- English: Date Calculation, RP_CALC_DATE_IN_INTERVAL +- 위치: `abap://ZFIR0170/ZFICOM#L613-L621` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#CALC_DATE_IN_INTERVAL#C1` + +### FORM CALC_BETWEEN_DATES — `ZFICOM` L635-L651 (17줄) + +*두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 8/17줄(47%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 시작일·종료일을 넘겨 HRVE_GET_TIME_BETWEEN_DATES 로 경과 일수·개월·연수를 계산한다. + +```abap + 642| CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' + 643| EXPORTING + 644| BEG_DATE = P_BDATE + 645| END_DATE = P_EDATE + 646| IMPORTING + 647| DAYS = P_DAYS + 648| MONTHS = P_MONTHS + 649| YEARS = P_YEARS. +``` + +- **EN**: Calculates days, months and years between two dates via HRVE_GET_TIME_BETWEEN_DATES. +- 호출(파서): HRVE_GET_TIME_BETWEEN_DATES +- SAP 객체: HRVE_GET_TIME_BETWEEN_DATES +- 업무 키워드: 기간 계산, 일수, 개월수, 경과기간 +- English: Date Difference, Period Calculation +- 위치: `abap://ZFIR0170/ZFICOM#L642-L649` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#CALC_BETWEEN_DATES#C1` + +### FORM DYNP_VALUES_READ — `ZFICOM` L674-L703 (30줄) + +*DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 21/30줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 읽을 화면 필드명·STEPL 을 GT_DYNFIELDS 에 담고 DYNP_VALUES_READ 로 현재 프로그램·화면의 필드 값을 읽어 P_VALUE 로 돌려준다. + +```abap + 682| CLEAR : GT_DYNFIELDS, GT_DYNFIELDS[]. + 683| GT_DYNFIELDS-FIELDNAME = P_FNAME. + 684| GT_DYNFIELDS-STEPL = P_STEPL. + 685| APPEND GT_DYNFIELDS. + 686| + 687| LV_PROG = SY-CPROG. + 688| LV_DNUM = SY-DYNNR. + 689| * To read Field Value on screen + 690| CALL FUNCTION 'DYNP_VALUES_READ' + 691| EXPORTING + 692| DYNAME = LV_PROG + 693| DYNUMB = LV_DNUM + 694| DETERMINE_LOOP_INDEX = C_X + 695| TABLES + 696| DYNPFIELDS = GT_DYNFIELDS + 697| EXCEPTIONS + 698| OTHERS = 01. + 699| IF SY-SUBRC EQ 0. + 700| READ TABLE GT_DYNFIELDS INDEX 1. + 701| P_VALUE = GT_DYNFIELDS-FIELDVALUE. + 702| ENDIF. +``` + +- **EN**: Fills GT_DYNFIELDS with the screen field name/STEPL and reads its current value from the active dynpro with DYNP_VALUES_READ. +- 호출(파서): DYNP_VALUES_READ +- SAP 객체: DYNP_VALUES_READ +- 업무 키워드: 화면 필드값 읽기, 다이나프로, 입력값 +- English: DYNP_VALUES_READ, Dynpro Field, Screen Value +- 정의부(복사 시 함께 필요): [`GT_DYNFIELDS`](#decl-zficom-63-gt_dynfields), [`LV_PROG`](#decl-zficom-678-lv_prog), [`LV_DNUM`](#decl-zficom-679-lv_dnum), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0170/ZFICOM#L682-L702` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#DYNP_VALUES_READ#C1` + +### FORM SELECT_T007S — `ZFICOM` L758-L770 (13줄) + +*세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 9/13줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 세금계산절차(KALSM) 기본값을 세팅하고 T007S 에서 영어 언어 기준 세금코드(MWSKZ)의 설명 TEXT1 을 단건 조회한다. + +```abap + 761| IF GV_KALSM IS INITIAL. + 762| GV_KALSM = C_KALSM. + 763| ENDIF. + 764| SELECT SINGLE T007S~TEXT1 + 765| INTO P_TEXT1 + 766| FROM T007S + 767| WHERE T007S~SPRAS EQ 'E' " SY-LANGU + 768| AND T007S~KALSM EQ GV_KALSM + 769| AND T007S~MWSKZ EQ P_MWSKZ. +``` + +- **EN**: Defaults the tax procedure KALSM and reads the tax code description TEXT1 from T007S (language 'E'). +- 테이블(파서): read [T007S](/tables/T007S.md) / write - +- SAP 객체: T007S +- 업무 키워드: 세금코드, 부가세, 세금계산절차, 텍스트 조회 +- English: Tax Code, Tax Procedure, Sales Tax +- 정의부(복사 시 함께 필요): [`GV_KALSM`](#decl-zficom-146-gv_kalsm), [`C_KALSM`](#decl-zficom-204-c_kalsm) +- 위치: `abap://ZFIR0170/ZFICOM#L761-L769` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#SELECT_T007S#C1` + +### FORM GET_NEXT_NUMBER — `ZFICOM` L781-L819 (39줄) + +*번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용).* + +> 이 unit 의 조각 1개가 20/39줄(51%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 표준 FM NUMBER_GET_NEXT 로 지정한 번호범위·오브젝트·서브오브젝트의 다음 일련번호를 채번하고, 구간 미존재·오버플로 등 예외는 시스템 메시지로 그대로 올린다. + +```abap + 787| CALL FUNCTION 'NUMBER_GET_NEXT' + 788| EXPORTING + 789| NR_RANGE_NR = P_NRRNG + 790| OBJECT = P_OBJCT + 791| SUBOBJECT = P_SBJCT + 792| IMPORTING + 793| NUMBER = P_NUMBR + 794| EXCEPTIONS + 795| INTERVAL_NOT_FOUND = 1 + 796| NUMBER_RANGE_NOT_INTERN = 2 + 797| OBJECT_NOT_FOUND = 3 + 798| QUANTITY_IS_0 = 4 + 799| QUANTITY_IS_NOT_1 = 5 + 800| INTERVAL_OVERFLOW = 6 + 801| BUFFER_OVERFLOW = 7 + 802| OTHERS = 8. + 803| IF SY-SUBRC <> 0. + 804| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 805| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 806| ENDIF. +``` + +- **EN**: Draws the next sequence number from a number-range object via NUMBER_GET_NEXT, surfacing interval/overflow exceptions as system messages. +- 호출(파서): NUMBER_GET_NEXT +- SAP 객체: NUMBER_GET_NEXT, INRI, NROBJ +- 업무 키워드: 번호범위, 채번, 일련번호, 키생성, 번호오브젝트 +- English: number range, number assignment, sequence number, NUMBER_GET_NEXT, NROBJ +- 위치: `abap://ZFIR0170/ZFICOM#L787-L806` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#GET_NEXT_NUMBER#C1` + +### FORM DATA_UPLOAD — `ZFICOM` L853-L908 (56줄) + +*파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다.* + +> 이 unit 의 조각 3개가 42/56줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [validation] 파일명의 마지막 3자리로 확장자(TXT/XLS)를 판별해 업로드 방식을 결정한다. + +```abap + 864| LV_LEN = STRLEN( P_FNAME ). + 865| LV_POS = LV_LEN - 3. + 866| LV_TYPE = P_FNAME+LV_POS(3). + 867| TRANSLATE LV_TYPE TO UPPER CASE. +``` + +- **EN**: Extracts the file extension (last 3 characters) to decide the upload method. +- 업무 키워드: 파일 확장자, 업로드 방식, 파일명 +- English: File Extension, File Upload +- 정의부(복사 시 함께 필요): [`LV_LEN`](#decl-zficom-858-lv_len), [`LV_POS`](#decl-zficom-859-lv_pos), [`LV_TYPE`](#decl-zficom-860-lv_type) +- 위치: `abap://ZFIR0170/ZFICOM#L864-L867` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#DATA_UPLOAD#C1` + +#### [fm_call] TXT 파일이면 GUI_UPLOAD(탭 구분자)로 로컬 파일을 T_LOAD 내부테이블로 읽고 실패 시 메시지 I106 후 종료한다. + +```abap + 869| IF LV_TYPE EQ 'TXT'. + 870| CLEAR : T_LOAD[], T_LOAD. + 871| LV_FILENAME = P_FNAME. + 872| CALL FUNCTION 'GUI_UPLOAD' + 873| EXPORTING + 874| FILENAME = LV_FILENAME + 875| * FILETYPE = 'ASC' + 876| * tab + 877| HAS_FIELD_SEPARATOR = C_X + 878| * CODEPAGE = '8000' + 879| TABLES + 880| DATA_TAB = T_LOAD. + 881| + 882| IF SY-SUBRC NE 0. + 883| MESSAGE I106. + 884| LEAVE LIST-PROCESSING. + 885| ENDIF. +``` + +- **EN**: For TXT files uploads the tab-separated local file into T_LOAD with GUI_UPLOAD and stops with message I106 on failure. +- 호출(파서): GUI_UPLOAD +- SAP 객체: GUI_UPLOAD +- 업무 키워드: 텍스트 파일 업로드, 탭 구분, 로컬 파일 +- English: GUI_UPLOAD, Text File, Local File +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_FILENAME`](#decl-zficom-861-lv_filename), [`C_X`](#decl-zficom-231-c_x) +- 위치: `abap://ZFIR0170/ZFICOM#L869-L885` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#DATA_UPLOAD#C2` + +#### [fm_call] XLS 파일이면 TEXT_CONVERT_XLS_TO_SAP 으로 엑셀을 T_LOAD 로 변환(헤더행 옵션)하고, 실패·미지원 확장자면 메시지 I006/I007 로 종료한다. + +```abap + 887| ELSEIF LV_TYPE EQ 'XLS'. + 888| CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' + 889| EXPORTING + 890| * I_FIELD_SEPERATOR = + 891| I_LINE_HEADER = P_HLINE + 892| I_TAB_RAW_DATA = LV_RAW_DATA + 893| I_FILENAME = P_FNAME + 894| TABLES + 895| I_TAB_CONVERTED_DATA = T_LOAD + 896| EXCEPTIONS + 897| CONVERSION_FAILED = 1 + 898| OTHERS = 2. + 899| + 900| IF SY-SUBRC NE 0. + 901| MESSAGE I006. "업로드 실패!! 담당자에게 문의하세요. + 902| LEAVE LIST-PROCESSING. + 903| ENDIF. + 904| ELSE. + 905| MESSAGE I007. "지원하지 않는 확장자입니다. 파일형식을 확인하세요. + 906| LEAVE LIST-PROCESSING. + 907| ENDIF. +``` + +- **EN**: For XLS files converts the Excel sheet into T_LOAD with TEXT_CONVERT_XLS_TO_SAP (header line option); unsupported extensions or failures stop with messages I006/I007. +- 호출(파서): TEXT_CONVERT_XLS_TO_SAP +- SAP 객체: TEXT_CONVERT_XLS_TO_SAP +- 업무 키워드: 엑셀 업로드, 헤더행, 파일 변환, 미지원 확장자 +- English: Excel Upload, TEXT_CONVERT_XLS_TO_SAP, Conversion +- 정의부(복사 시 함께 필요): [`LV_TYPE`](#decl-zficom-860-lv_type), [`LV_RAW_DATA`](#decl-zficom-862-lv_raw_data) +- 위치: `abap://ZFIR0170/ZFICOM#L887-L907` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#DATA_UPLOAD#C3` + +### FORM DATA_UPLOAD_2 — `ZFICOM` L917-L950 (34줄) + +*엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다.* + +> 이 unit 의 조각 2개가 26/34줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] KCD_EXCEL_OLE_TO_INT_CONVERT 로 엑셀 파일을 2행부터(헤더 제외) 셀 단위 내부테이블 GT_XLS 로 읽고 실패 시 '업로드 실패' 메시지 후 종료한다. + +```abap + 922| CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' + 923| EXPORTING + 924| FILENAME = P_FNAME + 925| I_BEGIN_COL = 1 + 926| I_BEGIN_ROW = 2 + 927| I_END_COL = 256 + 928| I_END_ROW = 65536 + 929| TABLES + 930| INTERN = GT_XLS + 931| EXCEPTIONS + 932| INCONSISTENT_PARAMETERS = 1 + 933| UPLOAD_OLE = 2 + 934| OTHERS = 3. + 935| + 936| IF SY-SUBRC <> 0. + 937| MESSAGE I000 WITH '업로드 실패!! 담당자에게 문의하세요.'. + 938| LEAVE LIST-PROCESSING. + 939| ENDIF. +``` + +- **EN**: Reads the Excel file cell by cell (from row 2, skipping the header) into GT_XLS with KCD_EXCEL_OLE_TO_INT_CONVERT and stops with an upload-failed message on error. +- 호출(파서): KCD_EXCEL_OLE_TO_INT_CONVERT +- SAP 객체: KCD_EXCEL_OLE_TO_INT_CONVERT, KCDE_INTERN_STRUC +- 업무 키워드: 엑셀 업로드, OLE, 헤더 제외, 셀 데이터 +- English: Excel Upload, KCD_EXCEL_OLE_TO_INT_CONVERT, OLE +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls) +- 위치: `abap://ZFIR0170/ZFICOM#L922-L939` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#DATA_UPLOAD_2#C1` + +#### [calculation] 셀 데이터를 행·열 순으로 정렬한 뒤 열 번호를 T_LOAD 구조의 컴포넌트에 ASSIGN 해 값을 채우고 행이 끝날 때마다 T_LOAD 에 한 줄씩 추가한다. + +```abap + 941| SORT GT_XLS BY ROW COL. + 942| LOOP AT GT_XLS. + 943| ASSIGN COMPONENT GT_XLS-COL OF STRUCTURE T_LOAD TO . + 944| = GT_XLS-VALUE. + 945| AT END OF ROW. + 946| APPEND T_LOAD. CLEAR: T_LOAD. + 947| ENDAT. + 948| ENDLOOP. +``` + +- **EN**: Sorts cells by row/column, assigns each cell value to the corresponding component of T_LOAD by column index and appends a line at the end of each row. +- 업무 키워드: 행 변환, 컬럼 매핑, 업로드 내역, 필드심볼 +- English: Row Mapping, Field Symbol, Internal Table +- 정의부(복사 시 함께 필요): [`GT_XLS`](#decl-zficom-919-gt_xls), [``](#decl-zficom-920--fs-) +- 위치: `abap://ZFIR0170/ZFICOM#L941-L948` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#DATA_UPLOAD_2#C2` + +### FORM CONVERT_TO_FOREIGN_CURRENCY — `ZFICOM` L962-L999 (38줄) + +*현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화 기본값을 설정한 뒤 CONVERT_TO_FOREIGN_CURRENCY 로 현지통화금액(DMBTR)을 환율(KURSF)·기준일 기준 외화금액(WRBTR)으로 환산하고 오류 시 시스템 메시지를 표시한다. + +```abap + 967| IF T001-WAERS IS INITIAL. + 968| T001-WAERS = C_WAERS. + 969| ENDIF. + 970| CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY' + 971| EXPORTING + 972| * CLIENT = SY-MANDT + 973| DATE = P_DATUM + 974| FOREIGN_CURRENCY = P_WAERS + 975| LOCAL_AMOUNT = P_DMBTR + 976| LOCAL_CURRENCY = T001-WAERS + 977| RATE = P_KURSF + 978| * TYPE_OF_RATE = 'M' + 979| * READ_TCURR = 'X' + 980| IMPORTING + 981| * EXCHANGE_RATE = + 982| FOREIGN_AMOUNT = P_WRBTR + 983| * FOREIGN_FACTOR = + 984| * LOCAL_FACTOR = + 985| * EXCHANGE_RATEX = + 986| * DERIVED_RATE_TYPE = + 987| * FIXED_RATE = + 988| EXCEPTIONS + 989| NO_RATE_FOUND = 1 + 990| OVERFLOW = 2 + 991| NO_FACTORS_FOUND = 3 + 992| NO_SPREAD_FOUND = 4 + 993| DERIVED_2_TIMES = 5 + 994| OTHERS = 6. + 995| IF SY-SUBRC NE 0. + 996| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 997| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 998| ENDIF. +``` + +- **EN**: Converts the local currency amount (DMBTR) to the foreign currency amount (WRBTR) via CONVERT_TO_FOREIGN_CURRENCY using rate and date, raising the system message on error. +- 호출(파서): CONVERT_TO_FOREIGN_CURRENCY +- SAP 객체: CONVERT_TO_FOREIGN_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Foreign Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0170/ZFICOM#L967-L998` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#CONVERT_TO_FOREIGN_CURRENCY#C1` + +### FORM CONVERT_TO_LOCAL_CURRENCY — `ZFICOM` L1011-L1039 (29줄) + +*외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 현지통화가 없으면 기본통화(C_WAERS)를 쓰고 CONVERT_TO_LOCAL_CURRENCY 로 외화금액(WRBTR)·환율(KURSF)·기준일로 현지통화금액(DMBTR)을 계산하며 환율 미존재 등 오류 시 메시지를 띄운다. + +```abap + 1016| IF T001-WAERS IS INITIAL. + 1017| T001-WAERS = C_WAERS. + 1018| ENDIF. + 1019| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' + 1020| EXPORTING + 1021| DATE = P_DATUM + 1022| FOREIGN_AMOUNT = P_WRBTR + 1023| FOREIGN_CURRENCY = P_WAERS + 1024| LOCAL_CURRENCY = T001-WAERS + 1025| RATE = P_KURSF + 1026| IMPORTING + 1027| LOCAL_AMOUNT = P_DMBTR + 1028| EXCEPTIONS + 1029| NO_RATE_FOUND = 1 + 1030| OVERFLOW = 2 + 1031| NO_FACTORS_FOUND = 3 + 1032| NO_SPREAD_FOUND = 4 + 1033| DERIVED_2_TIMES = 5 + 1034| OTHERS = 6. + 1035| IF SY-SUBRC NE 0. + 1036| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1037| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1038| ENDIF. +``` + +- **EN**: Converts the foreign amount to local currency amount (DMBTR) with CONVERT_TO_LOCAL_CURRENCY using the rate and date, defaulting the local currency, and raises the system message on error. +- 호출(파서): CONVERT_TO_LOCAL_CURRENCY +- SAP 객체: CONVERT_TO_LOCAL_CURRENCY, T001, TCURR +- 업무 키워드: 환율, 외화 환산, 현지통화, 전표금액 +- English: Local Currency, Exchange Rate, Currency Conversion +- 정의부(복사 시 함께 필요): [`T001`](#decl-zficom-11-t001), [`C_WAERS`](#decl-zficom-199-c_waers) +- 위치: `abap://ZFIR0170/ZFICOM#L1016-L1038` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#CONVERT_TO_LOCAL_CURRENCY#C1` + +### FORM SELECT_USR01 — `ZFICOM` L1084-L1088 (5줄) + +*사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 3/5줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [sql_select] 사용자 ID(P_UNAME)로 USR01 을 단건 조회해 사용자 기본 설정(날짜/숫자 형식 등)을 읽는다. + +```abap + 1085| SELECT SINGLE * + 1086| FROM USR01 + 1087| WHERE USR01~BNAME EQ P_UNAME. +``` + +- **EN**: Reads the user master defaults from USR01 for the given user name. +- 테이블(파서): read [USR01](/tables/USR01.md) / write - +- SAP 객체: USR01 +- 업무 키워드: 사용자 마스터, 사용자 기본값, 사용자 ID +- English: User Master, USR01 +- 정의부(복사 시 함께 필요): [`USR01`](#decl-zficom-41-usr01) +- 위치: `abap://ZFIR0170/ZFICOM#L1085-L1087` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#SELECT_USR01#C1` + +### FORM SMARTFORM_CONTROL — `ZFICOM` L1101-L1138 (38줄) + +*Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다.* + +> 이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_FUNCTION_MODULE_NAME 으로 Smartform 의 실행 FM 이름(GV_FNAME)을 구한 뒤 미리보기·NO_DIALOG·OTF·프린터(TDDEST)·즉시출력 등 출력 옵션을 GS_DEVICE/GS_OPTIONS 에 설정한다. + +```abap + 1108| CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' + 1109| EXPORTING + 1110| FORMNAME = P_FORMNAME + 1111| IMPORTING + 1112| FM_NAME = GV_FNAME + 1113| EXCEPTIONS + 1114| NO_FORM = 1 + 1115| NO_FUNCTION_MODULE = 2 + 1116| OTHERS = 3. + 1117| + 1118| IF SY-SUBRC EQ 0. + 1119| * Output option appointment (preview screen exception) + 1120| GS_DEVICE-PREVIEW = P_PREVIEW. + 1121| GS_DEVICE-NO_DIALOG = P_DIALOG. + 1122| GS_DEVICE-GETOTF = P_GETOTF. + 1123| GS_DEVICE-LANGU = SY-LANGU. + 1124| GS_DEVICE-DEVICE = 'PRINTER'. + 1125| GS_DEVICE-NO_OPEN = C_X. + 1126| GS_DEVICE-NO_CLOSE = C_X. + 1127| GS_OPTIONS-TDDEST = P_TDDEST. + 1128| GS_OPTIONS-TDIMMED = C_X. + 1129| GS_OPTIONS-TDDELETE = C_X. + 1130| GS_OPTIONS-TDNEWID = C_X. + 1131| * 미리보기버튼 + 1132| GS_OPTIONS-TDNOPREV = SPACE. + 1133| GS_OPTIONS-TDCOVER = SPACE. "C_S. + 1134| GS_OPTIONS-TDNOPRINT = P_TDNOPRINT. + 1135| * GS_OPTIONS-TDRECEIVER = SY-UNAME. + 1136| ENDIF. +``` + +- **EN**: Gets the generated function module name of the Smart Form via SSF_FUNCTION_MODULE_NAME and fills control parameters (preview, no dialog, OTF) and output options (TDDEST, immediate print). +- 호출(파서): SSF_FUNCTION_MODULE_NAME +- SAP 객체: SSF_FUNCTION_MODULE_NAME, SSFCTRLOP, SSFCOMPOP +- 업무 키워드: 스마트폼, 출력 옵션, 미리보기, 프린터 +- English: Smart Forms, Output Options, Control Parameters, Print Preview +- 정의부(복사 시 함께 필요): [`GV_FNAME`](#decl-zficom-98-gv_fname), [`GS_DEVICE`](#decl-zficom-100-gs_device), [`C_X`](#decl-zficom-231-c_x), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0170/ZFICOM#L1108-L1136` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#SMARTFORM_CONTROL#C1` + +### FORM SMARTFORM_OPEN — `ZFICOM` L1144-L1156 (13줄) + +*Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] GS_DEVICE/GS_OPTIONS 의 출력 옵션으로 SSF_OPEN 을 호출해 Smartform 출력 job 을 연다. + +```abap + 1145| CALL FUNCTION 'SSF_OPEN' + 1146| EXPORTING + 1147| CONTROL_PARAMETERS = GS_DEVICE + 1148| OUTPUT_OPTIONS = GS_OPTIONS + 1149| USER_SETTINGS = SPACE + 1150| EXCEPTIONS + 1151| FORMATTING_ERROR = 1 + 1152| INTERNAL_ERROR = 2 + 1153| SEND_ERROR = 3 + 1154| USER_CANCELED = 4 + 1155| OTHERS = 5. +``` + +- **EN**: Opens a Smart Form print job with SSF_OPEN using the control parameters GS_DEVICE and output options GS_OPTIONS. +- 호출(파서): SSF_OPEN +- SAP 객체: SSF_OPEN +- 업무 키워드: 스마트폼, 출력 시작, 양식 출력 +- English: Smart Forms, SSF_OPEN, Output Options +- 정의부(복사 시 함께 필요): [`GS_DEVICE`](#decl-zficom-100-gs_device), [`GS_OPTIONS`](#decl-zficom-99-gs_options) +- 위치: `abap://ZFIR0170/ZFICOM#L1145-L1155` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#SMARTFORM_OPEN#C1` + +### FORM SMARTFORM_CLOSE — `ZFICOM` L1162-L1175 (14줄) + +*Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다.* + +> 이 unit 의 조각 1개가 12/14줄(86%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] SSF_CLOSE 로 Smartform 출력 job 을 닫고 출력 결과(GS_JOB_OUTPUT_INFO)를 받으며 오류 시 시스템 메시지를 표시한다. + +```abap + 1163| CALL FUNCTION 'SSF_CLOSE' + 1164| IMPORTING + 1165| JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO + 1166| EXCEPTIONS + 1167| FORMATTING_ERROR = 1 + 1168| INTERNAL_ERROR = 2 + 1169| SEND_ERROR = 3 + 1170| OTHERS = 4. + 1171| IF SY-SUBRC NE 0. + 1172| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO + 1173| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. + 1174| ENDIF. +``` + +- **EN**: Closes the Smart Form print job with SSF_CLOSE, retrieves JOB_OUTPUT_INFO and raises the system message on error. +- 호출(파서): SSF_CLOSE +- SAP 객체: SSF_CLOSE +- 업무 키워드: 스마트폼, 출력 종료, 양식 출력 +- English: Smart Forms, SSF_CLOSE, Print Job +- 정의부(복사 시 함께 필요): [`GS_JOB_OUTPUT_INFO`](#decl-zficom-102-gs_job_output_info) +- 위치: `abap://ZFIR0170/ZFICOM#L1163-L1174` · confidence 0.85 · `ZFIR0170#ZFICOM#FORM#SMARTFORM_CLOSE#C1` + +### FORM DYNPRO — `ZFICOM` L1240-L1251 (12줄) + +*BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다.* + +> 이 unit 의 조각 1개가 9/12줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] P_DYN 이 X 면 모듈풀·화면번호로 BDC 화면 시작 행을, 아니면 필드명·값 행을 GT_BDC(BDCDATA)에 추가한다. + +```abap + 1242| IF P_DYN EQ C_X. + 1243| MOVE : P_NAME TO GT_BDC-PROGRAM, "BDC module pool + 1244| P_VALUE TO GT_BDC-DYNPRO, "Screen Number + 1245| P_DYN TO GT_BDC-DYNBEGIN. "BDC screen start + 1246| ELSE. + 1247| MOVE : P_NAME TO GT_BDC-FNAM, "Field Name + 1248| P_VALUE TO GT_BDC-FVAL. "BDC field value + 1249| ENDIF. + 1250| APPEND GT_BDC. +``` + +- **EN**: Appends either a screen-start row (program, dynpro, DYNBEGIN) or a field/value row to GT_BDC (BDCDATA). +- SAP 객체: BDCDATA +- 업무 키워드: BDC 데이터, 화면 번호, 필드값, 배치인풋 +- English: BDCDATA, Batch Input, Dynpro +- 정의부(복사 시 함께 필요): [`C_X`](#decl-zficom-231-c_x), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0170/ZFICOM#L1242-L1250` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#DYNPRO#C1` + +### FORM BDC_TRANSACTION — `ZFICOM` L1259-L1266 (8줄) + +*GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다.* + +> 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] BDC 실행 옵션(표시모드 GV_MODE, 갱신모드 A)을 CTU_PARAMS 에 설정하고 GT_BDC 로 P_TCODE 트랜잭션을 CALL TRANSACTION 해 결과 메시지를 GT_MESS 에 수집한다. + +```abap + 1260| CTU_PARAMS-DISMODE = GV_MODE. + 1261| CTU_PARAMS-UPDMODE = C_A. + 1262| * CTU_PARAMS-NOBINPT = C_X. + 1263| * CTU_PARAMS-RACOMMIT = C_X. + 1264| CALL TRANSACTION P_TCODE USING GT_BDC OPTIONS FROM CTU_PARAMS + 1265| MESSAGES INTO GT_MESS. +``` + +- **EN**: Sets CTU_PARAMS (display mode GV_MODE, sync update) and runs CALL TRANSACTION for P_TCODE with GT_BDC, collecting messages into GT_MESS. +- 호출(파서): P_TCODE +- SAP 객체: BDCDATA, BDCMSGCOLL, CTU_PARAMS +- 업무 키워드: BDC 실행, 트랜잭션 호출, 처리 메시지, 표시모드 +- English: Call Transaction, BDC, CTU_PARAMS +- 정의부(복사 시 함께 필요): [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`GV_MODE`](#decl-zficom-174-gv_mode), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc), [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0170/ZFICOM#L1260-L1265` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#BDC_TRANSACTION#C1` + +### FORM MESSAGE_SELECT — `ZFICOM` L1274-L1285 (12줄) + +*BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다.* + +> 이 unit 의 조각 1개가 10/12줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] BDC 결과 메시지(GT_MESS)의 MSGID·MSGNR·MSGV1~4 를 MESSAGE_TEXT_BUILD 로 읽을 수 있는 메시지 텍스트로 만들어 로그 필드에 돌려준다. + +```abap + 1275| CALL FUNCTION 'MESSAGE_TEXT_BUILD' + 1276| EXPORTING + 1277| MSGID = GT_MESS-MSGID + 1278| MSGNR = GT_MESS-MSGNR + 1279| MSGV1 = GT_MESS-MSGV1 + 1280| MSGV2 = GT_MESS-MSGV2 + 1281| MSGV3 = GT_MESS-MSGV3 + 1282| MSGV4 = GT_MESS-MSGV4 + 1283| IMPORTING + 1284| MESSAGE_TEXT_OUTPUT = P_NATXT. +``` + +- **EN**: Builds the readable message text from the BDC message fields (MSGID, MSGNR, MSGV1-4) in GT_MESS using MESSAGE_TEXT_BUILD. +- 호출(파서): MESSAGE_TEXT_BUILD +- SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL +- 업무 키워드: BDC 메시지, 메시지 텍스트, 처리 로그 +- English: BDC Message, MESSAGE_TEXT_BUILD, Message Log +- 정의부(복사 시 함께 필요): [`GT_MESS`](#decl-zficom-172-gt_mess) +- 위치: `abap://ZFIR0170/ZFICOM#L1275-L1284` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#MESSAGE_SELECT#C1` + +### FORM BDC_FK03 — `ZFICOM` L1294-L1318 (25줄) + +*구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다.* + +> 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [interface] SAPMF02K 0106 화면에 구매처·회사코드와 조회 뷰 플래그를 BDC 로 채우고 CALL TRANSACTION FK03 으로 구매처 마스터를 표시한다. + +```abap + 1299| PERFORM DYNPRO USING : + 1300| 'X' 'SAPMF02K' '0106', + 1301| ' ' 'BDC_OKCODE' '/00', + 1302| ' ' 'RF02K-LIFNR' P_LIFNR, + 1303| ' ' 'RF02K-BUKRS' P_BUKRS, + 1304| ' ' 'RF02K-D0110' C_X, + 1305| ' ' 'RF02K-D0120' C_X, + 1306| ' ' 'RF02K-D0130' C_X, + 1307| ' ' 'RF02K-D0210' C_X, + 1308| ' ' 'RF02K-D0215' C_X, + 1309| ' ' 'RF02K-D0215' C_X, + 1310| ' ' 'RF02K-D0610' C_X. + 1311| + 1312| CTU_PARAMS-DISMODE = C_E. + 1313| CTU_PARAMS-UPDMODE = C_A. + 1314| CTU_PARAMS-NOBINPT = C_X. + 1315| CTU_PARAMS-RACOMMIT = C_X. + 1316| CALL TRANSACTION 'FK03' USING GT_BDC OPTIONS FROM CTU_PARAMS. +``` + +- **EN**: Builds BDC data for screen SAPMF02K 0106 (vendor, company code, view flags) and calls transaction FK03 to display the vendor master. +- 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, FK03 +- SAP 객체: FK03, SAPMF02K, LFA1 +- 업무 키워드: 구매처 조회, 구매처 마스터, BDC, 회사코드 +- English: Vendor Master, BDC, Call Transaction +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs), [`C_X`](#decl-zficom-231-c_x), [`CTU_PARAMS`](#decl-zficom-48-ctu_params), [`C_E`](#decl-zficom-212-c_e), [`C_A`](#decl-zficom-208-c_a), [`GT_BDC`](#decl-zficom-168-gt_bdc) +- 위치: `abap://ZFIR0170/ZFICOM#L1299-L1316` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#BDC_FK03#C1` + +### FORM CALL_TRANSACTION_FB03 — `ZFICOM` L1328-L1336 (9줄) + +*회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다.* + +> 이 unit 의 조각 1개가 5/9줄(56%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [control_flow] 전표번호가 있으면 SET PARAMETER ID(BLN/BUK/GJR) 로 키를 넘기고 FB03 트랜잭션을 첫 화면 건너뛰기로 호출해 회계전표를 조회한다. + +```abap + 1331| CHECK P_BELNR IS NOT INITIAL. + 1332| SET PARAMETER ID 'BLN' FIELD P_BELNR. + 1333| SET PARAMETER ID 'BUK' FIELD P_BUKRS. + 1334| SET PARAMETER ID 'GJR' FIELD P_GJAHR. + 1335| CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. +``` + +- **EN**: Sets parameter IDs BLN/BUK/GJR and calls transaction FB03 with SKIP FIRST SCREEN to display the accounting document. +- 호출(파서): FB03 +- SAP 객체: FB03, BKPF +- 업무 키워드: 회계전표 조회, 전표번호, 회사코드, 회계연도 +- English: Accounting Document, Display Document, FB03 +- 정의부(복사 시 함께 필요): [`P_BUKRS`](#decl-zfir0170top-97-p_bukrs) +- 위치: `abap://ZFIR0170/ZFICOM#L1331-L1335` · confidence 0.95 · `ZFIR0170#ZFICOM#FORM#CALL_TRANSACTION_FB03#C1` + +### FORM STATUS_BAR — `ZFICOM` L1345-L1366 (22줄) + +*처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다.* + +> 이 unit 의 조각 1개가 16/22줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. + +#### [fm_call] 텍스트가 없으면 GV_INDEX/GV_TABIN 으로 진행률(%)을 계산해 SAPGUI_PROGRESS_INDICATOR 로 상태바에 처리 진행 상황을 표시한다. + +```abap + 1350| IF P_TXT EQ SPACE. + 1351| GV_INDEX = GV_INDEX + 1. + 1352| GV_KBETR = GV_INDEX / GV_TABIN * 100. + 1353| CONCATENATE GV_INDEX '/' GV_TABIN '=====>' GV_KBETR '% Processing...' + 1354| INTO LV_TEXT SEPARATED BY SPACE. + 1355| CONDENSE GV_KBETR. + 1356| LV_PCEN = GV_KBETR. + 1357| ELSE. + 1358| LV_TEXT = P_TXT. + 1359| LV_PCEN = P_PCT. + 1360| ENDIF. + 1361| + 1362| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' + 1363| EXPORTING + 1364| PERCENTAGE = LV_PCEN + 1365| TEXT = LV_TEXT. +``` + +- **EN**: Calculates the processing percentage from GV_INDEX/GV_TABIN and shows a progress indicator via SAPGUI_PROGRESS_INDICATOR. +- 호출(파서): SAPGUI_PROGRESS_INDICATOR +- SAP 객체: SAPGUI_PROGRESS_INDICATOR +- 업무 키워드: 진행률, 상태바, 처리건수, 진행표시 +- English: Progress Indicator, Status Bar +- 정의부(복사 시 함께 필요): [`GV_INDEX`](#decl-zficom-82-gv_index), [`GV_KBETR`](#decl-zficom-83-gv_kbetr), [`GV_TABIN`](#decl-zficom-81-gv_tabin), [`LV_TEXT`](#decl-zficom-1347-lv_text), [`LV_PCEN`](#decl-zficom-1348-lv_pcen) +- 위치: `abap://ZFIR0170/ZFICOM#L1350-L1365` · confidence 0.9 · `ZFIR0170#ZFICOM#FORM#STATUS_BAR#C1` + +## 정의부 (309건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIALV` (76건) + +#### SLIS — type-pool · L7-L7 {#decl-zfialv-7-slis} + +```abap +TYPE-POOLS : SLIS. +``` + +#### LCL_EVENT_RECEIVER — class · L10-L20 {#decl-zfialv-10-lcl_event_receiver} + +```abap +CLASS LCL_EVENT_RECEIVER DEFINITION. + + PUBLIC SECTION. + METHODS : + HANDLE_CLOSE + FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER + IMPORTING SENDER. + PRIVATE SECTION. +* 'X': does exist, SPACE: does not ex. + DATA : DIALOGBOX_STATUS TYPE C. +ENDCLASS. "lcl_event_receiver DEFINITION +``` + +#### GT_FIELDCAT — data · L37-L37 {#decl-zfialv-37-gt_fieldcat} + +```abap +DATA : GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. " WA +``` + +#### GT_FIELDCAT_HEAD — data · L38-L38 {#decl-zfialv-38-gt_fieldcat_head} + +```abap +DATA: + GT_FIELDCAT_HEAD TYPE SLIS_T_FIELDCAT_ALV. " HEAD +``` + +#### GT_FIELDCAT_ITEM — data · L39-L39 {#decl-zfialv-39-gt_fieldcat_item} + +```abap +DATA: + GT_FIELDCAT_ITEM TYPE SLIS_T_FIELDCAT_ALV. " ITEM +``` + +#### GT_FIELDCAT_FIELD — data · L40-L40 {#decl-zfialv-40-gt_fieldcat_field} + +```abap +DATA: + GT_FIELDCAT_FIELD TYPE SLIS_T_FIELDCAT_ALV. +``` + +#### GT_DROP — data · L41-L41 {#decl-zfialv-41-gt_drop} + +```abap +DATA: + GT_DROP TYPE LVC_T_DROP. " Drop-down +``` + +#### GT_DRAL — data · L42-L42 {#decl-zfialv-42-gt_dral} + +```abap +DATA: + GT_DRAL TYPE LVC_T_DRAL. +``` + +#### GT_SORTINFO — data · L43-L43 {#decl-zfialv-43-gt_sortinfo} + +```abap +DATA: + GT_SORTINFO TYPE SLIS_T_SORTINFO_ALV. " SORT +``` + +#### GT_EVENT — data · L44-L44 {#decl-zfialv-44-gt_event} + +```abap +DATA: + GT_EVENT TYPE SLIS_T_EVENT. " EVENT +``` + +#### GT_PRINT — data · L45-L45 {#decl-zfialv-45-gt_print} + +```abap +DATA: + GT_PRINT TYPE SLIS_PRINT_ALV. " PRINT +``` + +#### GT_LISTHEADER — data · L46-L46 {#decl-zfialv-46-gt_listheader} + +```abap +DATA: + GT_LISTHEADER TYPE SLIS_T_LISTHEADER. " TITLE +``` + +#### GT_CELLTAB — data · L47-L47 {#decl-zfialv-47-gt_celltab} + +```abap +DATA: + GT_CELLTAB TYPE LVC_T_STYL. +``` + +#### GT_COLOR — data · L48-L48 {#decl-zfialv-48-gt_color} + +```abap +DATA: + GT_COLOR TYPE LVC_T_SCOL. +``` + +#### GT_COLINFO — data · L49-L49 {#decl-zfialv-49-gt_colinfo} + +```abap +DATA: + GT_COLINFO TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. +``` + +#### GS_FIELDCAT_HEAD — data · L51-L51 {#decl-zfialv-51-gs_fieldcat_head} + +```abap +DATA : GS_FIELDCAT_HEAD TYPE SLIS_FIELDCAT_ALV. " HEAD +``` + +#### GS_FIELDCAT_ITEM — data · L52-L52 {#decl-zfialv-52-gs_fieldcat_item} + +```abap +DATA: + GS_FIELDCAT_ITEM TYPE SLIS_FIELDCAT_ALV. " ITEM +``` + +#### GS_DROP — data · L53-L53 {#decl-zfialv-53-gs_drop} + +```abap +DATA: + GS_DROP TYPE LVC_S_DROP. " Drop-down +``` + +#### GS_DRAL — data · L54-L54 {#decl-zfialv-54-gs_dral} + +```abap +DATA: + GS_DRAL TYPE LVC_S_DRAL. +``` + +#### GS_SORTINFO — data · L55-L55 {#decl-zfialv-55-gs_sortinfo} + +```abap +DATA: + GS_SORTINFO TYPE SLIS_SORTINFO_ALV. " SORT +``` + +#### GS_EVENT — data · L56-L56 {#decl-zfialv-56-gs_event} + +```abap +DATA: + GS_EVENT LIKE LINE OF GT_EVENT. " EVENT +``` + +#### GS_VARIANT — data · L57-L57 {#decl-zfialv-57-gs_variant} + +```abap +DATA: + GS_VARIANT LIKE DISVARIANT. " Layout +``` + +#### GS_DEF_VARIANT — data · L58-L58 {#decl-zfialv-58-gs_def_variant} + +```abap +DATA: + GS_DEF_VARIANT LIKE DISVARIANT. " Default Layout +``` + +#### GS_LAYOUT — data · L59-L59 {#decl-zfialv-59-gs_layout} + +```abap +DATA: + GS_LAYOUT TYPE SLIS_LAYOUT_ALV. " Layout +``` + +#### GS_EXIT_BY_USER — data · L60-L60 {#decl-zfialv-60-gs_exit_by_user} + +```abap +DATA: + GS_EXIT_BY_USER TYPE SLIS_EXIT_BY_USER. +``` + +#### GS_LISTHEADER — data · L61-L61 {#decl-zfialv-61-gs_listheader} + +```abap +DATA: + GS_LISTHEADER TYPE SLIS_LISTHEADER. " TITLE +``` + +#### GS_KEYINFO — data · L62-L62 {#decl-zfialv-62-gs_keyinfo} + +```abap +DATA: + GS_KEYINFO TYPE SLIS_KEYINFO_ALV. +``` + +#### GS_CELLTAB — data · L63-L63 {#decl-zfialv-63-gs_celltab} + +```abap +DATA: + GS_CELLTAB TYPE LVC_S_STYL. +``` + +#### GS_COLOR — data · L64-L64 {#decl-zfialv-64-gs_color} + +```abap +DATA: + GS_COLOR TYPE LVC_S_SCOL. +``` + +#### GS_GRIDSET — data · L65-L65 {#decl-zfialv-65-gs_gridset} + +```abap +DATA: + GS_GRIDSET TYPE LVC_S_GLAY. " GRID SETTING +``` + +#### GV_REPID — data · L67-L67 {#decl-zfialv-67-gv_repid} + +```abap +DATA : GV_REPID TYPE SY-REPID. " Program-ID. +``` + +#### GV_PROGRAM — data · L68-L68 {#decl-zfialv-68-gv_program} + +```abap +DATA: + GV_PROGRAM LIKE SY-REPID. " Program-ID +``` + +#### GV_INCLNAME — data · L69-L69 {#decl-zfialv-69-gv_inclname} + +```abap +DATA: + GV_INCLNAME LIKE SY-REPID. +``` + +#### GV_GRID_TITLE — data · L70-L70 {#decl-zfialv-70-gv_grid_title} + +```abap +DATA: + GV_GRID_TITLE TYPE LVC_TITLE. " GRID TITLE +``` + +#### GV_VARIANT_EXIT — data · L71-L71 {#decl-zfialv-71-gv_variant_exit} + +```abap +DATA: + GV_VARIANT_EXIT(1) TYPE C. +``` + +#### GV_SAVE — data · L72-L72 {#decl-zfialv-72-gv_save} + +```abap +DATA: + GV_SAVE(1) TYPE C. +``` + +#### GV_TABNAME_HEAD — data · L73-L73 {#decl-zfialv-73-gv_tabname_head} + +```abap +DATA: + GV_TABNAME_HEAD TYPE SLIS_TABNAME. +``` + +#### GV_TABNAME_ITEM — data · L74-L74 {#decl-zfialv-74-gv_tabname_item} + +```abap +DATA: + GV_TABNAME_ITEM TYPE SLIS_TABNAME. +``` + +#### GV_PF_STATUS — data · L75-L75 {#decl-zfialv-75-gv_pf_status} + +```abap +DATA: + GV_PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_STATUS'. +``` + +#### GV_USER_COMMAND — data · L76-L76 {#decl-zfialv-76-gv_user_command} + +```abap +DATA: + GV_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. +``` + +#### GV_DATA_CHANGED — data · L77-L77 {#decl-zfialv-77-gv_data_changed} + +```abap +DATA: + GV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'ALV_DATA_CHANGED'. +``` + +#### GV_TOP_OF_PAGE — data · L78-L78 {#decl-zfialv-78-gv_top_of_page} + +```abap +DATA: + GV_TOP_OF_PAGE TYPE SLIS_FORMNAME. +``` + +#### GV_F2CODE — data · L79-L79 {#decl-zfialv-79-gv_f2code} + +```abap +DATA: + GV_F2CODE LIKE SY-UCOMM VALUE 'PICK'. +``` + +#### GT_FCAT_HEAD — data · L81-L81 {#decl-zfialv-81-gt_fcat_head} + +```abap +DATA : GT_FCAT_HEAD TYPE LVC_T_FCAT. +``` + +#### GT_FCAT_ITEM — data · L82-L82 {#decl-zfialv-82-gt_fcat_item} + +```abap +DATA: + GT_FCAT_ITEM TYPE LVC_T_FCAT. +``` + +#### GS_FCAT_HEAD — data · L83-L83 {#decl-zfialv-83-gs_fcat_head} + +```abap +DATA: + GS_FCAT_HEAD TYPE LVC_S_FCAT. +``` + +#### GS_FCAT_ITEM — data · L84-L84 {#decl-zfialv-84-gs_fcat_item} + +```abap +DATA: + GS_FCAT_ITEM TYPE LVC_S_FCAT. +``` + +#### GS_LAYOUT_ON — data · L85-L85 {#decl-zfialv-85-gs_layout_on} + +```abap +DATA: + GS_LAYOUT_ON TYPE LVC_S_LAYO. " ALV_LAYOUT +``` + +#### GT_SORT — data · L86-L86 {#decl-zfialv-86-gt_sort} + +```abap +DATA: + GT_SORT TYPE LVC_T_SORT. " Sort +``` + +#### GS_SORT — data · L87-L87 {#decl-zfialv-87-gs_sort} + +```abap +DATA: + GS_SORT TYPE LVC_S_SORT. " Sort +``` + +#### GT_F4 — data · L88-L88 {#decl-zfialv-88-gt_f4} + +```abap +DATA: + GT_F4 TYPE LVC_T_F4. +``` + +#### GS_F4 — data · L89-L89 {#decl-zfialv-89-gs_f4} + +```abap +DATA: + GS_F4 TYPE LVC_S_F4. " F4 +``` + +#### GS_ROW_ID — data · L90-L90 {#decl-zfialv-90-gs_row_id} + +```abap +DATA: + GS_ROW_ID TYPE LVC_S_ROW. " Cursor +``` + +#### GS_COLUMN_ID — data · L91-L91 {#decl-zfialv-91-gs_column_id} + +```abap +DATA: + GS_COLUMN_ID TYPE LVC_S_COL. +``` + +#### GT_EXCLUDING — data · L93-L93 {#decl-zfialv-93-gt_excluding} + +```abap +DATA : GT_EXCLUDING TYPE SLIS_T_EXTAB. +``` + +#### GT_EVENT_EXIT — data · L94-L94 {#decl-zfialv-94-gt_event_exit} + +```abap +DATA: + GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT. +``` + +#### GV_TOOLBAR — data · L96-L96 {#decl-zfialv-96-gv_toolbar} + +```abap +DATA : GV_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. +``` + +#### GV_TOP_NODE — data · L97-L97 {#decl-zfialv-97-gv_top_node} + +```abap +DATA: + GV_TOP_NODE TYPE LVC_NKEY. +``` + +#### GV_ALV_TREE — data · L98-L98 {#decl-zfialv-98-gv_alv_tree} + +```abap +DATA: + GV_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE. +``` + +#### GV_ALV_ITEM — data · L99-L99 {#decl-zfialv-99-gv_alv_item} + +```abap +DATA: + GV_ALV_ITEM TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GT_ROW — data · L100-L100 {#decl-zfialv-100-gt_row} + +```abap +DATA: + GT_ROW TYPE LVC_T_ROW. " SELLECTION INDEX +``` + +#### GT_ROID — data · L101-L101 {#decl-zfialv-101-gt_roid} + +```abap +DATA: + GT_ROID TYPE LVC_T_ROID. +``` + +#### GT_EXCLUDE — data · L102-L102 {#decl-zfialv-102-gt_exclude} + +```abap +DATA: + GT_EXCLUDE TYPE UI_FUNCTIONS. +``` + +#### GS_EXCLUDE — data · L103-L103 {#decl-zfialv-103-gs_exclude} + +```abap +DATA: + GS_EXCLUDE TYPE UI_FUNC. +``` + +#### DC_GRID — data · L105-L105 {#decl-zfialv-105-dc_grid} + +```abap +DATA : DC_GRID TYPE REF TO CL_GUI_DOCKING_CONTAINER. +``` + +#### CC_GRID — data · L106-L106 {#decl-zfialv-106-cc_grid} + +```abap +DATA: + CC_GRID TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_GRID2 — data · L107-L107 {#decl-zfialv-107-cc_grid2} + +```abap +DATA: + CC_GRID2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. +``` + +#### CC_DIALOG — data · L108-L108 {#decl-zfialv-108-cc_dialog} + +```abap +DATA: + CC_DIALOG TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. +``` + +#### GV_EVENT_RECEIVER — data · L109-L109 {#decl-zfialv-109-gv_event_receiver} + +```abap +DATA: + GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. +``` + +#### GT_UCOMM — data · L111-L111 {#decl-zfialv-111-gt_ucomm} + +```abap +DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. "버튼제어 +``` + +#### C_BDC01 — constants · L115-L115 {#decl-zfialv-115-c_bdc01} + +```abap +CONSTANTS : C_BDC01(9) TYPE C VALUE 'Sequence'. +``` + +#### C_BDC02 — constants · L116-L116 {#decl-zfialv-116-c_bdc02} + +```abap +CONSTANTS: + C_BDC02(9) TYPE C VALUE 'Field'. +``` + +#### C_BDC03 — constants · L117-L117 {#decl-zfialv-117-c_bdc03} + +```abap +CONSTANTS: + C_BDC03(9) TYPE C VALUE 'Type'. +``` + +#### C_BDC04 — constants · L118-L118 {#decl-zfialv-118-c_bdc04} + +```abap +CONSTANTS: + C_BDC04(9) TYPE C VALUE 'Length'. +``` + +#### C_BDC05 — constants · L119-L119 {#decl-zfialv-119-c_bdc05} + +```abap +CONSTANTS: + C_BDC05(9) TYPE C VALUE 'Required'. +``` + +#### C_BDC06 — constants · L120-L120 {#decl-zfialv-120-c_bdc06} + +```abap +CONSTANTS: + C_BDC06(9) TYPE C VALUE 'Example'. +``` + +### `ZFICOM` (201건) + +#### ICON — type-pool · L7-L7 {#decl-zficom-7-icon} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### KCDE — type-pool · L7-L7 {#decl-zficom-7-kcde} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### SHLP — type-pool · L7-L7 {#decl-zficom-7-shlp} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### TPIT — type-pool · L7-L7 {#decl-zficom-7-tpit} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### VRM — type-pool · L7-L7 {#decl-zficom-7-vrm} + +```abap +TYPE-POOLS : SHLP, KCDE, VRM, ICON, TPIT. +``` + +#### T001 — tables · L11-L11 {#decl-zficom-11-t001} + +```abap +TABLES : T001. " Company Codes +``` + +#### T005 — tables · L12-L12 {#decl-zficom-12-t005} + +```abap +TABLES: + T005. " Land +``` + +#### BKPF — tables · L13-L13 {#decl-zficom-13-bkpf} + +```abap +TABLES: + BKPF. " Accounting Document Heade +``` + +#### BSEG — tables · L14-L14 {#decl-zficom-14-bseg} + +```abap +TABLES: + BSEG. " Accounting Document Segment +``` + +#### BSID — tables · L15-L15 {#decl-zficom-15-bsid} + +```abap +TABLES: + BSID. " Accounting: Secondary Index for Customers +``` + +#### BSAD — tables · L16-L16 {#decl-zficom-16-bsad} + +```abap +TABLES: + BSAD. " Accounting: Secondary Index for Customers +``` + +#### BSIK — tables · L18-L18 {#decl-zficom-18-bsik} + +```abap +TABLES: + BSIK. " Accounting: Secondary Index for Vendors +``` + +#### BSAK — tables · L19-L19 {#decl-zficom-19-bsak} + +```abap +TABLES: + BSAK. " Accounting: Secondary Index for Vendors +``` + +#### BSIS — tables · L21-L21 {#decl-zficom-21-bsis} + +```abap +TABLES: + BSIS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSAS — tables · L22-L22 {#decl-zficom-22-bsas} + +```abap +TABLES: + BSAS. " Accounting: Secondary Index for G/L Accounts +``` + +#### BSEC — tables · L24-L24 {#decl-zficom-24-bsec} + +```abap +TABLES: + BSEC. " One-Time Account Data Document Segment +``` + +#### BSET — tables · L25-L25 {#decl-zficom-25-bset} + +```abap +TABLES: + BSET. " Tax Data Document Segment +``` + +#### BSED — tables · L26-L26 {#decl-zficom-26-bsed} + +```abap +TABLES: + BSED. " n Bill of Exchange Fields Docume +``` + +#### VBKPF — tables · L27-L27 {#decl-zficom-27-vbkpf} + +```abap +TABLES: + VBKPF. " Document Header for Document Parking +``` + +#### VBSEGS — tables · L28-L28 {#decl-zficom-28-vbsegs} + +```abap +TABLES: + VBSEGS. " Document Segment for Document Parking +``` + +#### VBSEGD — tables · L30-L30 {#decl-zficom-30-vbsegd} + +```abap +TABLES: + VBSEGD. " Document Segment for Customer Document Parking +``` + +#### VBSEGK — tables · L31-L31 {#decl-zficom-31-vbsegk} + +```abap +TABLES: + VBSEGK. " Document Segment for Vendor Document Parking +``` + +#### VBSET — tables · L32-L32 {#decl-zficom-32-vbset} + +```abap +TABLES: + VBSET. " Document Segment for Taxes Document Parking +``` + +#### VBSEC — tables · L33-L33 {#decl-zficom-33-vbsec} + +```abap +TABLES: + VBSEC. " Document Parking One-Time Data Document Segment +``` + +#### SKA1 — tables · L34-L34 {#decl-zficom-34-ska1} + +```abap +TABLES: + SKA1. " G/L Account Master (Chart of Accounts) +``` + +#### SKB1 — tables · L35-L35 {#decl-zficom-35-skb1} + +```abap +TABLES: + SKB1. " G/L account master (company code) +``` + +#### LFA1 — tables · L36-L36 {#decl-zficom-36-lfa1} + +```abap +TABLES: + LFA1. " Vendor Master (General Section) +``` + +#### LFB1 — tables · L37-L37 {#decl-zficom-37-lfb1} + +```abap +TABLES: + LFB1. " Vendor Master (Company Code) +``` + +#### KNA1 — tables · L38-L38 {#decl-zficom-38-kna1} + +```abap +TABLES: + KNA1. " General Data in Customer Master +``` + +#### KNB1 — tables · L39-L39 {#decl-zficom-39-knb1} + +```abap +TABLES: + KNB1. " Customer Master (Company Code) +``` + +#### ADRC — tables · L40-L40 {#decl-zficom-40-adrc} + +```abap +TABLES: + ADRC. " Addresses (Business Address Services) +``` + +#### USR01 — tables · L41-L41 {#decl-zficom-41-usr01} + +```abap +TABLES: + USR01. " User master record (runtime data) +``` + +#### USR05 — tables · L42-L42 {#decl-zficom-42-usr05} + +```abap +TABLES: + USR05. " User Master Parameter ID +``` + +#### USR21 — tables · L43-L43 {#decl-zficom-43-usr21} + +```abap +TABLES: + USR21. " Assign user name address key +``` + +#### ZFIT0160 — tables · L45-L45 {#decl-zficom-45-zfit0160} + +```abap +TABLES: + ZFIT0160. " FI 권한 관리 테이블 +``` + +#### CTU_PARAMS — tables · L48-L48 {#decl-zficom-48-ctu_params} + +```abap +TABLES : CTU_PARAMS. "CALL TRANSACTION USING... +``` + +#### GT_SQL — data · L54-L54 {#decl-zficom-54-gt_sql} + +```abap +DATA : GT_SQL(72) OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIELD — data · L56-L56 {#decl-zficom-56-gt_field} + +```abap +DATA : GT_FIELD LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE. +``` + +#### GV_FIELD — data · L57-L57 {#decl-zficom-57-gv_field} + +```abap +DATA: + GV_FIELD LIKE HELP_INFO-FIELDNAME. +``` + +#### GV_VALUE — data · L58-L58 {#decl-zficom-58-gv_value} + +```abap +DATA: + GV_VALUE LIKE HELP_INFO-FLDVALUE. +``` + +#### GV_TABIX — data · L59-L59 {#decl-zficom-59-gv_tabix} + +```abap +DATA: + GV_TABIX LIKE SY-TABIX. +``` + +#### GT_SHLP — data · L61-L61 {#decl-zficom-61-gt_shlp} + +```abap +DATA : GT_SHLP TYPE SHLP_DESCR_T. +``` + +#### GT_DYNFIELDS — data · L63-L63 {#decl-zficom-63-gt_dynfields} + +```abap +DATA : GT_DYNFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RETVALUES — data · L64-L64 {#decl-zficom-64-gt_retvalues} + +```abap +DATA: + GT_RETVALUES LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RECEIVE — data · L65-L65 {#decl-zficom-65-gt_receive} + +```abap +DATA: + GT_RECEIVE LIKE DYNPREAD OCCURS 0 WITH HEADER LINE. +``` + +#### GT_EXCODE — data · L66-L66 {#decl-zficom-66-gt_excode} + +```abap +DATA: + GT_EXCODE TYPE TABLE OF SY-UCOMM. " Button Control +``` + +#### GV_DBCNT — data · L68-L68 {#decl-zficom-68-gv_dbcnt} + +```abap +DATA : GV_DBCNT LIKE SY-DBCNT. " Inquiry count +``` + +#### GV_TFILL — data · L69-L69 {#decl-zficom-69-gv_tfill} + +```abap +DATA: + GV_TFILL LIKE SY-TFILL. " Current number of lines +``` + +#### GV_SUBRC — data · L70-L70 {#decl-zficom-70-gv_subrc} + +```abap +DATA: + GV_SUBRC LIKE SY-SUBRC. " Return Value +``` + +#### GV_UCOMM — data · L71-L71 {#decl-zficom-71-gv_ucomm} + +```abap +DATA: + GV_UCOMM LIKE SY-UCOMM. " Function Code +``` + +#### GV_TITLE — data · L72-L72 {#decl-zficom-72-gv_title} + +```abap +DATA: + GV_TITLE LIKE SY-TITLE. " Title +``` + +#### GV_DATUM — data · L73-L73 {#decl-zficom-73-gv_datum} + +```abap +DATA: + GV_DATUM LIKE SY-DATUM. " Date +``` + +#### GV_TYPE — data · L74-L74 {#decl-zficom-74-gv_type} + +```abap +DATA: + GV_TYPE LIKE DD01V-DATATYPE. " Num/Char Flag +``` + +#### GV_SEQNO — data · L75-L75 {#decl-zficom-75-gv_seqno} + +```abap +DATA: + GV_SEQNO(3) TYPE N. " Seqence No +``` + +#### GV_CURSOR_FIELD — data · L76-L76 {#decl-zficom-76-gv_cursor_field} + +```abap +DATA: + GV_CURSOR_FIELD(30). " CURSOR FIELD +``` + +#### GV_CURSOR_LINE — data · L77-L77 {#decl-zficom-77-gv_cursor_line} + +```abap +DATA: + GV_CURSOR_LINE LIKE SY-LILLI. " CURSOR LINE +``` + +#### GV_10_D — data · L79-L79 {#decl-zficom-79-gv_10_d} + +```abap +DATA : GV_10_D(16) TYPE P DECIMALS 0. +``` + +#### GV_TABIN — data · L81-L81 {#decl-zficom-81-gv_tabin} + +```abap +DATA : GV_TABIN(06). " total count +``` + +#### GV_INDEX — data · L82-L82 {#decl-zficom-82-gv_index} + +```abap +DATA: + GV_INDEX(06). " progress count +``` + +#### GV_KBETR — data · L83-L83 {#decl-zficom-83-gv_kbetr} + +```abap +DATA: + GV_KBETR(05). " progress percent +``` + +#### GV_INDIC — data · L84-L84 {#decl-zficom-84-gv_indic} + +```abap +DATA: + GV_INDIC(80). " progress status +``` + +#### GV_TEXT — data · L85-L85 {#decl-zficom-85-gv_text} + +```abap +DATA: + GV_TEXT(100). +``` + +#### GF_CHECK — data · L87-L87 {#decl-zficom-87-gf_check} + +```abap +DATA : GF_CHECK(1). " Input Check +``` + +#### GF_MARK — data · L88-L88 {#decl-zficom-88-gf_mark} + +```abap +DATA: + GF_MARK(1). " Select Flag +``` + +#### GF_LOCK — data · L89-L89 {#decl-zficom-89-gf_lock} + +```abap +DATA: + GF_LOCK(1). " Lock Flag +``` + +#### GF_ANSWER — data · L90-L90 {#decl-zficom-90-gf_answer} + +```abap +DATA: + GF_ANSWER(1). " MessageBox Return Value +``` + +#### GF_COLOR — data · L91-L91 {#decl-zficom-91-gf_color} + +```abap +DATA: + GF_COLOR(1). " LINE COLOR +``` + +#### GV_NAME — data · L94-L94 {#decl-zficom-94-gv_name} + +```abap +DATA : GV_NAME TYPE VRM_ID. +``` + +#### GT_LIST — data · L95-L95 {#decl-zficom-95-gt_list} + +```abap +DATA: + GT_LIST TYPE VRM_VALUES. +``` + +#### GS_VALUE — data · L96-L96 {#decl-zficom-96-gs_value} + +```abap +DATA: + GS_VALUE LIKE LINE OF GT_LIST. +``` + +#### GV_FNAME — data · L98-L98 {#decl-zficom-98-gv_fname} + +```abap +DATA : GV_FNAME TYPE RS38L_FNAM. +``` + +#### GS_OPTIONS — data · L99-L99 {#decl-zficom-99-gs_options} + +```abap +DATA: + GS_OPTIONS TYPE SSFCOMPOP. +``` + +#### GS_DEVICE — data · L100-L100 {#decl-zficom-100-gs_device} + +```abap +DATA: + GS_DEVICE TYPE SSFCTRLOP. +``` + +#### GV_TDDEST — data · L101-L101 {#decl-zficom-101-gv_tddest} + +```abap +DATA: + GV_TDDEST LIKE GS_OPTIONS-TDDEST VALUE 'LOCL'. +``` + +#### GS_JOB_OUTPUT_INFO — data · L102-L102 {#decl-zficom-102-gs_job_output_info} + +```abap +DATA: + GS_JOB_OUTPUT_INFO TYPE SSFCRESCL. +``` + +#### GV_BELNR — data · L104-L104 {#decl-zficom-104-gv_belnr} + +```abap +DATA : GV_BELNR LIKE BKPF-BELNR. +``` + +#### GV_BUKRS — data · L105-L105 {#decl-zficom-105-gv_bukrs} + +```abap +DATA: + GV_BUKRS LIKE BKPF-BUKRS. +``` + +#### GV_GJAHR — data · L106-L106 {#decl-zficom-106-gv_gjahr} + +```abap +DATA: + GV_GJAHR LIKE BKPF-GJAHR. +``` + +#### GV_BUZEI — data · L107-L107 {#decl-zficom-107-gv_buzei} + +```abap +DATA: + GV_BUZEI LIKE BSEG-BUZEI. +``` + +#### GT_BBKPF — data · L108-L108 {#decl-zficom-108-gt_bbkpf} + +```abap +DATA : GT_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBSEG — data · L109-L109 {#decl-zficom-109-gt_bbseg} + +```abap +DATA: + GT_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BBTAX — data · L110-L110 {#decl-zficom-110-gt_bbtax} + +```abap +DATA: + GT_BBTAX LIKE BBTAX OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BWITH — data · L111-L111 {#decl-zficom-111-gt_bwith} + +```abap +DATA: + GT_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELK — data · L112-L112 {#decl-zficom-112-gt_bselk} + +```abap +DATA: + GT_BSELK LIKE BSELK OCCURS 0 WITH HEADER LINE. +``` + +#### GT_BSELP — data · L113-L113 {#decl-zficom-113-gt_bselp} + +```abap +DATA: + GT_BSELP LIKE BSELP OCCURS 0 WITH HEADER LINE. +``` + +#### GT_FIMSG — data · L115-L115 {#decl-zficom-115-gt_fimsg} + +```abap +DATA: + GT_FIMSG LIKE FIMSG OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ACCCHG — data · L117-L117 {#decl-zficom-117-gt_accchg} + +```abap +DATA : GT_ACCCHG LIKE ACCCHG OCCURS 0 WITH HEADER LINE. +``` + +#### GS_ACCPMBLK — data · L119-L119 {#decl-zficom-119-gs_accpmblk} + +```abap +DATA : GS_ACCPMBLK LIKE ACCPMBLK. +``` + +#### GT_ROWS — data · L121-L121 {#decl-zficom-121-gt_rows} + +```abap +DATA : GT_ROWS TYPE LVC_T_ROW. " ALV control: Table rows +``` + +#### GS_ROWS — data · L122-L122 {#decl-zficom-122-gs_rows} + +```abap +DATA: + GS_ROWS TYPE LVC_S_ROW. " ALV control: Line description +``` + +#### GV_ROW_POS — data · L123-L123 {#decl-zficom-123-gv_row_pos} + +```abap +DATA: + GV_ROW_POS TYPE I. +``` + +#### GT_EXTAB — data · L125-L125 {#decl-zficom-125-gt_extab} + +```abap +DATA : GT_EXTAB LIKE SY-UCOMM OCCURS 0 WITH HEADER LINE. +``` + +#### GS_EMAIL_DATA — data · L127-L129 {#decl-zficom-127-gs_email_data} + +```abap +DATA : BEGIN OF GS_EMAIL_DATA. + INCLUDE STRUCTURE SODOCCHGI1. +DATA : END OF GS_EMAIL_DATA. +``` + +#### GT_EMAIL — data · L131-L131 {#decl-zficom-131-gt_email} + +```abap +DATA : GT_EMAIL LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_ETEXT — data · L132-L132 {#decl-zficom-132-gt_etext} + +```abap +DATA: + GT_ETEXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RSPAR — data · L134-L134 {#decl-zficom-134-gt_rspar} + +```abap +DATA : GT_RSPAR LIKE RSPARAMS OCCURS 10 WITH HEADER LINE. +``` + +#### GV_SMTP_ADDR — data · L136-L136 {#decl-zficom-136-gv_smtp_addr} + +```abap +DATA : GV_SMTP_ADDR LIKE ADR6-SMTP_ADDR. +``` + +#### GF_FIRST — data · L138-L138 {#decl-zficom-138-gf_first} + +```abap +DATA : GF_FIRST(1) TYPE C. +``` + +#### GF_NEW — data · L139-L139 {#decl-zficom-139-gf_new} + +```abap +DATA: + GF_NEW(1) TYPE C. +``` + +#### GF_END — data · L140-L140 {#decl-zficom-140-gf_end} + +```abap +DATA: + GF_END(1) TYPE C. +``` + +#### GF_LAST — data · L141-L141 {#decl-zficom-141-gf_last} + +```abap +DATA: + GF_LAST(1) TYPE C. +``` + +#### GV_BUK — data · L144-L144 {#decl-zficom-144-gv_buk} + +```abap +DATA : GV_BUK LIKE BKPF-BUKRS. " Company Code +``` + +#### GV_KURST — data · L145-L145 {#decl-zficom-145-gv_kurst} + +```abap +DATA: + GV_KURST LIKE TCURR-KURST. " Exchange rate type +``` + +#### GV_KALSM — data · L146-L146 {#decl-zficom-146-gv_kalsm} + +```abap +DATA: + GV_KALSM LIKE T005-KALSM. " Procedure +``` + +#### GV_KOKRS — data · L147-L147 {#decl-zficom-147-gv_kokrs} + +```abap +DATA: + GV_KOKRS LIKE CSKT-KOKRS. " Controlling Area +``` + +#### GT_BSE — data · L149-L165 {#decl-zficom-149-gt_bse} + +```abap +DATA : BEGIN OF GT_BSE OCCURS 0, + BUKRS_CLR LIKE BSE_CLR-BUKRS_CLR, "반제전표-회사코드 + BELNR_CLR LIKE BSE_CLR-BELNR_CLR, "반제전표-전표번호 + GJAHR_CLR LIKE BSE_CLR-GJAHR_CLR, "반제전표-회계연도 + INDEX_CLR LIKE BSE_CLR-INDEX_CLR, "반제정보에 대한 일련번호 + WAERS LIKE BSE_CLR-WAERS, "통화 키 + CLRIN LIKE BSE_CLR-CLRIN, "반제유형 + BUKRS LIKE BSE_CLR-BUKRS, "원전표-회사코드 + BELNR LIKE BSE_CLR-BELNR, "원전표-전표번호 + GJAHR LIKE BSE_CLR-GJAHR, "원전표-회계연도 + BUZEI LIKE BSE_CLR-BUZEI, "원전표-개별항목번호 + SHKZG LIKE BSE_CLR-SHKZG, "차대변지시자 + DMBTR LIKE BSE_CLR-DMBTR, "금액(현지통화) + DIFHW LIKE BSE_CLR-DIFHW, "차액(현지통화) + WRBTR LIKE BSE_CLR-WRBTR, "금액(전표통화) + DIFFW LIKE BSE_CLR-DIFFW, "차약(전표통화) + END OF GT_BSE. +``` + +#### GT_BDC — data · L168-L170 {#decl-zficom-168-gt_bdc} + +```abap +DATA : BEGIN OF GT_BDC OCCURS 0. + INCLUDE STRUCTURE BDCDATA. +DATA : END OF GT_BDC. +``` + +#### GT_MESS — data · L172-L172 {#decl-zficom-172-gt_mess} + +```abap +DATA : GT_MESS LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. +``` + +#### GV_MODE — data · L174-L174 {#decl-zficom-174-gv_mode} + +```abap +DATA : GV_MODE(1) VALUE 'N'. "BDC MODE +``` + +#### GS_LOG — data · L176-L176 {#decl-zficom-176-gs_log} + +```abap +DATA : GS_LOG TYPE BAL_S_LOG. +``` + +#### GS_LOG_HANDLE — data · L177-L177 {#decl-zficom-177-gs_log_handle} + +```abap +DATA: + GS_LOG_HANDLE TYPE BALLOGHNDL. +``` + +#### GS_DISPLAY_PROFILE — data · L178-L178 {#decl-zficom-178-gs_display_profile} + +```abap +DATA: + GS_DISPLAY_PROFILE TYPE BAL_S_PROF. +``` + +#### GT_LOG_HANDLE — data · L179-L179 {#decl-zficom-179-gt_log_handle} + +```abap +DATA: + GT_LOG_HANDLE TYPE BAL_T_LOGH. +``` + +#### GS_MSG — data · L180-L180 {#decl-zficom-180-gs_msg} + +```abap +DATA: + GS_MSG TYPE BAL_S_MSG. +``` + +#### GS_BAL_FCAT — data · L181-L181 {#decl-zficom-181-gs_bal_fcat} + +```abap +DATA: + GS_BAL_FCAT TYPE BAL_S_FCAT. +``` + +#### GV_COL_POS — data · L182-L182 {#decl-zficom-182-gv_col_pos} + +```abap +DATA: + GV_COL_POS TYPE I. +``` + +#### GT_STRUCT — data · L185-L193 {#decl-zficom-185-gt_struct} + +```abap +DATA : BEGIN OF GT_STRUCT OCCURS 0, + SEQNO(03), "Sequence no + FNAME(60), "Field name + FTYPE(04), "Type + FLENG(03), "Length + FFLAG(50), "Required + FEXAM(80), "Example +* FNOTE(80), "Note + END OF GT_STRUCT. +``` + +#### C_BUKRS — constants · L198-L198 {#decl-zficom-198-c_bukrs} + +```abap +CONSTANTS: + C_BUKRS LIKE BKPF-BUKRS VALUE 'KR01'. " Company Code +``` + +#### C_WAERS — constants · L199-L199 {#decl-zficom-199-c_waers} + +```abap +CONSTANTS: + C_WAERS LIKE BKPF-WAERS VALUE 'KRW'. " Currency Key +``` + +#### C_LANGU — constants · L200-L200 {#decl-zficom-200-c_langu} + +```abap +CONSTANTS: + C_LANGU LIKE SKAT-SPRAS VALUE '3'. " Country Key +``` + +#### C_LAND1 — constants · L201-L201 {#decl-zficom-201-c_land1} + +```abap +CONSTANTS: + C_LAND1 LIKE T001-LAND1 VALUE 'KR'. " Country Key +``` + +#### C_KTOPL — constants · L202-L202 {#decl-zficom-202-c_ktopl} + +```abap +CONSTANTS: + C_KTOPL LIKE SKAT-KTOPL VALUE '1000'. " Chart of Accounts +``` + +#### C_KOKRS — constants · L203-L203 {#decl-zficom-203-c_kokrs} + +```abap +CONSTANTS: + C_KOKRS LIKE CSKT-KOKRS VALUE 'KR01'. " Controlling Area +``` + +#### C_KALSM — constants · L204-L204 {#decl-zficom-204-c_kalsm} + +```abap +CONSTANTS: + C_KALSM LIKE T007S-KALSM VALUE 'TAXKR'. " Procedure +``` + +#### C_KURST — constants · L205-L205 {#decl-zficom-205-c_kurst} + +```abap +CONSTANTS: + C_KURST LIKE TCURR-KURST VALUE 'M'. " Exchange Rate Type +``` + +#### C_SPRAS — constants · L206-L206 {#decl-zficom-206-c_spras} + +```abap +CONSTANTS: + C_SPRAS LIKE T001-SPRAS VALUE '3'. " Language Key +``` + +#### C_PARID — constants · L207-L207 {#decl-zficom-207-c_parid} + +```abap +CONSTANTS: + C_PARID LIKE USR05-PARID VALUE 'ZSP'. " 사용자종속언어 +``` + +#### C_A — constants · L208-L208 {#decl-zficom-208-c_a} + +```abap +CONSTANTS: + C_A(1) TYPE C VALUE 'A'. +``` + +#### C_B — constants · L209-L209 {#decl-zficom-209-c_b} + +```abap +CONSTANTS: + C_B(1) TYPE C VALUE 'B'. +``` + +#### C_C — constants · L210-L210 {#decl-zficom-210-c_c} + +```abap +CONSTANTS: + C_C(1) TYPE C VALUE 'C'. +``` + +#### C_D — constants · L211-L211 {#decl-zficom-211-c_d} + +```abap +CONSTANTS: + C_D(1) TYPE C VALUE 'D'. +``` + +#### C_E — constants · L212-L212 {#decl-zficom-212-c_e} + +```abap +CONSTANTS: + C_E(1) TYPE C VALUE 'E'. +``` + +#### C_F — constants · L213-L213 {#decl-zficom-213-c_f} + +```abap +CONSTANTS: + C_F(1) TYPE C VALUE 'F'. +``` + +#### C_G — constants · L214-L214 {#decl-zficom-214-c_g} + +```abap +CONSTANTS: + C_G(1) TYPE C VALUE 'G'. +``` + +#### C_H — constants · L215-L215 {#decl-zficom-215-c_h} + +```abap +CONSTANTS: + C_H(1) TYPE C VALUE 'H'. +``` + +#### C_I — constants · L216-L216 {#decl-zficom-216-c_i} + +```abap +CONSTANTS: + C_I(1) TYPE C VALUE 'I'. +``` + +#### C_J — constants · L217-L217 {#decl-zficom-217-c_j} + +```abap +CONSTANTS: + C_J(1) TYPE C VALUE 'J'. +``` + +#### C_K — constants · L218-L218 {#decl-zficom-218-c_k} + +```abap +CONSTANTS: + C_K(1) TYPE C VALUE 'K'. +``` + +#### C_L — constants · L219-L219 {#decl-zficom-219-c_l} + +```abap +CONSTANTS: + C_L(1) TYPE C VALUE 'L'. +``` + +#### C_M — constants · L220-L220 {#decl-zficom-220-c_m} + +```abap +CONSTANTS: + C_M(1) TYPE C VALUE 'M'. +``` + +#### C_N — constants · L221-L221 {#decl-zficom-221-c_n} + +```abap +CONSTANTS: + C_N(1) TYPE C VALUE 'N'. +``` + +#### C_O — constants · L222-L222 {#decl-zficom-222-c_o} + +```abap +CONSTANTS: + C_O(1) TYPE C VALUE 'O'. +``` + +#### C_P — constants · L223-L223 {#decl-zficom-223-c_p} + +```abap +CONSTANTS: + C_P(1) TYPE C VALUE 'P'. +``` + +#### C_Q — constants · L224-L224 {#decl-zficom-224-c_q} + +```abap +CONSTANTS: + C_Q(1) TYPE C VALUE 'Q'. +``` + +#### C_R — constants · L225-L225 {#decl-zficom-225-c_r} + +```abap +CONSTANTS: + C_R(1) TYPE C VALUE 'R'. +``` + +#### C_S — constants · L226-L226 {#decl-zficom-226-c_s} + +```abap +CONSTANTS: + C_S(1) TYPE C VALUE 'S'. +``` + +#### C_T — constants · L227-L227 {#decl-zficom-227-c_t} + +```abap +CONSTANTS: + C_T(1) TYPE C VALUE 'T'. +``` + +#### C_U — constants · L228-L228 {#decl-zficom-228-c_u} + +```abap +CONSTANTS: + C_U(1) TYPE C VALUE 'U'. +``` + +#### C_V — constants · L229-L229 {#decl-zficom-229-c_v} + +```abap +CONSTANTS: + C_V(1) TYPE C VALUE 'V'. +``` + +#### C_W — constants · L230-L230 {#decl-zficom-230-c_w} + +```abap +CONSTANTS: + C_W(1) TYPE C VALUE 'W'. +``` + +#### C_X — constants · L231-L231 {#decl-zficom-231-c_x} + +```abap +CONSTANTS: + C_X(1) TYPE C VALUE 'X'. +``` + +#### C_Y — constants · L232-L232 {#decl-zficom-232-c_y} + +```abap +CONSTANTS: + C_Y(1) TYPE C VALUE 'Y'. +``` + +#### C_Z — constants · L233-L233 {#decl-zficom-233-c_z} + +```abap +CONSTANTS: + C_Z(1) TYPE C VALUE 'Z'. +``` + +#### C_0 — constants · L234-L234 {#decl-zficom-234-c_0} + +```abap +CONSTANTS: + C_0(1) TYPE C VALUE '0'. +``` + +#### C_1 — constants · L235-L235 {#decl-zficom-235-c_1} + +```abap +CONSTANTS: + C_1(1) TYPE C VALUE '1'. +``` + +#### C_2 — constants · L236-L236 {#decl-zficom-236-c_2} + +```abap +CONSTANTS: + C_2(1) TYPE C VALUE '2'. +``` + +#### C_3 — constants · L237-L237 {#decl-zficom-237-c_3} + +```abap +CONSTANTS: + C_3(1) TYPE C VALUE '3'. +``` + +#### C_4 — constants · L238-L238 {#decl-zficom-238-c_4} + +```abap +CONSTANTS: + C_4(1) TYPE C VALUE '4'. +``` + +#### C_5 — constants · L239-L239 {#decl-zficom-239-c_5} + +```abap +CONSTANTS: + C_5(1) TYPE C VALUE '5'. +``` + +#### C_6 — constants · L240-L240 {#decl-zficom-240-c_6} + +```abap +CONSTANTS: + C_6(1) TYPE C VALUE '6'. +``` + +#### C_7 — constants · L241-L241 {#decl-zficom-241-c_7} + +```abap +CONSTANTS: + C_7(1) TYPE C VALUE '7'. +``` + +#### C_8 — constants · L242-L242 {#decl-zficom-242-c_8} + +```abap +CONSTANTS: + C_8(1) TYPE C VALUE '8'. +``` + +#### C_9 — constants · L243-L243 {#decl-zficom-243-c_9} + +```abap +CONSTANTS: + C_9(1) TYPE C VALUE '9'. +``` + +#### C_EQ — constants · L244-L244 {#decl-zficom-244-c_eq} + +```abap +CONSTANTS: + C_EQ(2) TYPE C VALUE 'EQ'. +``` + +#### C_NE — constants · L245-L245 {#decl-zficom-245-c_ne} + +```abap +CONSTANTS: + C_NE(2) TYPE C VALUE 'NE'. +``` + +#### C_BT — constants · L246-L246 {#decl-zficom-246-c_bt} + +```abap +CONSTANTS: + C_BT(2) TYPE C VALUE 'BT'. +``` + +#### C_CP — constants · L247-L247 {#decl-zficom-247-c_cp} + +```abap +CONSTANTS: + C_CP(2) TYPE C VALUE 'CP'. +``` + +#### C_NP — constants · L248-L248 {#decl-zficom-248-c_np} + +```abap +CONSTANTS: + C_NP(2) TYPE C VALUE 'NP'. +``` + +#### C_LE — constants · L249-L249 {#decl-zficom-249-c_le} + +```abap +CONSTANTS: + C_LE(2) TYPE C VALUE 'LE'. +``` + +#### C_LT — constants · L250-L250 {#decl-zficom-250-c_lt} + +```abap +CONSTANTS: + C_LT(2) TYPE C VALUE 'LT'. +``` + +#### C_GE — constants · L251-L251 {#decl-zficom-251-c_ge} + +```abap +CONSTANTS: + C_GE(2) TYPE C VALUE 'GE'. +``` + +#### C_GT — constants · L252-L252 {#decl-zficom-252-c_gt} + +```abap +CONSTANTS: + C_GT(2) TYPE C VALUE 'GT'. +``` + +#### C_FBV0 — constants · L253-L253 {#decl-zficom-253-c_fbv0} + +```abap +CONSTANTS: + C_FBV0 LIKE BKPF-TCODE VALUE 'FBV0'. " 임시전표전기 T-Code +``` + +#### C_FBV1 — constants · L254-L254 {#decl-zficom-254-c_fbv1} + +```abap +CONSTANTS: + C_FBV1 LIKE BKPF-TCODE VALUE 'FBV1'. " 임시전표생성 T-Code +``` + +#### C_FB01 — constants · L255-L255 {#decl-zficom-255-c_fb01} + +```abap +CONSTANTS: + C_FB01 LIKE BKPF-TCODE VALUE 'FB01'. " 전표생성 T-Code +``` + +#### C_FB05 — constants · L256-L256 {#decl-zficom-256-c_fb05} + +```abap +CONSTANTS: + C_FB05 LIKE BKPF-TCODE VALUE 'FB05'. " 전표반제 T-Code +``` + +#### C_FB08 — constants · L257-L257 {#decl-zficom-257-c_fb08} + +```abap +CONSTANTS: + C_FB08 LIKE BKPF-TCODE VALUE 'FB08'. " 전표역분개-Code +``` + +#### ALPHA_INPUT — macro · L267-L273 {#decl-zficom-267-alpha_input} + +```abap +DEFINE ALPHA_INPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### ALPHA_OUTPUT — macro · L282-L288 {#decl-zficom-282-alpha_output} + +```abap +DEFINE ALPHA_OUTPUT. + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + INPUT = &1 + IMPORTING + OUTPUT = &2. +END-OF-DEFINITION. +``` + +#### SET_RANGES — macro · L294-L301 {#decl-zficom-294-set_ranges} + +```abap +DEFINE SET_RANGES. + CLEAR &1. + &1-SIGN = &2. + &1-OPTION = &3. + &1-LOW = &4. + &1-HIGH = &5. + COLLECT &1. +END-OF-DEFINITION. +``` + +#### LAST_DAY — macro · L310-L316 {#decl-zficom-310-last_day} + +```abap +DEFINE LAST_DAY. + CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' + EXPORTING + DAY_IN = &1 + IMPORTING + LAST_DAY_OF_MONTH = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_UNIT — macro · L322-L327 {#decl-zficom-322-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L333-L340 {#decl-zficom-333-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L346-L353 {#decl-zficom-346-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### WRITE_STCD2 — macro · L359-L361 {#decl-zficom-359-write_stcd2} + +```abap +DEFINE WRITE_STCD2. + WRITE &1 TO &2 USING EDIT MASK '___-__-_____'. +END-OF-DEFINITION. +``` + +#### WRITE_STCD1 — macro · L367-L369 {#decl-zficom-367-write_stcd1} + +```abap +DEFINE WRITE_STCD1. + WRITE &1 TO &2 USING EDIT MASK '______-_______'. +END-OF-DEFINITION. +``` + +#### L_LANG — data · unit 로컬 · L441-L441 {#decl-zficom-441-l_lang} + +```abap + DATA : L_LANG LIKE SY-LANGU. +``` + +#### LV_PROG — data · unit 로컬 · L678-L678 {#decl-zficom-678-lv_prog} + +```abap + DATA : LV_PROG LIKE D020S-PROG. +``` + +#### LV_DNUM — data · unit 로컬 · L679-L679 {#decl-zficom-679-lv_dnum} + +```abap +DATA: + LV_DNUM LIKE D020S-DNUM. +``` + +#### LV_LEN — data · unit 로컬 · L858-L858 {#decl-zficom-858-lv_len} + +```abap + DATA : LV_LEN TYPE I. +``` + +#### LV_POS — data · unit 로컬 · L859-L859 {#decl-zficom-859-lv_pos} + +```abap +DATA: + LV_POS TYPE I. +``` + +#### LV_TYPE — data · unit 로컬 · L860-L860 {#decl-zficom-860-lv_type} + +```abap +DATA: + LV_TYPE(3) TYPE C. +``` + +#### LV_FILENAME — data · unit 로컬 · L861-L861 {#decl-zficom-861-lv_filename} + +```abap +DATA: + LV_FILENAME TYPE STRING. +``` + +#### LV_RAW_DATA — data · unit 로컬 · L862-L862 {#decl-zficom-862-lv_raw_data} + +```abap +DATA: + LV_RAW_DATA TYPE TRUXS_T_TEXT_DATA. +``` + +#### GT_XLS — data · unit 로컬 · L919-L919 {#decl-zficom-919-gt_xls} + +```abap + DATA: GT_XLS TYPE STANDARD TABLE OF KCDE_INTERN_STRUC WITH HEADER LINE. +``` + +#### — field-symbol · unit 로컬 · L920-L920 {#decl-zficom-920--fs-} + +```abap + FIELD-SYMBOLS TYPE ANY. +``` + +#### CHANGE_UNIT — macro · L1045-L1050 {#decl-zficom-1045-change_unit} + +```abap +DEFINE CHANGE_UNIT. + WRITE &1 TO &2 CURRENCY &3. + CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' + CHANGING + VALUE = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY — macro · L1056-L1063 {#decl-zficom-1056-change_currency} + +```abap +DEFINE CHANGE_CURRENCY. + CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' + EXPORTING + CURRENCY = &3 + SAP_AMOUNT = &1 + IMPORTING + IDOC_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### CHANGE_CURRENCY_SAP — macro · L1069-L1076 {#decl-zficom-1069-change_currency_sap} + +```abap +DEFINE CHANGE_CURRENCY_SAP. + CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' + EXPORTING + CURRENCY = &3 + IDOC_AMOUNT = &1 + IMPORTING + SAP_AMOUNT = &2. +END-OF-DEFINITION. +``` + +#### LV_TEXT — data · unit 로컬 · L1347-L1347 {#decl-zficom-1347-lv_text} + +```abap + DATA : LV_TEXT(100). +``` + +#### LV_PCEN — data · unit 로컬 · L1348-L1348 {#decl-zficom-1348-lv_pcen} + +```abap +DATA: + LV_PCEN(3). +``` + +### `ZFIR0170TOP` (32건) + +#### TKA02 — tables · L7-L7 {#decl-zfir0170top-7-tka02} + +```abap +TABLES: ZFIT0040, ZFIT0170, ZFIT0171, TKA02. +``` + +#### ZFIT0040 — tables · L7-L7 {#decl-zfir0170top-7-zfit0040} + +```abap +TABLES: ZFIT0040, ZFIT0170, ZFIT0171, TKA02. +``` + +#### ZFIT0170 — tables · L7-L7 {#decl-zfir0170top-7-zfit0170} + +```abap +TABLES: ZFIT0040, ZFIT0170, ZFIT0171, TKA02. +``` + +#### ZFIT0171 — tables · L7-L7 {#decl-zfir0170top-7-zfit0171} + +```abap +TABLES: ZFIT0040, ZFIT0170, ZFIT0171, TKA02. +``` + +#### GT_DATA — data · L14-L29 {#decl-zfir0170top-14-gt_data} + +```abap +DATA: BEGIN OF GT_DATA OCCURS 0. + INCLUDE STRUCTURE ZFIT0170. +DATA: CICON LIKE ICON-ID, "상태아이콘 + CFLAG_T LIKE DD07T-DDTEXT, "발생/취소 + BTYPE_T LIKE DD07T-DDTEXT, "거래유형명 + PRCTR_T LIKE CEPCT-LTEXT, "손익센터명 + BUPLA_T LIKE J_1BBRANCH-NAME, "사업장명 + KUNNR_T LIKE KNA1-NAME1, "고객명 + KUNNR2_T LIKE KNA1-NAME1, "지점고객명 + MWSKZ_T LIKE T007S-TEXT1, +* 집계표 + AMT_D01 LIKE ZFIT0170-DMBTR, + AMT_D03 LIKE ZFIT0170-DMBTR, + AMT_D05 LIKE ZFIT0170-DMBTR, + TOTAL LIKE ZFIT0170-DMBTR, + END OF GT_DATA. +``` + +#### GT_HEAD — data · L32-L42 {#decl-zfir0170top-32-gt_head} + +```abap +DATA: BEGIN OF GT_HEAD OCCURS 0, + SPMON LIKE ZFIT0170-SPMON, + PRCTR LIKE ZFIT0170-PRCTR, + PRCTR_T LIKE CEPCT-LTEXT, + KUNNR LIKE ZFIT0170-KUNNR, + KUNNR_T LIKE KNA1-NAME1, + AMT_D01 LIKE ZFIT0170-DMBTR, + AMT_D03 LIKE ZFIT0170-DMBTR, + AMT_D05 LIKE ZFIT0170-DMBTR, + TOTAL LIKE ZFIT0170-DMBTR, + END OF GT_HEAD. +``` + +#### GT_Z0170 — data · L44-L44 {#decl-zfir0170top-44-gt_z0170} + +```abap +DATA: GT_Z0170 LIKE ZFIT0170 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0170_S — data · L45-L45 {#decl-zfir0170top-45-gt_z0170_s} + +```abap +DATA: + GT_Z0170_S LIKE ZFIT0170 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0171 — data · L46-L46 {#decl-zfir0170top-46-gt_z0171} + +```abap +DATA: + GT_Z0171 LIKE ZFIT0171 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_Z0040 — data · L47-L47 {#decl-zfir0170top-47-gt_z0040} + +```abap +DATA: + GT_Z0040 LIKE ZFIT0040 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_RESULT — data · L48-L48 {#decl-zfir0170top-48-gt_result} + +```abap +DATA: + GT_RESULT LIKE ZFIS0151 OCCURS 0 WITH HEADER LINE. +``` + +#### GT_CEPCT — data · L51-L54 {#decl-zfir0170top-51-gt_cepct} + +```abap +DATA: BEGIN OF GT_CEPCT OCCURS 0, + PRCTR LIKE CEPCT-PRCTR, + KTEXT LIKE CEPCT-KTEXT, + END OF GT_CEPCT. +``` + +#### GT_BRANCH — data · L56-L59 {#decl-zfir0170top-56-gt_branch} + +```abap +DATA: BEGIN OF GT_BRANCH OCCURS 0, + BRANCH LIKE J_1BBRANCH-BRANCH, + NAME LIKE J_1BBRANCH-NAME, + END OF GT_BRANCH. +``` + +#### GT_KNA1 — data · L61-L64 {#decl-zfir0170top-61-gt_kna1} + +```abap +DATA: BEGIN OF GT_KNA1 OCCURS 0, + KUNNR LIKE KNA1-KUNNR, + NAME1 LIKE KNA1-NAME1, + END OF GT_KNA1. +``` + +#### GT_T007S — data · L66-L69 {#decl-zfir0170top-66-gt_t007s} + +```abap +DATA: BEGIN OF GT_T007S OCCURS 0, + MWSKZ LIKE T007S-MWSKZ, + TEXT1 LIKE T007S-TEXT1, + END OF GT_T007S. +``` + +#### GT_DOMAIN — data · L71-L75 {#decl-zfir0170top-71-gt_domain} + +```abap +DATA: BEGIN OF GT_DOMAIN OCCURS 0, + DOMNAME LIKE DD07T-DOMNAME, + DOMVALUE_L LIKE DD07T-DOMVALUE_L, + DDTEXT LIKE DD07T-DDTEXT, + END OF GT_DOMAIN. +``` + +#### R_STATS — ranges · L77-L77 {#decl-zfir0170top-77-r_stats} + +```abap +RANGES: R_STATS FOR ZFIT0170-STATS. +``` + +#### GV_XNEGP — data · L79-L79 {#decl-zfir0170top-79-gv_xnegp} + +```abap +DATA: GV_XNEGP LIKE BSEG-XNEGP. +``` + +#### GV_MONTH — data · L80-L80 {#decl-zfir0170top-80-gv_month} + +```abap +DATA: + GV_MONTH(2) TYPE N. +``` + +#### GS_STABLE — data · L83-L83 {#decl-zfir0170top-83-gs_stable} + +```abap +DATA : GS_STABLE TYPE LVC_S_STBL. +``` + +#### GV_ALV_GRID — data · L84-L84 {#decl-zfir0170top-84-gv_alv_grid} + +```abap +DATA: + GV_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. +``` + +#### GV_LAYO — data · L85-L85 {#decl-zfir0170top-85-gv_layo} + +```abap +DATA: + GV_LAYO TYPE LVC_S_LAYO. +``` + +#### GV_VARI — data · L86-L86 {#decl-zfir0170top-86-gv_vari} + +```abap +DATA: + GV_VARI TYPE DISVARIANT. +``` + +#### P_BUKRS — parameter · L97-L97 {#decl-zfir0170top-97-p_bukrs} + +```abap +PARAMETERS: P_BUKRS LIKE T001-BUKRS MEMORY ID BUK OBLIGATORY. +``` + +#### P_SPMON — parameter · L98-L98 {#decl-zfir0170top-98-p_spmon} + +```abap +PARAMETERS: + P_SPMON LIKE ZFIT0170-SPMON OBLIGATORY. +``` + +#### S_PRCTR — select-option · L99-L99 {#decl-zfir0170top-99-s_prctr} + +```abap +SELECT-OPTIONS: S_PRCTR FOR ZFIT0170-PRCTR. +``` + +#### S_KUNNR — select-option · L100-L100 {#decl-zfir0170top-100-s_kunnr} + +```abap +SELECT-OPTIONS: + S_KUNNR FOR ZFIT0170-KUNNR. +``` + +#### P_R1 — parameter · L106-L106 {#decl-zfir0170top-106-p_r1} + +```abap +PARAMETERS: P_R1 RADIOBUTTON GROUP G1 . "전체 +``` + +#### P_R2 — parameter · L108-L108 {#decl-zfir0170top-108-p_r2} + +```abap +PARAMETERS: P_R2 RADIOBUTTON GROUP G1. "완료 +``` + +#### P_RA — parameter · L116-L116 {#decl-zfir0170top-116-p_ra} + +```abap +PARAMETERS: P_RA RADIOBUTTON GROUP G2 . "전체 +``` + +#### P_RS — parameter · L118-L118 {#decl-zfir0170top-118-p_rs} + +```abap +PARAMETERS: P_RS RADIOBUTTON GROUP G2. "완료 +``` + +#### P_RE — parameter · L120-L120 {#decl-zfir0170top-120-p_re} + +```abap +PARAMETERS: P_RE RADIOBUTTON GROUP G2. "오류 +``` + +## Unit 목록 (컨테이너) + +| unit | 유형 | 위치 | 조각 | 한 줄 요약 | +|---|---|---|---|---| +| LCL_EVENT_RECEIVER~HANDLE_CLOSE | METHOD | ZFIALV L27-31 | 0 | | +| ALV_SETTING | FORM | ZFIALV L126-129 | 0 | | +| VARIANT_DEFAULT | FORM | ZFIALV L137-168 | 0 | | +| VARIANT_HELP | FORM | ZFIALV L176-199 | 0 | | +| VARIANT_FILL | FORM | ZFIALV L207-233 | 0 | | +| FIELDCATALOG_CALL | FORM | ZFIALV L241-256 | 0 | | +| EVENT_BUILD | FORM | ZFIALV L269-282 | 0 | | +| ALV_LAYOUT_BUILD | FORM | ZFIALV L291-308 | 0 | | +| ALV_DISPLAY | FORM | ZFIALV L317-354 | 0 | | +| COLOR_SETTING | FORM | ZFIALV L360-367 | 0 | | +| FIELD_SORTING | FORM | ZFIALV L380-393 | 0 | | +| COLINFO_SETTING | FORM | ZFIALV L403-410 | 0 | | +| ALV_HIERSEQ_DISPLAY | FORM | ZFIALV L419-460 | 0 | | +| BUILD_LAYOUT | FORM | ZFIALV L475-492 | 0 | | +| ALV_EVENTS_GET | FORM | ZFIALV L501-532 | 0 | | +| USE_FORM | FORM | ZFIALV L538-550 | 0 | | +| ALV_CELL_CONTROL | FORM | ZFIALV L560-570 | 0 | | +| CREATE_DIALOG | FORM | ZFIALV L582-603 | 0 | | +| ALV_CELL_COLOR | FORM | ZFIALV L612-620 | 0 | | +| EVENT_BUILD_LVC | FORM | ZFIALV L633-704 | 0 | | +| ALV_DISPLAY_LVC | FORM | ZFIALV L713-752 | 0 | | +| SET_GRID_EXCLUDE | FORM | ZFIALV L761-782 | 0 | | +| DATA_WRITE | FORM | ZFIALV L795-806 | 0 | | +| FIELDCATALOG_MERGE_STRUCTURE | FORM | ZFIALV L812-845 | 0 | | +| LOG_ALV_DISPLAY | FORM | ZFIALV L851-874 | 0 | | +| LOG_CREATE | FORM | ZFIALV L885-942 | 0 | | +| LOG_FIELDCATALOG | FORM | ZFIALV L952-962 | 0 | | +| NAME_SELECT | FORM | ZFICOM L378-387 | 1 | 사용자 ID 로 V_USERNAME 뷰에서 사용자 이름을 조회하는 공통 FORM 이다. | +| SELECT_CSKT | FORM | ZFICOM L397-408 | 1 | 관리회계영역·코스트센터로 CSKT 에서 유효한 코스트센터명을 조회하는 공통 FORM 이다. | +| SELECT_J_1BBRANCH | FORM | ZFICOM L419-428 | 1 | 회사코드·사업장(Business Place)으로 J_1BBRANCH 사업장명을 조회하는 공통 FORM 이다. | +| SELECT_SKAT | FORM | ZFICOM L438-464 | 1 | G/L 계정번호로 SKAT 계정과목 텍스트(장문 50/단문 20)를 언어별로 조회하는 공통 FORM 이다. | +| CHECK_CONFIRM_STEP | FORM | ZFICOM L476-491 | 1 | 제목·메시지 1줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| CHECK_CONFIRM_STEP_2 | FORM | ZFICOM L503-520 | 1 | 제목·메시지 2줄로 POPUP_TO_CONFIRM_STEP 확인 팝업을 띄우고 응답(GF_ANSWER)을 받는 공통 헬퍼다. | +| AUTHORITY_BUKRS | FORM | ZFICOM L528-536 | 1 | 회사코드에 대한 SAP 표준 권한(F_BKPF_BUK)을 검사하고 권한이 없으면 처리를 중단한다. | +| AUTHORITY_PG | FORM | ZFICOM L545-563 | 1 | 사용자 ID 로 커스텀 권한테이블 ZFIT0160 을 조회해 프로그램(T-Code)별 실행 권한을 검증하는 공통 FORM 이다. | +| GET_DOMAIN_VALUE | FORM | ZFICOM L574-593 | 1 | DOMAIN_VALUE_GET 으로 도메인 고정값의 텍스트를 조회하는 공통 헬퍼다. | +| CALC_DATE_IN_INTERVAL | FORM | ZFICOM L606-623 | 1 | 기준일에 일·월·년을 가감한 날짜를 RP_CALC_DATE_IN_INTERVAL 로 계산하는 공통 헬퍼다. | +| CALC_BETWEEN_DATES | FORM | ZFICOM L635-651 | 1 | 두 날짜 사이의 일·월·년 차이를 HRVE_GET_TIME_BETWEEN_DATES 로 계산하는 공통 헬퍼다. | +| NUMERIC_CHECK | FORM | ZFICOM L659-665 | 0 | | +| DYNP_VALUES_READ | FORM | ZFICOM L674-703 | 1 | DYNP_VALUES_READ 로 현재 화면 필드의 입력값을 PAI 전에 읽어오는 공통 헬퍼다. | +| FIELD_SETTING | FORM | ZFICOM L713-720 | 0 | | +| HELP_DISPLAY | FORM | ZFICOM L729-749 | 0 | | +| SELECT_T007S | FORM | ZFICOM L758-770 | 1 | 세금코드(MWSKZ)의 부가세 텍스트를 T007S 에서 조회하는 공통 FORM 이다. | +| GET_NEXT_NUMBER | FORM | ZFICOM L781-819 | 1 | 번호범위 오브젝트에서 다음 일련번호를 받아온다 (CBO 테이블의 키 생성용). | +| CREATE_ICON | FORM | ZFICOM L829-844 | 0 | | +| DATA_UPLOAD | FORM | ZFICOM L853-908 | 3 | 파일 확장자(TXT/XLS)에 따라 GUI_UPLOAD 또는 TEXT_CONVERT_XLS_TO_SAP 으로 로컬 파일을 내부테이블로 업로드하는 공통 FORM 이다. | +| DATA_UPLOAD_2 | FORM | ZFICOM L917-950 | 2 | 엑셀 파일을 KCD_EXCEL_OLE_TO_INT_CONVERT 로 셀 단위로 읽어 행별로 T_LOAD 내부테이블 구조에 매핑하는 공통 업로드 FORM 이다. | +| CONVERT_TO_FOREIGN_CURRENCY | FORM | ZFICOM L962-999 | 1 | 현지통화 금액을 환율·기준일로 외화 금액으로 환산하는 공통 FORM 이다. | +| CONVERT_TO_LOCAL_CURRENCY | FORM | ZFICOM L1011-1039 | 1 | 외화 금액을 환율·기준일로 회사코드 현지통화(T001-WAERS) 금액으로 환산하는 공통 FORM 이다. | +| SELECT_USR01 | FORM | ZFICOM L1084-1088 | 1 | 사용자명으로 USR01(사용자 마스터 기본값)을 단건 조회하는 공통 FORM 이다. | +| SMARTFORM_CONTROL | FORM | ZFICOM L1101-1138 | 1 | Smartform 이름으로 생성 FM 이름을 구하고 미리보기·다이얼로그·프린터 등 출력 옵션(GS_DEVICE/GS_OPTIONS)을 설정한다. | +| SMARTFORM_OPEN | FORM | ZFICOM L1144-1156 | 1 | Smartform 출력 작업을 SSF_OPEN 으로 시작하는 공통 FORM 이다. | +| SMARTFORM_CLOSE | FORM | ZFICOM L1162-1175 | 1 | Smartform 출력 작업을 SSF_CLOSE 로 종료하고 JOB_OUTPUT_INFO 를 받아오는 공통 FORM 이다. | +| F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZFICOM L1186-1214 | 0 | | +| EXIT INPUT | MODULE | ZFICOM L1220-1230 | 0 | | +| DYNPRO | FORM | ZFICOM L1240-1251 | 1 | BDC 화면 시작 또는 필드값 한 줄을 GT_BDC(BDCDATA) 에 추가하는 공통 BDC 빌더 헬퍼다. | +| BDC_TRANSACTION | FORM | ZFICOM L1259-1266 | 1 | GT_BDC 데이터로 지정 T-Code 를 CALL TRANSACTION 하고 결과 메시지를 GT_MESS 에 받는 공통 BDC 실행 FORM 이다. | +| MESSAGE_SELECT | FORM | ZFICOM L1274-1285 | 1 | BDC 메시지(GT_MESS)의 ID·번호·변수를 MESSAGE_TEXT_BUILD 로 메시지 텍스트로 조립하는 공통 헬퍼다. | +| BDC_FK03 | FORM | ZFICOM L1294-1318 | 1 | 구매처코드와 회사코드로 FK03 구매처 마스터 조회 화면을 BDC 로 호출한다. | +| CALL_TRANSACTION_FB03 | FORM | ZFICOM L1328-1336 | 1 | 회사코드·전표번호·회계연도를 파라미터 ID 로 넘겨 FB03 회계전표 조회 화면을 호출한다. | +| STATUS_BAR | FORM | ZFICOM L1345-1366 | 1 | 처리 진행률을 계산해 SAPGUI 상태바에 진행 상황 텍스트를 표시하는 공통 유틸리티다. | +| INITIALIZATION | EVENT | ZFIR0170 L32-50 | 1 | 초기화 시 ALV 기본 설정과 도메인 텍스트를 준비하고 조회 기간(P_SPMON)을 전월로 기본 세팅한다. | +| START-OF-SELECTION | EVENT | ZFIR0170 L51-59 | 1 | START-OF-SELECTION 에서 회사코드 권한(AUTHORITY_BUKRS)을 검증하고 GET_DATA 로 수불 I/F 이력을 조회하는 디스패치 블록이다. | +| END-OF-SELECTION | EVENT | ZFIR0170 L60-66 | 1 | END-OF-SELECTION 에서 조회 결과 GT_DATA 가 없으면 메시지 S003 후 종료하고 있으면 화면 0100 을 호출하는 블록이다. | +| GET_DOMAIN | FORM | ZFIR0170F01 L9-32 | 1 | 발생/취소구분(ZCFLAG)과 거래유형(ZDBTYPE3) 도메인의 고정값 텍스트를 DD07T 에서 읽어 GT_DOMAIN 에 담는다. | +| GET_DATA | FORM | ZFIR0170F01 L38-52 | 1 | 장려금 구매정산 내역(ZFIT0170)을 추출한 뒤 라디오버튼(P_R1)에 따라 리스트 또는 집계표 데이터로 가공한다. | +| GET_ZFIT0170 | FORM | ZFIR0170F01 L58-172 | 3 | 장려금 구매정산 내역을 처리상태별로 읽고, 지점 매핑과 거래유형별 계정을 채운 뒤 표시용 텍스트를 붙인다. | +| DISPLAY_LIST_DATA | FORM | ZFIR0170F01 L178-238 | 1 | 장려금 구매정산 내역(GT_Z0170)을 리스트 출력용 GT_DATA 로 변환하며 상태 아이콘과 발생/취소·거래유형·손익센터·사업장·고객·세금코드 텍스트를 붙인다. | +| DISPLAY_SUM_DATA | FORM | ZFIR0170F01 L244-280 | 1 | 장려금 구매정산 내역(GT_Z0170)을 월·손익센터·고객 단위로 거래유형(D01/D03/D05)별 금액과 합계로 집계하여 집계표용 GT_DATA 를 만든다. | diff --git a/wiki/programs/ZFIRCLV0010.md b/wiki/programs/ZFIRCLV0010.md new file mode 100644 index 0000000..f2b7005 --- /dev/null +++ b/wiki/programs/ZFIRCLV0010.md @@ -0,0 +1,271 @@ +--- +type: abap-program +title: "ZFIRCLV0010" +description: "SM34 뷰 클러스터 ZFIV0070 의 저장 전 처리를 담당하는 Exit 프로그램이다. 뷰 클러스터 유지보수(테이블 설정값 관리) 화면에서 저장 시점에 호출되어 권한을 확인하고 클러스터 데이터를 저장한다. 업무 로직이 아니라 SAP 뷰 유지보수 프레임워크의 확장 지점이다." +resource: "abap://ZFIRCLV0010" +tags: ["설정", "권한관리", "마스터관리", "FI", "뷰클러스터", "변경이력", "생성자", "변경자", "감사필드", "뷰유지보수", "필드심볼", "뷰저장", "기능제외", "저장위임", "조회모드", "변경모드", "회사코드 권한체크", "뷰 클러스터 저장 검증", "저장 취소", "권한 오류"] +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: [] +x-tables-write: [] +x-calls: ["VIEW_MAINTENANCE_LOW_LEVEL"] +x-code-hash: "ece135d2e0a134034e8d09d78ea4e7840a150c7109b4af653cf92c54aa7c7383" +x-unit-count: 4 +x-chunk-count: 3 +x-declaration-count: 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 버퍼에 되돌려 넣는다. 필드심볼 캐스팅으로 뷰 구조에 동적으로 접근한다. + +```abap + 78| LOOP AT 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 INTO LV_EXTRACT + 84| WITH KEY BINARY SEARCH. + 85| + 86| IF SY-SUBRC = 0. + 87| + 88| ASSIGN : LV_EXTRACT TO CASTING. + 89| + 90| " 신규 입력 + 91| IF LS_TOTAL-ACTION EQ 'N'. + 92| -CDATE = SY-DATUM. + 93| -CTIME = SY-UZEIT. + 94| -CNAME = SY-UNAME. + 95| ENDIF. + 96| + 97| -UDATE = SY-DATUM. + 98| -UTIME = SY-UZEIT. + 99| -UNAME = SY-UNAME. + 100| + 101| MODIFY FROM INDEX LV_INDEX. + 102| MODIFY FROM 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`](#decl-zfirclv0010-30-t_record), [`LS_TOTAL`](#decl-zfirclv0010-43-ls_total), [`LV_INDEX`](#decl-zfirclv0010-36-lv_index), [`LV_TOTAL`](#decl-zfirclv0010-40-lv_total), [`LV_EXTRACT`](#decl-zfirclv0010-41-lv_extract), [``](#decl-zfirclv0010-48--viewkey-), [``](#decl-zfirclv0010-50--fs_record-) +- 선언을 못 찾은 이름: , (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `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 를 지시해 실제 저장을 맡긴다. + +```abap + 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 = + 135| DPL_SELLIST = + 136| EXCL_CUA_FUNCT = FU_TO_EXCL + 137| EXTRACT = + 138| TOTAL = + 139| X_HEADER = + 140| X_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`](#decl-zfirclv0010-53-fu_to_excl), [`LV_VIEWNAME`](#decl-zfirclv0010-37-lv_viewname), [`L_T_E071K`](#decl-zfirclv0010-52-l_t_e071k) +- 선언을 못 찾은 이름: , , , , , (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `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로 상위 객체 테이블 접근을 설정한 뒤 의 각 행(ZFIT0081 구조)의 회사코드에 AUTHORITY-CHECK F_BKPF_BUK를 수행하고, 실패 시 FZ 240 메시지를 내고 VCL_NEXT_VIEW/VCL_AKT_VIEW를 이전 뷰로 되돌리며 VCL_FUNCTION을 지워 저장을 막는다. + +```abap + 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 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`](#decl-zfirclv0010-163-lv_error_flag), [`LS_ZFIV0081`](#decl-zfirclv0010-161-ls_zfiv0081) +- 선언을 못 찾은 이름: (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZFIRCLV0010/ZFIRCLV0010#L165-L183` · confidence 0.9 · `ZFIRCLV0010#ZFIRCLV0010#FORM#CHECK_AUTH#C1` + +## 정의부 (12건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZFIRCLV0010` (12건) + +#### T_RECORD — types · unit 로컬 · L30-L34 {#decl-zfirclv0010-30-t_record} + +```abap + 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 {#decl-zfirclv0010-36-lv_index} + +```abap + DATA : LV_INDEX LIKE SY-TABIX. +``` + +#### LV_VIEWNAME — data · unit 로컬 · L37-L37 {#decl-zfirclv0010-37-lv_viewname} + +```abap + DATA: LV_VIEWNAME TYPE VCLSTRUC-OBJECT. +``` + +#### LV_TOTAL — data · unit 로컬 · L40-L40 {#decl-zfirclv0010-40-lv_total} + +```abap + DATA : LV_TOTAL(1000) TYPE C. +``` + +#### LV_EXTRACT — data · unit 로컬 · L41-L41 {#decl-zfirclv0010-41-lv_extract} + +```abap + DATA : LV_EXTRACT(1000) TYPE C. +``` + +#### LS_TOTAL — data · unit 로컬 · L43-L43 {#decl-zfirclv0010-43-ls_total} + +```abap + DATA : LS_TOTAL TYPE T_RECORD. +``` + +#### — field-symbol · unit 로컬 · L48-L48 {#decl-zfirclv0010-48--viewkey-} + +```abap + FIELD-SYMBOLS : TYPE X. +``` + +#### — field-symbol · unit 로컬 · L50-L50 {#decl-zfirclv0010-50--fs_record-} + +```abap + FIELD-SYMBOLS : TYPE T_RECORD. +``` + +#### L_T_E071K — data · unit 로컬 · L52-L52 {#decl-zfirclv0010-52-l_t_e071k} + +```abap + DATA: L_T_E071K LIKE E071K OCCURS 0. +``` + +#### FU_TO_EXCL — data · unit 로컬 · L53-L55 {#decl-zfirclv0010-53-fu_to_excl} + +```abap + DATA: BEGIN OF FU_TO_EXCL OCCURS 10. + INCLUDE STRUCTURE VIMEXCLFUN. + DATA: END OF FU_TO_EXCL. +``` + +#### LS_ZFIV0081 — data · unit 로컬 · L161-L161 {#decl-zfirclv0010-161-ls_zfiv0081} + +```abap + DATA: LS_ZFIV0081 LIKE ZFIT0081. +``` + +#### LV_ERROR_FLAG — data · unit 로컬 · L163-L163 {#decl-zfirclv0010-163-lv_error_flag} + +```abap + 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이다. | diff --git a/wiki/programs/ZRGGBR000.md b/wiki/programs/ZRGGBR000.md new file mode 100644 index 0000000..f2418e6 --- /dev/null +++ b/wiki/programs/ZRGGBR000.md @@ -0,0 +1,284 @@ +--- +type: abap-program +title: "ZRGGBR000" +description: "SAP 표준 검증 Exit 폼풀 RGGBR000 을 회사용으로 복사한 프로그램이다. GGB0(검증) 에서 정의한 검증 규칙이 호출하는 사용자 Exit(U100, US001, UM001, U200)을 담으며, 전표 전기 시 예산 체크(Z_CO_CHECK_BUDGET) 같은 회사 고유 검증 로직을 수행한다. GET_EXIT_TITLES 에 Exit 목록을 등록해야 GGB0 에서 선택할 수 있다." +resource: "abap://ZRGGBR000" +tags: ["검증", "예산관리", "전표", "설정", "FI", "예산통제", "코스트센터", "원가요소", "오더", "금액합산", "차대구분", "순증감", "전표아이템", "예산체크", "예산초과", "전기차단", "검증실패", "오류메시지", "검증 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: ["T001"] +x-tables-write: [] +x-calls: ["Z_CO_CHECK_BUDGET"] +x-code-hash: "4e5035dfc2db296a35ee8167070a42538171448b19d9660acc745b40eb5bdd3d" +x-unit-count: 7 +x-chunk-count: 4 +x-declaration-count: 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 검증 규칙에서 선택 가능하게 한다. + +```abap + 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`](#decl-zrggbr000-49-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 로 복사해 검증 프레임워크에 돌려준다. + +```abap + 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`](#decl-zrggbr000-49-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') 금액은 부호를 반전해 순증감으로 만든다. + +```abap + 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](/tables/T001.md) / 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`](#decl-zrggbr000-259-lv_bukrs), [`LV_BUDAT`](#decl-zrggbr000-260-lv_budat), [`LV_WAERS`](#decl-zrggbr000-261-lv_waers), [`LS_BSEG`](#decl-zrggbr000-262-ls_bseg), [`LT_KOSTL_CHECK`](#decl-zrggbr000-266-lt_kostl_check), [`LT_AUNFR_CHECK`](#decl-zrggbr000-272-lt_aunfr_check) +- 위치: `abap://ZRGGBR000/ZRGGBR000#L284-L317` · confidence 0.88 · `ZRGGBR000#ZRGGBR000#FORM#U200#C1` + +#### [validation] 합산한 코스트센터-원가요소 건과 오더 건마다 커스텀 FM Z_CO_CHECK_BUDGET 으로 예산 잔액을 확인하고, 결과코드가 E(초과)면 검증 결과를 거짓으로 돌려 오류 메시지를 띄우고 전표 전기를 차단한다. + +```abap + 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`](#decl-zrggbr000-266-lt_kostl_check), [`LV_BUKRS`](#decl-zrggbr000-259-lv_bukrs), [`LV_BUDAT`](#decl-zrggbr000-260-lv_budat), [`LV_WAERS`](#decl-zrggbr000-261-lv_waers), [`LV_CODE`](#decl-zrggbr000-263-lv_code), [`LV_MSG`](#decl-zrggbr000-264-lv_msg), [`LT_AUNFR_CHECK`](#decl-zrggbr000-272-lt_aunfr_check) +- 선언을 못 찾은 이름: B_FALSE (수집 안 된 인클루드·함수 인터페이스일 수 있다) +- 위치: `abap://ZRGGBR000/ZRGGBR000#L319-L358` · confidence 0.9 · `ZRGGBR000#ZRGGBR000#FORM#U200#C2` + +## 정의부 (9건) + +로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. + +### `ZRGGBR000` (9건) + +#### EXITS — data · unit 로컬 · L49-L53 {#decl-zrggbr000-49-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. +``` + +#### LV_BUKRS — data · unit 로컬 · L259-L259 {#decl-zrggbr000-259-lv_bukrs} + +```abap + DATA : LV_BUKRS LIKE BKPF-BUKRS. +``` + +#### LV_BUDAT — data · unit 로컬 · L260-L260 {#decl-zrggbr000-260-lv_budat} + +```abap + DATA : LV_BUDAT LIKE BKPF-BUDAT. +``` + +#### LV_WAERS — data · unit 로컬 · L261-L261 {#decl-zrggbr000-261-lv_waers} + +```abap + DATA : LV_WAERS LIKE BKPF-WAERS. +``` + +#### LS_BSEG — data · unit 로컬 · L262-L262 {#decl-zrggbr000-262-ls_bseg} + +```abap + DATA : LS_BSEG LIKE BSEG. +``` + +#### LV_CODE — data · unit 로컬 · L263-L263 {#decl-zrggbr000-263-lv_code} + +```abap + DATA : LV_CODE TYPE ZEIFFG. +``` + +#### LV_MSG — data · unit 로컬 · L264-L264 {#decl-zrggbr000-264-lv_msg} + +```abap + DATA : LV_MSG TYPE ZEERRDESC. +``` + +#### LT_KOSTL_CHECK — data · unit 로컬 · L266-L270 {#decl-zrggbr000-266-lt_kostl_check} + +```abap + 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 {#decl-zrggbr000-272-lt_aunfr_check} + +```abap + 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). | diff --git a/wiki/programs/ZRGGBS000.md b/wiki/programs/ZRGGBS000.md new file mode 100644 index 0000000..9692583 --- /dev/null +++ b/wiki/programs/ZRGGBS000.md @@ -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/` 의 `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) 값을 연결이전 이동유형으로 변환하고 유효성을 검증한다. | diff --git a/wiki/tables/A003.md b/wiki/tables/A003.md new file mode 100644 index 0000000..eb25590 --- /dev/null +++ b/wiki/tables/A003.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "A003" +description: "A003 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/A003" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | CHECK_DATA | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | USER_COMMAND_0100 INPUT | MODULE | read | diff --git a/wiki/tables/ADR6.md b/wiki/tables/ADR6.md new file mode 100644 index 0000000..e8691fb --- /dev/null +++ b/wiki/tables/ADR6.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ADR6" +description: "ADR6 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ADR6" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | WRITE_PART1-1_SMARTBILL | FORM | read | diff --git a/wiki/tables/ADRC.md b/wiki/tables/ADRC.md new file mode 100644 index 0000000..d11deb6 --- /dev/null +++ b/wiki/tables/ADRC.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ADRC" +description: "ADRC — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ADRC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SMARTBILL_TRANS | FORM | read | diff --git a/wiki/tables/AENR.md b/wiki/tables/AENR.md new file mode 100644 index 0000000..55aa4fc --- /dev/null +++ b/wiki/tables/AENR.md @@ -0,0 +1,85 @@ +--- +type: abap-table +title: "AENR" +description: "AENR — 읽기 30개 / 쓰기 0개 프로그램" +resource: "abap://table/AENR" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 30 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (30개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | BDC_CREATE_AENNR | FORM | read | +| [ZFIR0020](/programs/ZFIR0020.md) | BDC_CREATE_AENNR | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | BDC_CREATE_AENNR | FORM | read | diff --git a/wiki/tables/ALL_ITEMS_ITAB.md b/wiki/tables/ALL_ITEMS_ITAB.md new file mode 100644 index 0000000..b0a9c1f --- /dev/null +++ b/wiki/tables/ALL_ITEMS_ITAB.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ALL_ITEMS_ITAB" +description: "ALL_ITEMS_ITAB — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ALL_ITEMS_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TOTALS | FORM | write | diff --git a/wiki/tables/ANKT.md b/wiki/tables/ANKT.md new file mode 100644 index 0000000..2723c07 --- /dev/null +++ b/wiki/tables/ANKT.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "ANKT" +description: "ANKT — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/ANKT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0120](/programs/ZCOC0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | diff --git a/wiki/tables/ANLA.md b/wiki/tables/ANLA.md new file mode 100644 index 0000000..afec823 --- /dev/null +++ b/wiki/tables/ANLA.md @@ -0,0 +1,34 @@ +--- +type: abap-table +title: "ANLA" +description: "ANLA — 읽기 4개 / 쓰기 0개 프로그램" +resource: "abap://table/ANLA" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 4 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (4개 프로그램) + +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_C | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_DATA | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/ANLI.md b/wiki/tables/ANLI.md new file mode 100644 index 0000000..d248d95 --- /dev/null +++ b/wiki/tables/ANLI.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ANLI" +description: "ANLI — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ANLI" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | GET_AUC_LINK_ANLN1 | FORM | read | diff --git a/wiki/tables/AUFK.md b/wiki/tables/AUFK.md new file mode 100644 index 0000000..2a2a804 --- /dev/null +++ b/wiki/tables/AUFK.md @@ -0,0 +1,45 @@ +--- +type: abap-table +title: "AUFK" +description: "AUFK — 읽기 8개 / 쓰기 0개 프로그램" +resource: "abap://table/AUFK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 8 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (8개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0061](/programs/ZFIR0061.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_C | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_AUFNR | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | EDIT_DATA | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_AUFNR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_AUFNR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_AUFNR | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | diff --git a/wiki/tables/AUSGLOP_ITAB.md b/wiki/tables/AUSGLOP_ITAB.md new file mode 100644 index 0000000..799bae0 --- /dev/null +++ b/wiki/tables/AUSGLOP_ITAB.md @@ -0,0 +1,42 @@ +--- +type: abap-table +title: "AUSGLOP_ITAB" +description: "AUSGLOP_ITAB — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/AUSGLOP_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | DTI_CHECK | FORM | write | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_CUSTOMER_ADDRESS | FORM | write | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_SALES_TAX_SGTXT | FORM | write | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_TAX_DATA | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_G_L_INDICATOR | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_OPTION | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_CHECK_TABLE | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_ADDRESS_OF_CPD_CUSTOMER | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_SALES_TAX_SGTXT | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TAXES | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TAX_CODE | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | SAVE_RETURN_CODE_TO_AUSGLOP | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | SEL_DOCUMENT | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | write | diff --git a/wiki/tables/AUSGLOP_ITAB2.md b/wiki/tables/AUSGLOP_ITAB2.md new file mode 100644 index 0000000..8b833b1 --- /dev/null +++ b/wiki/tables/AUSGLOP_ITAB2.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "AUSGLOP_ITAB2" +description: "AUSGLOP_ITAB2 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/AUSGLOP_ITAB2" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | DISPLAY_LIST | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | SEL_DOCUMENT | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | SET_SELECTION | FORM | write | diff --git a/wiki/tables/AUSGLOP_MAT_ITAB.md b/wiki/tables/AUSGLOP_MAT_ITAB.md new file mode 100644 index 0000000..dee548c --- /dev/null +++ b/wiki/tables/AUSGLOP_MAT_ITAB.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "AUSGLOP_MAT_ITAB" +description: "AUSGLOP_MAT_ITAB — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/AUSGLOP_MAT_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_TABLES | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | PRINT_ITEM_PURE_SD | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | PRINT_ITEM_PURE_SD_SMARTBILL | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | PRINT_ITEM_SD_AND_FI | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | PRINT_ITEM_SD_AND_FI_SMARTBILL | FORM | write | diff --git a/wiki/tables/BKPF.md b/wiki/tables/BKPF.md new file mode 100644 index 0000000..3b478b7 --- /dev/null +++ b/wiki/tables/BKPF.md @@ -0,0 +1,40 @@ +--- +type: abap-table +title: "BKPF" +description: "BKPF — 읽기 5개 / 쓰기 1개 프로그램" +resource: "abap://table/BKPF" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 5 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (5개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BKPF | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZFIT0150 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1001 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1002 | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | CLEAR_ITEM_SELECTION | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_OPTION | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_CHECK_TABLE | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | write | diff --git a/wiki/tables/BNKA.md b/wiki/tables/BNKA.md new file mode 100644 index 0000000..d9e7a2d --- /dev/null +++ b/wiki/tables/BNKA.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "BNKA" +description: "BNKA — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/BNKA" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | GET_ZFIT0030 | FORM | read | diff --git a/wiki/tables/BPEG.md b/wiki/tables/BPEG.md new file mode 100644 index 0000000..61cf481 --- /dev/null +++ b/wiki/tables/BPEG.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "BPEG" +description: "BPEG — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/BPEG" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOC0100](/programs/ZCOC0100.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0100](/programs/ZCOC0100.md) | MAPPING_BPEJ_BPEG | FORM | read | diff --git a/wiki/tables/BPEJ.md b/wiki/tables/BPEJ.md new file mode 100644 index 0000000..b1adc40 --- /dev/null +++ b/wiki/tables/BPEJ.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "BPEJ" +description: "BPEJ — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/BPEJ" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOR0020](/programs/ZCOR0020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0100](/programs/ZCOC0100.md) | MAPPING_BPEJ_BPEG | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | SELECT_BPEJ | FORM | read | diff --git a/wiki/tables/BSAD.md b/wiki/tables/BSAD.md new file mode 100644 index 0000000..2dee62f --- /dev/null +++ b/wiki/tables/BSAD.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "BSAD" +description: "BSAD — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/BSAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | CLEAR_ITEM_SELECTION | FORM | read | diff --git a/wiki/tables/BSEC.md b/wiki/tables/BSEC.md new file mode 100644 index 0000000..bba945d --- /dev/null +++ b/wiki/tables/BSEC.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "BSEC" +description: "BSEC — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/BSEC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | GET_CUSTOMER_ADDRESS | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_ADDRESS_OF_CPD_CUSTOMER | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TAX_CODE | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | read | diff --git a/wiki/tables/BSEG.md b/wiki/tables/BSEG.md new file mode 100644 index 0000000..d259cfa --- /dev/null +++ b/wiki/tables/BSEG.md @@ -0,0 +1,41 @@ +--- +type: abap-table +title: "BSEG" +description: "BSEG — 읽기 5개 / 쓰기 1개 프로그램" +resource: "abap://table/BSEG" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 5 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (5개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_BSEG | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | CLEAR_ITEM_SELECTION | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_SALES_TAX_SGTXT | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_G_L_INDICATOR | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_OPTION | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_SALES_TAX_SGTXT | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | write | diff --git a/wiki/tables/BSET.md b/wiki/tables/BSET.md new file mode 100644 index 0000000..f994101 --- /dev/null +++ b/wiki/tables/BSET.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "BSET" +description: "BSET — 읽기 2개 / 쓰기 1개 프로그램" +resource: "abap://table/BSET" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (2개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | GET_TAX_DATA | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_OPTION | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TAXES | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | write | diff --git a/wiki/tables/CE31000.md b/wiki/tables/CE31000.md new file mode 100644 index 0000000..d686b3e --- /dev/null +++ b/wiki/tables/CE31000.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "CE31000" +description: "CE31000 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/CE31000" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR1010](/programs/ZCOR1010.md) | GET_CO_PA_SALES | FORM | read | diff --git a/wiki/tables/CE41000.md b/wiki/tables/CE41000.md new file mode 100644 index 0000000..0757afb --- /dev/null +++ b/wiki/tables/CE41000.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "CE41000" +description: "CE41000 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/CE41000" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR1010](/programs/ZCOR1010.md) | GET_CO_PA_SALES | FORM | read | diff --git a/wiki/tables/CEPC.md b/wiki/tables/CEPC.md new file mode 100644 index 0000000..cc0978c --- /dev/null +++ b/wiki/tables/CEPC.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "CEPC" +description: "CEPC — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/CEPC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | VALIDATION_CHECK | FORM | read | diff --git a/wiki/tables/CEPCT.md b/wiki/tables/CEPCT.md new file mode 100644 index 0000000..726a549 --- /dev/null +++ b/wiki/tables/CEPCT.md @@ -0,0 +1,41 @@ +--- +type: abap-table +title: "CEPCT" +description: "CEPCT — 읽기 8개 / 쓰기 0개 프로그램" +resource: "abap://table/CEPCT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 8 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (8개 프로그램) + +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | EDIT_DATA | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/CHECK_ITAB.md b/wiki/tables/CHECK_ITAB.md new file mode 100644 index 0000000..2b009be --- /dev/null +++ b/wiki/tables/CHECK_ITAB.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "CHECK_ITAB" +description: "CHECK_ITAB — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/CHECK_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_G_L_INDICATOR | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | CHECK_TEXT | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_TABLES | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_ADDRESS_OF_CPD_CUSTOMER | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_TAX_CODE | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | REPRINT | FORM | write | diff --git a/wiki/tables/COSP.md b/wiki/tables/COSP.md new file mode 100644 index 0000000..ac9f3ee --- /dev/null +++ b/wiki/tables/COSP.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "COSP" +description: "COSP — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/COSP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | SELECT_COSP | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | SELECT_COSP | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | SELECT_COSP | FORM | read | diff --git a/wiki/tables/CSKA.md b/wiki/tables/CSKA.md new file mode 100644 index 0000000..c0bba82 --- /dev/null +++ b/wiki/tables/CSKA.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "CSKA" +description: "CSKA — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/CSKA" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOR0010](/programs/ZCOR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | SELECT_CSKS | FORM | read | diff --git a/wiki/tables/CSKB.md b/wiki/tables/CSKB.md new file mode 100644 index 0000000..b34594f --- /dev/null +++ b/wiki/tables/CSKB.md @@ -0,0 +1,49 @@ +--- +type: abap-table +title: "CSKB" +description: "CSKB — 읽기 10개 / 쓰기 0개 프로그램" +resource: "abap://table/CSKB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 10 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (10개 프로그램) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | F4_KSTAR | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_KSTAR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_KSTAR | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | F4_KSTAR | FORM | read | diff --git a/wiki/tables/CSKS.md b/wiki/tables/CSKS.md new file mode 100644 index 0000000..a996652 --- /dev/null +++ b/wiki/tables/CSKS.md @@ -0,0 +1,54 @@ +--- +type: abap-table +title: "CSKS" +description: "CSKS — 읽기 13개 / 쓰기 0개 프로그램" +resource: "abap://table/CSKS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 13 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (13개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | TRANSFER_DATA_TO_BAPI | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | EDIT_DATA | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | EDIT_DATA | FORM | read | diff --git a/wiki/tables/CSKT.md b/wiki/tables/CSKT.md new file mode 100644 index 0000000..a8f8e62 --- /dev/null +++ b/wiki/tables/CSKT.md @@ -0,0 +1,93 @@ +--- +type: abap-table +title: "CSKT" +description: "CSKT — 읽기 30개 / 쓰기 0개 프로그램" +resource: "abap://table/CSKT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 30 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (30개 프로그램) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | DETERMINE_KOSTL | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | EDIT_DATA | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | EDIT_DATA | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | DETERMINE_KOSTL | FORM | read | +| [ZFIC0010](/programs/ZFIC0010.md) | SELECT_CSKT | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | SELECT_CSKT | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | SELECT_CSKT | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | SELECT_CSKT | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | SELECT_CSKT | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | SELECT_CSKT | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | SELECT_CSKT | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SELECT_CSKT | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | SELECT_CSKT | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | SELECT_CSKT | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | SELECT_CSKT | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | SELECT_CSKT | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | SELECT_CSKT | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DATA | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | SELECT_CSKT | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_BSEG | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | SELECT_CSKT | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | SELECT_CSKT | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | SELECT_CSKT | FORM | read | diff --git a/wiki/tables/CSKU.md b/wiki/tables/CSKU.md new file mode 100644 index 0000000..8007de9 --- /dev/null +++ b/wiki/tables/CSKU.md @@ -0,0 +1,51 @@ +--- +type: abap-table +title: "CSKU" +description: "CSKU — 읽기 10개 / 쓰기 0개 프로그램" +resource: "abap://table/CSKU" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 10 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (10개 프로그램) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | F4_KSTAR | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | EDIT_DATA | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | EDIT_DATA | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | F4_KSTAR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | EDIT_DATA | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | F4_KSTAR | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | F4_KSTAR | FORM | read | diff --git a/wiki/tables/DD01L.md b/wiki/tables/DD01L.md new file mode 100644 index 0000000..dbe1fa6 --- /dev/null +++ b/wiki/tables/DD01L.md @@ -0,0 +1,59 @@ +--- +type: abap-table +title: "DD01L" +description: "DD01L — 읽기 17개 / 쓰기 0개 프로그램" +resource: "abap://table/DD01L" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 17 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (17개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9040](/programs/ZCOC9040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_BDC_FORM | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | TRANSFER_GT_DATA | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | TRANSFER_GT_DATA | FORM | read | diff --git a/wiki/tables/DD07T.md b/wiki/tables/DD07T.md new file mode 100644 index 0000000..6384a82 --- /dev/null +++ b/wiki/tables/DD07T.md @@ -0,0 +1,131 @@ +--- +type: abap-table +title: "DD07T" +description: "DD07T — 읽기 38개 / 쓰기 0개 프로그램" +resource: "abap://table/DD07T" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 38 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (38개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0010](/programs/ZCOC0010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | GET_DOMAIN | FORM | read | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZFIR0020](/programs/ZFIR0020.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_DOMAIN | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_DOMAIN | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_DOMAIN | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_DOM_TEXT_LIST | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | GET_VALUE_LIST_DOM | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_DOMAIN | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_DOMAIN | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_DOMAIN | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_DOMAIN | FORM | read | diff --git a/wiki/tables/E02_LT_KUNDE.md b/wiki/tables/E02_LT_KUNDE.md new file mode 100644 index 0000000..a058762 --- /dev/null +++ b/wiki/tables/E02_LT_KUNDE.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "E02_LT_KUNDE" +description: "E02_LT_KUNDE — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/E02_LT_KUNDE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-17T05:38:07+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | E02_DATA_ADD | FORM | write | diff --git a/wiki/tables/FAGL_SEGM.md b/wiki/tables/FAGL_SEGM.md new file mode 100644 index 0000000..20ea438 --- /dev/null +++ b/wiki/tables/FAGL_SEGM.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "FAGL_SEGM" +description: "FAGL_SEGM — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/FAGL_SEGM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOC9030](/programs/ZCOC9030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC9030](/programs/ZCOC9030.md) | VALIDATION_CHECK | FORM | read | diff --git a/wiki/tables/GO_DDIC_FCAT.md b/wiki/tables/GO_DDIC_FCAT.md new file mode 100644 index 0000000..f7ebb23 --- /dev/null +++ b/wiki/tables/GO_DDIC_FCAT.md @@ -0,0 +1,33 @@ +--- +type: abap-table +title: "GO_DDIC_FCAT" +description: "GO_DDIC_FCAT — 읽기 0개 / 쓰기 4개 프로그램" +resource: "abap://table/GO_DDIC_FCAT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-17T05:38:07+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 4 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (4개 프로그램) + +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2010](/programs/ZCOC2010.md) | SET_FCAT_LIKETAB_0100 | FORM | write | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_FCAT_LIKETAB_0100 | FORM | write | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_FCAT_LIKETAB_0100 | FORM | write | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_FCAT_LIKETAB_0100 | FORM | write | diff --git a/wiki/tables/GT_AUSGLOP.md b/wiki/tables/GT_AUSGLOP.md new file mode 100644 index 0000000..026b85a --- /dev/null +++ b/wiki/tables/GT_AUSGLOP.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "GT_AUSGLOP" +description: "GT_AUSGLOP — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/GT_AUSGLOP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | USER_COMMAND | FORM | write | diff --git a/wiki/tables/GT_COSP.md b/wiki/tables/GT_COSP.md new file mode 100644 index 0000000..d8ee104 --- /dev/null +++ b/wiki/tables/GT_COSP.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "GT_COSP" +description: "GT_COSP — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/GT_COSP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0020](/programs/ZCOR0020.md) | SELECT_BPEJ | FORM | write | +| [ZCOR0020](/programs/ZCOR0020.md) | SELECT_COSP | FORM | write | +| [ZCOR0030](/programs/ZCOR0030.md) | SELECT_COSP | FORM | write | diff --git a/wiki/tables/GT_DATA.md b/wiki/tables/GT_DATA.md new file mode 100644 index 0000000..17939bd --- /dev/null +++ b/wiki/tables/GT_DATA.md @@ -0,0 +1,126 @@ +--- +type: abap-table +title: "GT_DATA" +description: "GT_DATA — 읽기 0개 / 쓰기 29개 프로그램" +resource: "abap://table/GT_DATA" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 29 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (29개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIR0080](/programs/ZFIR0080.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | MAKE_BAPI_DATA | FORM | write | +| [ZCOC0010](/programs/ZCOC0010.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0020](/programs/ZCOC0020.md) | MAKE_BAPI_DATA | FORM | write | +| [ZCOC0020](/programs/ZCOC0020.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_RESULT | FORM | write | +| [ZCOC0050](/programs/ZCOC0050.md) | BAPI_POST_SENDER | FORM | write | +| [ZCOC0050](/programs/ZCOC0050.md) | EDIT_DATA | FORM | write | +| [ZCOC0050](/programs/ZCOC0050.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0060](/programs/ZCOC0060.md) | BAPI_POST | FORM | write | +| [ZCOC0060](/programs/ZCOC0060.md) | EDIT_DATA | FORM | write | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_AVAIABLE_BUGDET | FORM | write | +| [ZCOC0060](/programs/ZCOC0060.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0070](/programs/ZCOC0070.md) | BAPI_POST | FORM | write | +| [ZCOC0070](/programs/ZCOC0070.md) | EDIT_DATA | FORM | write | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_AVAIABLE_BUGDET | FORM | write | +| [ZCOC0070](/programs/ZCOC0070.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0080](/programs/ZCOC0080.md) | BAPI_POST_SENDER | FORM | write | +| [ZCOC0080](/programs/ZCOC0080.md) | EDIT_DATA | FORM | write | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_AVAIABLE_BUGDET | FORM | write | +| [ZCOC0080](/programs/ZCOC0080.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0090](/programs/ZCOC0090.md) | RUN_BDC | FORM | write | +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0100](/programs/ZCOC0100.md) | MAPPING_BPEJ_BPEG | FORM | write | +| [ZCOC0100](/programs/ZCOC0100.md) | RUN_BAPI | FORM | write | +| [ZCOC0100](/programs/ZCOC0100.md) | RUN_BDC | FORM | write | +| [ZCOC0100](/programs/ZCOC0100.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0110](/programs/ZCOC0110.md) | RUN_BDC | FORM | write | +| [ZCOC0110](/programs/ZCOC0110.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_FIXED_ASSET | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | CREATE_SETTLEMENT_RULE | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | EDIT_DATA_A | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | SAVE_DB | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | SELECT_COSP | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_C | FORM | write | +| [ZCOC0130](/programs/ZCOC0130.md) | SELECT_DATA | FORM | write | +| [ZCOC1010](/programs/ZCOC1010.md) | EDIT_DATA | FORM | write | +| [ZCOC2010](/programs/ZCOC2010.md) | EDIT_DATA | FORM | write | +| [ZCOC2010](/programs/ZCOC2010.md) | PERFORM_SAVE | FORM | write | +| [ZCOC2010](/programs/ZCOC2010.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC2020](/programs/ZCOC2020.md) | EDIT_DATA | FORM | write | +| [ZCOC2020](/programs/ZCOC2020.md) | PERFORM_SAVE | FORM | write | +| [ZCOC2020](/programs/ZCOC2020.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC2030](/programs/ZCOC2030.md) | EDIT_DATA | FORM | write | +| [ZCOC2030](/programs/ZCOC2030.md) | PERFORM_SAVE | FORM | write | +| [ZCOC2030](/programs/ZCOC2030.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC2040](/programs/ZCOC2040.md) | EDIT_DATA | FORM | write | +| [ZCOC2040](/programs/ZCOC2040.md) | PERFORM_SAVE | FORM | write | +| [ZCOC2040](/programs/ZCOC2040.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC9010](/programs/ZCOC9010.md) | EDIT_DATA | FORM | write | +| [ZCOC9010](/programs/ZCOC9010.md) | RUN_BAPI | FORM | write | +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC9020](/programs/ZCOC9020.md) | EDIT_DATA | FORM | write | +| [ZCOC9020](/programs/ZCOC9020.md) | RUN_BAPI | FORM | write | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC9030](/programs/ZCOC9030.md) | EDIT_DATA | FORM | write | +| [ZCOC9030](/programs/ZCOC9030.md) | RUN_BAPI | FORM | write | +| [ZCOC9030](/programs/ZCOC9030.md) | VALIDATION_CHECK | FORM | write | +| [ZCOC9040](/programs/ZCOC9040.md) | EDIT_DATA | FORM | write | +| [ZCOC9040](/programs/ZCOC9040.md) | RUN_BDC | FORM | write | +| [ZCOC9040](/programs/ZCOC9040.md) | VALIDATION_CHECK | FORM | write | +| [ZCOR0010](/programs/ZCOR0010.md) | EDIT_DATA | FORM | write | +| [ZCOR0020](/programs/ZCOR0020.md) | CONVERT_CURR | FORM | write | +| [ZCOR0020](/programs/ZCOR0020.md) | EDIT_DATA | FORM | write | +| [ZCOR0030](/programs/ZCOR0030.md) | CONVERT_CURR | FORM | write | +| [ZCOR0040](/programs/ZCOR0040.md) | EDIT_DATA | FORM | write | +| [ZCOR0040](/programs/ZCOR0040.md) | SELECT_DATA | FORM | write | +| [ZCOR1010](/programs/ZCOR1010.md) | EDIT_DATA | FORM | write | +| [ZCOR2010](/programs/ZCOR2010.md) | EDIT_DATA | FORM | write | +| [ZFIC0010](/programs/ZFIC0010.md) | BDC_FS00 | FORM | write | +| [ZFIR0080](/programs/ZFIR0080.md) | DISPLAY_DATA | FORM | write | +| [ZFIR0080](/programs/ZFIR0080.md) | POSTING_DOCUMET | FORM | write | diff --git a/wiki/tables/GT_HEAD.md b/wiki/tables/GT_HEAD.md new file mode 100644 index 0000000..1a5a390 --- /dev/null +++ b/wiki/tables/GT_HEAD.md @@ -0,0 +1,35 @@ +--- +type: abap-table +title: "GT_HEAD" +description: "GT_HEAD — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/GT_HEAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0120](/programs/ZFIR0120.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | CANCEL_CONFIRM_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | CONFIRM_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | CONFIRM_DATA_2 | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | DELETE_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | REJECT_DATA | FORM | write | +| [ZFIR0120](/programs/ZFIR0120.md) | BDC_FB05 | FORM | write | +| [ZFIR0120](/programs/ZFIR0120.md) | DOCUMENT_POSTING | FORM | write | diff --git a/wiki/tables/GT_ITEM.md b/wiki/tables/GT_ITEM.md new file mode 100644 index 0000000..dbe5f47 --- /dev/null +++ b/wiki/tables/GT_ITEM.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "GT_ITEM" +description: "GT_ITEM — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/GT_ITEM" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | BDC_FB05 | FORM | write | +| [ZFIR0120](/programs/ZFIR0120.md) | DOCUMENT_POSTING | FORM | write | diff --git a/wiki/tables/GT_KSTAR.md b/wiki/tables/GT_KSTAR.md new file mode 100644 index 0000000..e5cf81a --- /dev/null +++ b/wiki/tables/GT_KSTAR.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "GT_KSTAR" +description: "GT_KSTAR — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/GT_KSTAR" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_KSTAR | FORM | write | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_KSTAR | FORM | write | diff --git a/wiki/tables/GT_KUNDE.md b/wiki/tables/GT_KUNDE.md new file mode 100644 index 0000000..293ccb6 --- /dev/null +++ b/wiki/tables/GT_KUNDE.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "GT_KUNDE" +description: "GT_KUNDE — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/GT_KUNDE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | SELECTION | FORM | write | diff --git a/wiki/tables/GT_LOAD.md b/wiki/tables/GT_LOAD.md new file mode 100644 index 0000000..f8cfec0 --- /dev/null +++ b/wiki/tables/GT_LOAD.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "GT_LOAD" +description: "GT_LOAD — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/GT_LOAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIC0020](/programs/ZFIC0020.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_BDC | FORM | write | +| [ZFIC0020](/programs/ZFIC0020.md) | MODIFY_DATA | FORM | write | diff --git a/wiki/tables/GT_MAIN.md b/wiki/tables/GT_MAIN.md new file mode 100644 index 0000000..2fbdaec --- /dev/null +++ b/wiki/tables/GT_MAIN.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "GT_MAIN" +description: "GT_MAIN — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/GT_MAIN" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0160](/programs/ZFIR0160.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0100](/programs/ZFIR0100.md) | CHANG_LINE | FORM | write | +| [ZFIR0100](/programs/ZFIR0100.md) | DATA_CHANGED | FORM | write | +| [ZFIR0100](/programs/ZFIR0100.md) | SET_ITAB_STYLE | FORM | write | +| [ZFIR0100](/programs/ZFIR0100.md) | SET_SAVE | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | DATA_CHANGED | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | F4_UNAME_PROCESS | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | MODIFY_PROCESS | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_DELETE_ROWS | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_ITAB_STYLE | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_LINE_ITAB_STYLE | FORM | write | diff --git a/wiki/tables/J_1BBRANCH.md b/wiki/tables/J_1BBRANCH.md new file mode 100644 index 0000000..b4103ff --- /dev/null +++ b/wiki/tables/J_1BBRANCH.md @@ -0,0 +1,77 @@ +--- +type: abap-table +title: "J_1BBRANCH" +description: "J_1BBRANCH — 읽기 20개 / 쓰기 0개 프로그램" +resource: "abap://table/J_1BBRANCH" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 20 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (20개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0123 | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_BUPLA INPUT | MODULE | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_NAME INPUT | MODULE | read | +| [ZFIR0120](/programs/ZFIR0120.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | SELECT_J_1BBRANCH | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_CUSTOMER_ADDRESS | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_BUPLA | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | REPRINT | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | SMARTBILL_TRANS | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | SELECT_J_1BBRANCH | FORM | read | diff --git a/wiki/tables/KNA1.md b/wiki/tables/KNA1.md new file mode 100644 index 0000000..a61dbac --- /dev/null +++ b/wiki/tables/KNA1.md @@ -0,0 +1,46 @@ +--- +type: abap-table +title: "KNA1" +description: "KNA1 — 읽기 9개 / 쓰기 0개 프로그램" +resource: "abap://table/KNA1" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 9 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (9개 프로그램) + +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | GET_CUSTOMER_ADDRESS | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | DISPLAY_LIST | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_ADDRESS | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | UPDATE_TABLE | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/KNB1.md b/wiki/tables/KNB1.md new file mode 100644 index 0000000..1119167 --- /dev/null +++ b/wiki/tables/KNB1.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "KNB1" +description: "KNB1 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/KNB1" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0030](/programs/ZFIR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_DATA | FORM | read | diff --git a/wiki/tables/KONP.md b/wiki/tables/KONP.md new file mode 100644 index 0000000..269e0e7 --- /dev/null +++ b/wiki/tables/KONP.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "KONP" +description: "KONP — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/KONP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | CHECK_DATA | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | USER_COMMAND_0100 INPUT | MODULE | read | diff --git a/wiki/tables/LFA1.md b/wiki/tables/LFA1.md new file mode 100644 index 0000000..701c4d0 --- /dev/null +++ b/wiki/tables/LFA1.md @@ -0,0 +1,43 @@ +--- +type: abap-table +title: "LFA1" +description: "LFA1 — 읽기 8개 / 쓰기 0개 프로그램" +resource: "abap://table/LFA1" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 8 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (8개 프로그램) + +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0020](/programs/ZFIR0020.md) | SELECT_DATA | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | SELECT_DATA | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | GET_ZFIT0121 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DATA | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | GET_TEXT INPUT | MODULE | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_BSEG | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/LFB1.md b/wiki/tables/LFB1.md new file mode 100644 index 0000000..72f93a0 --- /dev/null +++ b/wiki/tables/LFB1.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "LFB1" +description: "LFB1 — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/LFB1" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0071](/programs/ZFIR0071.md) | GET_ZFIT0121 | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | GET_TEXT INPUT | MODULE | read | diff --git a/wiki/tables/LINE.md b/wiki/tables/LINE.md new file mode 100644 index 0000000..4efaf6b --- /dev/null +++ b/wiki/tables/LINE.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "LINE" +description: "LINE — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/LINE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SET_SELECTION | FORM | write | diff --git a/wiki/tables/LTDX.md b/wiki/tables/LTDX.md new file mode 100644 index 0000000..494a415 --- /dev/null +++ b/wiki/tables/LTDX.md @@ -0,0 +1,59 @@ +--- +type: abap-table +title: "LTDX" +description: "LTDX — 읽기 17개 / 쓰기 0개 프로그램" +resource: "abap://table/LTDX" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 17 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (17개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | VARIANT_DEFAULT | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | VARIANT_DEFAULT | FORM | read | diff --git a/wiki/tables/MAKT.md b/wiki/tables/MAKT.md new file mode 100644 index 0000000..a635691 --- /dev/null +++ b/wiki/tables/MAKT.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "MAKT" +description: "MAKT — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/MAKT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:23+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_DATA | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/MATZEIL4_ITAB.md b/wiki/tables/MATZEIL4_ITAB.md new file mode 100644 index 0000000..36522ac --- /dev/null +++ b/wiki/tables/MATZEIL4_ITAB.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "MATZEIL4_ITAB" +description: "MATZEIL4_ITAB — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/MATZEIL4_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | REPRINT | FORM | write | diff --git a/wiki/tables/ONRKS.md b/wiki/tables/ONRKS.md new file mode 100644 index 0000000..9ad9a23 --- /dev/null +++ b/wiki/tables/ONRKS.md @@ -0,0 +1,39 @@ +--- +type: abap-table +title: "ONRKS" +description: "ONRKS — 읽기 7개 / 쓰기 0개 프로그램" +resource: "abap://table/ONRKS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 7 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (7개 프로그램) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0030](/programs/ZCOC0030.md) | DETERMINE_KOSTL | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_KOSTL | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_KOSTL | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | DETERMINE_KOSTL | FORM | read | diff --git a/wiki/tables/ONROR.md b/wiki/tables/ONROR.md new file mode 100644 index 0000000..37fb23f --- /dev/null +++ b/wiki/tables/ONROR.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "ONROR" +description: "ONROR — 읽기 5개 / 쓰기 0개 프로그램" +resource: "abap://table/ONROR" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 5 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (5개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | GET_AUC_LINK_ANLN1 | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | SELECT_DATA | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_A | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | VALIDATION_CHECK_C | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_AUFNR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_AUFNR | FORM | read | diff --git a/wiki/tables/RBKP.md b/wiki/tables/RBKP.md new file mode 100644 index 0000000..9e1328f --- /dev/null +++ b/wiki/tables/RBKP.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "RBKP" +description: "RBKP — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/RBKP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | CLEAR_ITEM_SELECTION | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | GET BKPF | EVENT | read | diff --git a/wiki/tables/SEL_AUSGLOP_ITAB.md b/wiki/tables/SEL_AUSGLOP_ITAB.md new file mode 100644 index 0000000..012bc30 --- /dev/null +++ b/wiki/tables/SEL_AUSGLOP_ITAB.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "SEL_AUSGLOP_ITAB" +description: "SEL_AUSGLOP_ITAB — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/SEL_AUSGLOP_ITAB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | COLLECTIVE_INVOICES | FORM | write | +| [ZFIR0140](/programs/ZFIR0140.md) | INDIVIDUAL_INVOICES | FORM | write | +| [ZFIR0141](/programs/ZFIR0141.md) | SAVE_RETURN_CODE_TO_AUSGLOP | FORM | write | diff --git a/wiki/tables/SETHEADERT.md b/wiki/tables/SETHEADERT.md new file mode 100644 index 0000000..65e7e62 --- /dev/null +++ b/wiki/tables/SETHEADERT.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "SETHEADERT" +description: "SETHEADERT — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/SETHEADERT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOR0010](/programs/ZCOR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0010](/programs/ZCOR0010.md) | EDIT_DATA | FORM | read | diff --git a/wiki/tables/SETNODE.md b/wiki/tables/SETNODE.md new file mode 100644 index 0000000..afec6d8 --- /dev/null +++ b/wiki/tables/SETNODE.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "SETNODE" +description: "SETNODE — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/SETNODE" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZCOR0010](/programs/ZCOR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0010](/programs/ZCOR0010.md) | SELECT_DATA | FORM | read | diff --git a/wiki/tables/SKAT.md b/wiki/tables/SKAT.md new file mode 100644 index 0000000..a66ec37 --- /dev/null +++ b/wiki/tables/SKAT.md @@ -0,0 +1,71 @@ +--- +type: abap-table +title: "SKAT" +description: "SKAT — 읽기 19개 / 쓰기 0개 프로그램" +resource: "abap://table/SKAT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 19 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (19개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SELECT_SKAT | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | SELECT_SKAT | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | GET_ZFIT0030 | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | SELECT_SKAT | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | SELECT_SKAT | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | SELECT_SKAT | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | SELECT_SKAT | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | SELECT_DATA | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | SELECT_SKAT | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SELECT_SKAT | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | SELECT_SKAT | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | SELECT_SKAT | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | SELECT_SKAT | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | SELECT_SKAT | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | SELECT_SKAT | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | SELECT_SKAT | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | GET_HKONT_TEXT INPUT | MODULE | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | GET_HKONT_TEXT2 INPUT | MODULE | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | MODULE | read | +| [ZFIR0120](/programs/ZFIR0120.md) | SELECT_SKAT | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | SELECT_SKAT | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | SELECT_SKAT | FORM | read | diff --git a/wiki/tables/SKB1.md b/wiki/tables/SKB1.md new file mode 100644 index 0000000..b2886f7 --- /dev/null +++ b/wiki/tables/SKB1.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "SKB1" +description: "SKB1 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/SKB1" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | MODIFY_DATA | FORM | read | diff --git a/wiki/tables/T001.md b/wiki/tables/T001.md new file mode 100644 index 0000000..64fc303 --- /dev/null +++ b/wiki/tables/T001.md @@ -0,0 +1,113 @@ +--- +type: abap-table +title: "T001" +description: "T001 — 읽기 43개 / 쓰기 0개 프로그램" +resource: "abap://table/T001" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 43 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (43개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) +- [ZFIR0020](/programs/ZFIR0020.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0040](/programs/ZFIR0040.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) +- [ZRGGBR000](/programs/ZRGGBR000.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_COMPANY_BASE | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_COMPANY_BASE | FORM | read | +| [ZFIR0020](/programs/ZFIR0020.md) | SET_COMPANY_BASE | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0040](/programs/ZFIR0040.md) | SET_COMPANY_BASE | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BKPF | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0120 | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | GET_ZFIT0121 | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DATA | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | INIT_DATA OUTPUT | MODULE | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_BSEG | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | START-OF-SELECTION | EVENT | read | +| [ZFIR0140](/programs/ZFIR0140.md) | START-OF-SELECTION | EVENT | read | +| [ZFIR0141](/programs/ZFIR0141.md) | DISPLAY_LIST | FORM | read | +| [ZFIR0141](/programs/ZFIR0141.md) | GET_LAYOUT | FORM | read | +| [ZRGGBR000](/programs/ZRGGBR000.md) | U200 | FORM | read | diff --git a/wiki/tables/T001F.md b/wiki/tables/T001F.md new file mode 100644 index 0000000..6549950 --- /dev/null +++ b/wiki/tables/T001F.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T001F" +description: "T001F — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T001F" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | GET_LAYOUT | FORM | read | diff --git a/wiki/tables/T003.md b/wiki/tables/T003.md new file mode 100644 index 0000000..18a15dd --- /dev/null +++ b/wiki/tables/T003.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "T003" +description: "T003 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T003" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | CHECK_DOC_TYPE | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | USER_COMMAND | FORM | read | diff --git a/wiki/tables/T003O.md b/wiki/tables/T003O.md new file mode 100644 index 0000000..8a2bf74 --- /dev/null +++ b/wiki/tables/T003O.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "T003O" +description: "T003O — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/T003O" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0110](/programs/ZCOC0110.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | VALIDATION_CHECK | FORM | read | diff --git a/wiki/tables/T003T.md b/wiki/tables/T003T.md new file mode 100644 index 0000000..81defa1 --- /dev/null +++ b/wiki/tables/T003T.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "T003T" +description: "T003T — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/T003T" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/T005.md b/wiki/tables/T005.md new file mode 100644 index 0000000..d9fac70 --- /dev/null +++ b/wiki/tables/T005.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T005" +description: "T005 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T005" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BKPF | FORM | read | diff --git a/wiki/tables/T007A.md b/wiki/tables/T007A.md new file mode 100644 index 0000000..a62533d --- /dev/null +++ b/wiki/tables/T007A.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T007A" +description: "T007A — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T007A" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | USER_COMMAND_0100 INPUT | MODULE | read | diff --git a/wiki/tables/T007S.md b/wiki/tables/T007S.md new file mode 100644 index 0000000..a75f5ad --- /dev/null +++ b/wiki/tables/T007S.md @@ -0,0 +1,64 @@ +--- +type: abap-table +title: "T007S" +description: "T007S — 읽기 17개 / 쓰기 0개 프로그램" +resource: "abap://table/T007S" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 17 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (17개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SELECT_T007S | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | SELECT_T007S | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | SELECT_T007S | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | SELECT_T007S | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | SELECT_T007S | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | SELECT_T007S | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | SELECT_T007S | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SELECT_T007S | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | SELECT_T007S | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | SELECT_T007S | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | SELECT_T007S | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | SELECT_T007S | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | SELECT_T007S | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | SELECT_T007S | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | SELECT_T007S | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | SELECT_T007S | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | SELECT_T007S | FORM | read | diff --git a/wiki/tables/T020.md b/wiki/tables/T020.md new file mode 100644 index 0000000..18b8975 --- /dev/null +++ b/wiki/tables/T020.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T020" +description: "T020 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T020" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | POST | FORM | read | diff --git a/wiki/tables/T042Z.md b/wiki/tables/T042Z.md new file mode 100644 index 0000000..0c8e5bb --- /dev/null +++ b/wiki/tables/T042Z.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T042Z" +description: "T042Z — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T042Z" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | GET_ZFIT0030 | FORM | read | diff --git a/wiki/tables/T052.md b/wiki/tables/T052.md new file mode 100644 index 0000000..7a1c203 --- /dev/null +++ b/wiki/tables/T052.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T052" +description: "T052 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T052" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | ZTERM_PROCESS | FORM | read | diff --git a/wiki/tables/T052U.md b/wiki/tables/T052U.md new file mode 100644 index 0000000..6779352 --- /dev/null +++ b/wiki/tables/T052U.md @@ -0,0 +1,33 @@ +--- +type: abap-table +title: "T052U" +description: "T052U — 읽기 4개 / 쓰기 0개 프로그램" +resource: "abap://table/T052U" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 4 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (4개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | GET_ZFIT0030 | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/T074T.md b/wiki/tables/T074T.md new file mode 100644 index 0000000..7eae4ed --- /dev/null +++ b/wiki/tables/T074T.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T074T" +description: "T074T — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T074T" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_TABLES | FORM | read | diff --git a/wiki/tables/T074U.md b/wiki/tables/T074U.md new file mode 100644 index 0000000..8311334 --- /dev/null +++ b/wiki/tables/T074U.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T074U" +description: "T074U — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T074U" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | SELECTION | FORM | read | diff --git a/wiki/tables/T077X.md b/wiki/tables/T077X.md new file mode 100644 index 0000000..e5acf0a --- /dev/null +++ b/wiki/tables/T077X.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T077X" +description: "T077X — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T077X" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | DISPLAY_DATA | FORM | read | diff --git a/wiki/tables/T077Y.md b/wiki/tables/T077Y.md new file mode 100644 index 0000000..6c19990 --- /dev/null +++ b/wiki/tables/T077Y.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T077Y" +description: "T077Y — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T077Y" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | DISPLAY_DATA | FORM | read | diff --git a/wiki/tables/T2500.md b/wiki/tables/T2500.md new file mode 100644 index 0000000..d43ae08 --- /dev/null +++ b/wiki/tables/T2500.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2500" +description: "T2500 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2500" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2501.md b/wiki/tables/T2501.md new file mode 100644 index 0000000..7b5ce61 --- /dev/null +++ b/wiki/tables/T2501.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2501" +description: "T2501 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2501" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2502.md b/wiki/tables/T2502.md new file mode 100644 index 0000000..96ebf09 --- /dev/null +++ b/wiki/tables/T2502.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2502" +description: "T2502 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2502" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2503.md b/wiki/tables/T2503.md new file mode 100644 index 0000000..70706d1 --- /dev/null +++ b/wiki/tables/T2503.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2503" +description: "T2503 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2503" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2504.md b/wiki/tables/T2504.md new file mode 100644 index 0000000..c0c7778 --- /dev/null +++ b/wiki/tables/T2504.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2504" +description: "T2504 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2504" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2505.md b/wiki/tables/T2505.md new file mode 100644 index 0000000..ac0bc9a --- /dev/null +++ b/wiki/tables/T2505.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2505" +description: "T2505 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2505" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2506.md b/wiki/tables/T2506.md new file mode 100644 index 0000000..6442f11 --- /dev/null +++ b/wiki/tables/T2506.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2506" +description: "T2506 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2506" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2507.md b/wiki/tables/T2507.md new file mode 100644 index 0000000..de3fa2b --- /dev/null +++ b/wiki/tables/T2507.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2507" +description: "T2507 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2507" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T2508.md b/wiki/tables/T2508.md new file mode 100644 index 0000000..d17f71d --- /dev/null +++ b/wiki/tables/T2508.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "T2508" +description: "T2508 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/T2508" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/T856.md b/wiki/tables/T856.md new file mode 100644 index 0000000..7e5e320 --- /dev/null +++ b/wiki/tables/T856.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "T856" +description: "T856 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/T856" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZRGGBS000](/programs/ZRGGBS000.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZRGGBS000](/programs/ZRGGBS000.md) | XREF_TO_RMVCT | FORM | read | diff --git a/wiki/tables/TBSL.md b/wiki/tables/TBSL.md new file mode 100644 index 0000000..f3fd5bc --- /dev/null +++ b/wiki/tables/TBSL.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "TBSL" +description: "TBSL — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/TBSL" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIC0020](/programs/ZFIC0020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0020](/programs/ZFIC0020.md) | GET_TBSL | FORM | read | diff --git a/wiki/tables/TBSLT.md b/wiki/tables/TBSLT.md new file mode 100644 index 0000000..f8b9dab --- /dev/null +++ b/wiki/tables/TBSLT.md @@ -0,0 +1,31 @@ +--- +type: abap-table +title: "TBSLT" +description: "TBSLT — 읽기 3개 / 쓰기 0개 프로그램" +resource: "abap://table/TBSLT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (3개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | diff --git a/wiki/tables/TCURC.md b/wiki/tables/TCURC.md new file mode 100644 index 0000000..718eea6 --- /dev/null +++ b/wiki/tables/TCURC.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "TCURC" +description: "TCURC — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/TCURC" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0030](/programs/ZFIR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_DATA | FORM | read | diff --git a/wiki/tables/TFKB.md b/wiki/tables/TFKB.md new file mode 100644 index 0000000..8b2b09a --- /dev/null +++ b/wiki/tables/TFKB.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "TFKB" +description: "TFKB — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/TFKB" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | diff --git a/wiki/tables/TGSBT.md b/wiki/tables/TGSBT.md new file mode 100644 index 0000000..ed362f0 --- /dev/null +++ b/wiki/tables/TGSBT.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "TGSBT" +description: "TGSBT — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/TGSBT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_GTEXT INPUT | MODULE | read | diff --git a/wiki/tables/THKON.md b/wiki/tables/THKON.md new file mode 100644 index 0000000..d7f3e0a --- /dev/null +++ b/wiki/tables/THKON.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "THKON" +description: "THKON — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/THKON" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | GET_HKONT_TEXT INPUT | MODULE | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | SET_F4_HKONT INPUT | MODULE | read | diff --git a/wiki/tables/TKA01.md b/wiki/tables/TKA01.md new file mode 100644 index 0000000..8b07363 --- /dev/null +++ b/wiki/tables/TKA01.md @@ -0,0 +1,81 @@ +--- +type: abap-table +title: "TKA01" +description: "TKA01 — 읽기 28개 / 쓰기 0개 프로그램" +resource: "abap://table/TKA01" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 28 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (28개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_KOKRS_BASE | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | SET_KOKRS_BASE | FORM | read | diff --git a/wiki/tables/TKA02.md b/wiki/tables/TKA02.md new file mode 100644 index 0000000..04e767f --- /dev/null +++ b/wiki/tables/TKA02.md @@ -0,0 +1,55 @@ +--- +type: abap-table +title: "TKA02" +description: "TKA02 — 읽기 15개 / 쓰기 0개 프로그램" +resource: "abap://table/TKA02" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 15 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (15개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_BSEG | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/TKA05.md b/wiki/tables/TKA05.md new file mode 100644 index 0000000..d154615 --- /dev/null +++ b/wiki/tables/TKA05.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "TKA05" +description: "TKA05 — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/TKA05" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC9010](/programs/ZCOC9010.md) | VALIDATION_CHECK | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | VALIDATION_CHECK | FORM | read | diff --git a/wiki/tables/TKT09.md b/wiki/tables/TKT09.md new file mode 100644 index 0000000..02b68c9 --- /dev/null +++ b/wiki/tables/TKT09.md @@ -0,0 +1,81 @@ +--- +type: abap-table +title: "TKT09" +description: "TKT09 — 읽기 28개 / 쓰기 0개 프로그램" +resource: "abap://table/TKT09" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 28 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (28개 프로그램) + +- [ZCOC0010](/programs/ZCOC0010.md) +- [ZCOC0020](/programs/ZCOC0020.md) +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0040](/programs/ZCOC0040.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0100](/programs/ZCOC0100.md) +- [ZCOC0110](/programs/ZCOC0110.md) +- [ZCOC0120](/programs/ZCOC0120.md) +- [ZCOC0130](/programs/ZCOC0130.md) +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOC9010](/programs/ZCOC9010.md) +- [ZCOC9020](/programs/ZCOC9020.md) +- [ZCOC9030](/programs/ZCOC9030.md) +- [ZCOC9040](/programs/ZCOC9040.md) +- [ZCOR0010](/programs/ZCOR0010.md) +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) +- [ZCOR0040](/programs/ZCOR0040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0010](/programs/ZCOC0010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0020](/programs/ZCOC0020.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0040](/programs/ZCOC0040.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0050](/programs/ZCOC0050.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0060](/programs/ZCOC0060.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0070](/programs/ZCOC0070.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0080](/programs/ZCOC0080.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0090](/programs/ZCOC0090.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0100](/programs/ZCOC0100.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0110](/programs/ZCOC0110.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC1010](/programs/ZCOC1010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC9010](/programs/ZCOC9010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC9020](/programs/ZCOC9020.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC9030](/programs/ZCOC9030.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOC9040](/programs/ZCOC9040.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR0040](/programs/ZCOR0040.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_VERSN_TEXT | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | GET_VERSN_TEXT | FORM | read | diff --git a/wiki/tables/USER_ADDRP.md b/wiki/tables/USER_ADDRP.md new file mode 100644 index 0000000..a35ecd5 --- /dev/null +++ b/wiki/tables/USER_ADDRP.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "USER_ADDRP" +description: "USER_ADDRP — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/USER_ADDRP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0160](/programs/ZFIR0160.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0160](/programs/ZFIR0160.md) | F4_UNAME_PROCESS | FORM | read | diff --git a/wiki/tables/USR01.md b/wiki/tables/USR01.md new file mode 100644 index 0000000..7d7309c --- /dev/null +++ b/wiki/tables/USR01.md @@ -0,0 +1,59 @@ +--- +type: abap-table +title: "USR01" +description: "USR01 — 읽기 17개 / 쓰기 0개 프로그램" +resource: "abap://table/USR01" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 17 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (17개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | SELECT_USR01 | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | SELECT_USR01 | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | SELECT_USR01 | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | SELECT_USR01 | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | SELECT_USR01 | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | SELECT_USR01 | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | SELECT_USR01 | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SELECT_USR01 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | SELECT_USR01 | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | SELECT_USR01 | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | SELECT_USR01 | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | SELECT_USR01 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | SELECT_USR01 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | SELECT_USR01 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | SELECT_USR01 | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | SELECT_USR01 | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | SELECT_USR01 | FORM | read | diff --git a/wiki/tables/VBKPF.md b/wiki/tables/VBKPF.md new file mode 100644 index 0000000..c05f4cc --- /dev/null +++ b/wiki/tables/VBKPF.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "VBKPF" +description: "VBKPF — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/VBKPF" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | PARK_DOCUMENT_SELECTION | FORM | read | diff --git a/wiki/tables/VBRK.md b/wiki/tables/VBRK.md new file mode 100644 index 0000000..40718c1 --- /dev/null +++ b/wiki/tables/VBRK.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "VBRK" +description: "VBRK — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/VBRK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | CLEAR_ITEM_SELECTION | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | GET BKPF | EVENT | read | +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_CHECK_TABLE | FORM | read | diff --git a/wiki/tables/VBRP.md b/wiki/tables/VBRP.md new file mode 100644 index 0000000..676963f --- /dev/null +++ b/wiki/tables/VBRP.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "VBRP" +description: "VBRP — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/VBRP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | FILL_TABLES | FORM | read | diff --git a/wiki/tables/VBSEGA.md b/wiki/tables/VBSEGA.md new file mode 100644 index 0000000..8138219 --- /dev/null +++ b/wiki/tables/VBSEGA.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "VBSEGA" +description: "VBSEGA — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/VBSEGA" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | diff --git a/wiki/tables/VBSEGD.md b/wiki/tables/VBSEGD.md new file mode 100644 index 0000000..fa094ee --- /dev/null +++ b/wiki/tables/VBSEGD.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "VBSEGD" +description: "VBSEGD — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/VBSEGD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | PARK_DOCUMENT_SELECTION | FORM | read | diff --git a/wiki/tables/VBSEGK.md b/wiki/tables/VBSEGK.md new file mode 100644 index 0000000..aa52025 --- /dev/null +++ b/wiki/tables/VBSEGK.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "VBSEGK" +description: "VBSEGK — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/VBSEGK" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | diff --git a/wiki/tables/VBSEGS.md b/wiki/tables/VBSEGS.md new file mode 100644 index 0000000..560d63a --- /dev/null +++ b/wiki/tables/VBSEGS.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "VBSEGS" +description: "VBSEGS — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/VBSEGS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0140](/programs/ZFIR0140.md) | PARK_DOCUMENT_SELECTION | FORM | read | diff --git a/wiki/tables/V_USERNAME.md b/wiki/tables/V_USERNAME.md new file mode 100644 index 0000000..64c082d --- /dev/null +++ b/wiki/tables/V_USERNAME.md @@ -0,0 +1,62 @@ +--- +type: abap-table +title: "V_USERNAME" +description: "V_USERNAME — 읽기 17개 / 쓰기 0개 프로그램" +resource: "abap://table/V_USERNAME" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 17 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (17개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | NAME_SELECT | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | NAME_SELECT | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | NAME_SELECT | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | NAME_SELECT | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | NAME_SELECT | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | NAME_SELECT | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | GET_BSEG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | NAME_SELECT | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | NAME_SELECT | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | NAME_SELECT | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | NAME_SELECT | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | NAME_SELECT | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | NAME_SELECT | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | NAME_SELECT | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | NAME_SELECT | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | NAME_SELECT | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | BSEG_PROCESS | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | NAME_SELECT | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | NAME_SELECT | FORM | read | diff --git a/wiki/tables/ZCOT0010.md b/wiki/tables/ZCOT0010.md new file mode 100644 index 0000000..1a86951 --- /dev/null +++ b/wiki/tables/ZCOT0010.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "ZCOT0010" +description: "ZCOT0010 — 읽기 2개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0010" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOR0010](/programs/ZCOR0010.md) + +## 읽기 (2개 프로그램) + +- [ZCOR0020](/programs/ZCOR0020.md) +- [ZCOR0030](/programs/ZCOR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0020](/programs/ZCOR0020.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0020](/programs/ZCOR0020.md) | GET_MASTER_ZCOT0010 | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | DETERMINE_KSTAR | FORM | read | +| [ZCOR0030](/programs/ZCOR0030.md) | GET_MASTER_ZCOT0010 | FORM | read | +| [ZCOR0010](/programs/ZCOR0010.md) | MODIFY_DB | FORM | write | diff --git a/wiki/tables/ZCOT0020.md b/wiki/tables/ZCOT0020.md new file mode 100644 index 0000000..c81ffa4 --- /dev/null +++ b/wiki/tables/ZCOT0020.md @@ -0,0 +1,36 @@ +--- +type: abap-table +title: "ZCOT0020" +description: "ZCOT0020 — 읽기 1개 / 쓰기 5개 프로그램" +resource: "abap://table/ZCOT0020" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 5 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (5개 프로그램) + +- [ZCOC0030](/programs/ZCOC0030.md) +- [ZCOC0050](/programs/ZCOC0050.md) +- [ZCOC0060](/programs/ZCOC0060.md) +- [ZCOC0070](/programs/ZCOC0070.md) +- [ZCOC0080](/programs/ZCOC0080.md) + +## 읽기 (1개 프로그램) + +- [ZCOR0040](/programs/ZCOR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR0040](/programs/ZCOR0040.md) | SELECT_DATA | FORM | read | +| [ZCOC0030](/programs/ZCOC0030.md) | INSERT_LOG | FORM | write | +| [ZCOC0050](/programs/ZCOC0050.md) | INSERT_LOG | FORM | write | +| [ZCOC0060](/programs/ZCOC0060.md) | INSERT_LOG | FORM | write | +| [ZCOC0070](/programs/ZCOC0070.md) | INSERT_LOG | FORM | write | +| [ZCOC0080](/programs/ZCOC0080.md) | INSERT_LOG | FORM | write | diff --git a/wiki/tables/ZCOT0030.md b/wiki/tables/ZCOT0030.md new file mode 100644 index 0000000..c49444e --- /dev/null +++ b/wiki/tables/ZCOT0030.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "ZCOT0030" +description: "ZCOT0030 — 읽기 0개 / 쓰기 2개 프로그램" +resource: "abap://table/ZCOT0030" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZCOC0090](/programs/ZCOC0090.md) +- [ZCOC0110](/programs/ZCOC0110.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0090](/programs/ZCOC0090.md) | INSERT_LOG | FORM | write | +| [ZCOC0110](/programs/ZCOC0110.md) | INSERT_LOG | FORM | write | diff --git a/wiki/tables/ZCOT0040.md b/wiki/tables/ZCOT0040.md new file mode 100644 index 0000000..eb89835 --- /dev/null +++ b/wiki/tables/ZCOT0040.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "ZCOT0040" +description: "ZCOT0040 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0040" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC0120](/programs/ZCOC0120.md) + +## 읽기 (1개 프로그램) + +- [ZCOC0120](/programs/ZCOC0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0120](/programs/ZCOC0120.md) | PROCESS_DATA | FORM | read | +| [ZCOC0120](/programs/ZCOC0120.md) | DATA_CHANGED_MODIFY | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | MODIFY_DB | FORM | write | +| [ZCOC0120](/programs/ZCOC0120.md) | SAVE_DB | FORM | write | diff --git a/wiki/tables/ZCOT0050.md b/wiki/tables/ZCOT0050.md new file mode 100644 index 0000000..7c41a0b --- /dev/null +++ b/wiki/tables/ZCOT0050.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "ZCOT0050" +description: "ZCOT0050 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0050" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC0130](/programs/ZCOC0130.md) + +## 읽기 (1개 프로그램) + +- [ZCOC0130](/programs/ZCOC0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC0130](/programs/ZCOC0130.md) | SELECT_DATA | FORM | read | +| [ZCOC0130](/programs/ZCOC0130.md) | SAVE_DB | FORM | write | diff --git a/wiki/tables/ZCOT0080.md b/wiki/tables/ZCOT0080.md new file mode 100644 index 0000000..ace3c88 --- /dev/null +++ b/wiki/tables/ZCOT0080.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "ZCOT0080" +description: "ZCOT0080 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/ZCOT0080" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | diff --git a/wiki/tables/ZCOT0090.md b/wiki/tables/ZCOT0090.md new file mode 100644 index 0000000..1d763a5 --- /dev/null +++ b/wiki/tables/ZCOT0090.md @@ -0,0 +1,39 @@ +--- +type: abap-table +title: "ZCOT0090" +description: "ZCOT0090 — 읽기 7개 / 쓰기 0개 프로그램" +resource: "abap://table/ZCOT0090" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 7 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (7개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | EDIT_DATA | FORM | read | diff --git a/wiki/tables/ZCOT0110.md b/wiki/tables/ZCOT0110.md new file mode 100644 index 0000000..f2e648a --- /dev/null +++ b/wiki/tables/ZCOT0110.md @@ -0,0 +1,39 @@ +--- +type: abap-table +title: "ZCOT0110" +description: "ZCOT0110 — 읽기 7개 / 쓰기 0개 프로그램" +resource: "abap://table/ZCOT0110" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 7 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (7개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOC2010](/programs/ZCOC2010.md) +- [ZCOC2020](/programs/ZCOC2020.md) +- [ZCOC2030](/programs/ZCOC2030.md) +- [ZCOC2040](/programs/ZCOC2040.md) +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZCOR2010](/programs/ZCOR2010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2010](/programs/ZCOC2010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2020](/programs/ZCOC2020.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2030](/programs/ZCOC2030.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOC2040](/programs/ZCOC2040.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZCOR2010](/programs/ZCOR2010.md) | EDIT_DATA | FORM | read | diff --git a/wiki/tables/ZCOT0130.md b/wiki/tables/ZCOT0130.md new file mode 100644 index 0000000..988ffa9 --- /dev/null +++ b/wiki/tables/ZCOT0130.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0130" +description: "ZCOT0130 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZCOT0130" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0070](/programs/ZFIR0070.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0123 | FORM | read | diff --git a/wiki/tables/ZCOT0140.md b/wiki/tables/ZCOT0140.md new file mode 100644 index 0000000..704d242 --- /dev/null +++ b/wiki/tables/ZCOT0140.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "ZCOT0140" +description: "ZCOT0140 — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/ZCOT0140" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) +- [ZCOR1010](/programs/ZCOR1010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SELECT_DATA | FORM | read | +| [ZCOR1010](/programs/ZCOR1010.md) | GET_HISIS_IF_SALES | FORM | read | diff --git a/wiki/tables/ZCOT0150.md b/wiki/tables/ZCOT0150.md new file mode 100644 index 0000000..4a23d48 --- /dev/null +++ b/wiki/tables/ZCOT0150.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0150" +description: "ZCOT0150 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0150" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC1010](/programs/ZCOC1010.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC1010](/programs/ZCOC1010.md) | SAVE_LIST | FORM | write | diff --git a/wiki/tables/ZCOT0160.md b/wiki/tables/ZCOT0160.md new file mode 100644 index 0000000..0a90b5c --- /dev/null +++ b/wiki/tables/ZCOT0160.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0160" +description: "ZCOT0160 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0160" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2010](/programs/ZCOC2010.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2010](/programs/ZCOC2010.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZCOT0170.md b/wiki/tables/ZCOT0170.md new file mode 100644 index 0000000..9eeb856 --- /dev/null +++ b/wiki/tables/ZCOT0170.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0170" +description: "ZCOT0170 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0170" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2010](/programs/ZCOC2010.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2010](/programs/ZCOC2010.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZCOT0180.md b/wiki/tables/ZCOT0180.md new file mode 100644 index 0000000..0f7c08c --- /dev/null +++ b/wiki/tables/ZCOT0180.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0180" +description: "ZCOT0180 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0180" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2020](/programs/ZCOC2020.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2020](/programs/ZCOC2020.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZCOT0190.md b/wiki/tables/ZCOT0190.md new file mode 100644 index 0000000..e5dc3f2 --- /dev/null +++ b/wiki/tables/ZCOT0190.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0190" +description: "ZCOT0190 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0190" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2020](/programs/ZCOC2020.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2020](/programs/ZCOC2020.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZCOT0200.md b/wiki/tables/ZCOT0200.md new file mode 100644 index 0000000..860cbb5 --- /dev/null +++ b/wiki/tables/ZCOT0200.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0200" +description: "ZCOT0200 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0200" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2030](/programs/ZCOC2030.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2030](/programs/ZCOC2030.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZCOT0210.md b/wiki/tables/ZCOT0210.md new file mode 100644 index 0000000..589691e --- /dev/null +++ b/wiki/tables/ZCOT0210.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZCOT0210" +description: "ZCOT0210 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZCOT0210" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZCOC2040](/programs/ZCOC2040.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOC2040](/programs/ZCOC2040.md) | PERFORM_SAVE | FORM | write | diff --git a/wiki/tables/ZDTI_CONFIG.md b/wiki/tables/ZDTI_CONFIG.md new file mode 100644 index 0000000..b5a6964 --- /dev/null +++ b/wiki/tables/ZDTI_CONFIG.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZDTI_CONFIG" +description: "ZDTI_CONFIG — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZDTI_CONFIG" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | SMARTBILL_TRANS | FORM | read | diff --git a/wiki/tables/ZDTI_LAYOUT.md b/wiki/tables/ZDTI_LAYOUT.md new file mode 100644 index 0000000..d25cd36 --- /dev/null +++ b/wiki/tables/ZDTI_LAYOUT.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZDTI_LAYOUT" +description: "ZDTI_LAYOUT — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZDTI_LAYOUT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0141](/programs/ZFIR0141.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0141](/programs/ZFIR0141.md) | ALV_WRITE_0100 OUTPUT | MODULE | read | diff --git a/wiki/tables/ZDTI_SAPP.md b/wiki/tables/ZDTI_SAPP.md new file mode 100644 index 0000000..c35b34a --- /dev/null +++ b/wiki/tables/ZDTI_SAPP.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZDTI_SAPP" +description: "ZDTI_SAPP — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZDTI_SAPP" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | DTI_CHECK | FORM | read | diff --git a/wiki/tables/ZDTI_STATUS.md b/wiki/tables/ZDTI_STATUS.md new file mode 100644 index 0000000..81c41a9 --- /dev/null +++ b/wiki/tables/ZDTI_STATUS.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZDTI_STATUS" +description: "ZDTI_STATUS — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZDTI_STATUS" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0140](/programs/ZFIR0140.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0140](/programs/ZFIR0140.md) | DTI_CHECK | FORM | read | diff --git a/wiki/tables/ZDTV3T_AP_EXT.md b/wiki/tables/ZDTV3T_AP_EXT.md new file mode 100644 index 0000000..ddc6389 --- /dev/null +++ b/wiki/tables/ZDTV3T_AP_EXT.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "ZDTV3T_AP_EXT" +description: "ZDTV3T_AP_EXT — 읽기 2개 / 쓰기 2개 프로그램" +resource: "abap://table/ZDTV3T_AP_EXT" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 읽기 (2개 프로그램) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0100](/programs/ZFIR0100.md) | SET_DATA | FORM | read | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | INIT_DATA OUTPUT | MODULE | read | +| [ZFIR0100](/programs/ZFIR0100.md) | SET_SAVE | FORM | write | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | POST | FORM | write | diff --git a/wiki/tables/ZDTV3T_AP_EXT_D.md b/wiki/tables/ZDTV3T_AP_EXT_D.md new file mode 100644 index 0000000..43b8d37 --- /dev/null +++ b/wiki/tables/ZDTV3T_AP_EXT_D.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "ZDTV3T_AP_EXT_D" +description: "ZDTV3T_AP_EXT_D — 읽기 1개 / 쓰기 2개 프로그램" +resource: "abap://table/ZDTV3T_AP_EXT_D" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0100](/programs/ZFIR0100.md) +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 읽기 (1개 프로그램) + +- [ZFIR0100](/programs/ZFIR0100.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0100](/programs/ZFIR0100.md) | SET_DATA | FORM | read | +| [ZFIR0100](/programs/ZFIR0100.md) | SET_SAVE | FORM | write | +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | POST | FORM | write | diff --git a/wiki/tables/ZDTV3T_AP_HEAD.md b/wiki/tables/ZDTV3T_AP_HEAD.md new file mode 100644 index 0000000..87e4061 --- /dev/null +++ b/wiki/tables/ZDTV3T_AP_HEAD.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZDTV3T_AP_HEAD" +description: "ZDTV3T_AP_HEAD — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZDTV3T_AP_HEAD" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0110_DOC](/programs/ZFIR0110_DOC.md) | INIT_DATA OUTPUT | MODULE | read | diff --git a/wiki/tables/ZFIT0010.md b/wiki/tables/ZFIT0010.md new file mode 100644 index 0000000..1776378 --- /dev/null +++ b/wiki/tables/ZFIT0010.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "ZFIT0010" +description: "ZFIT0010 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0010" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIC0020](/programs/ZFIC0020.md) + +## 읽기 (1개 프로그램) + +- [ZFIC0020](/programs/ZFIC0020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0020](/programs/ZFIC0020.md) | GET_ZFIT0010 | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | DATA_BDC | FORM | write | diff --git a/wiki/tables/ZFIT0030.md b/wiki/tables/ZFIT0030.md new file mode 100644 index 0000000..5a09926 --- /dev/null +++ b/wiki/tables/ZFIT0030.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0030" +description: "ZFIT0030 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0030" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0010](/programs/ZFIR0010.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0010](/programs/ZFIR0010.md) | GET_ZFIT0030 | FORM | read | diff --git a/wiki/tables/ZFIT0040.md b/wiki/tables/ZFIT0040.md new file mode 100644 index 0000000..4b49191 --- /dev/null +++ b/wiki/tables/ZFIT0040.md @@ -0,0 +1,38 @@ +--- +type: abap-table +title: "ZFIT0040" +description: "ZFIT0040 — 읽기 6개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0040" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 6 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (6개 프로그램) + +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR1010](/programs/ZCOR1010.md) | SET_CHARACTER_MASTER | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_DATA | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0123 | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DATA | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/ZFIT0050.md b/wiki/tables/ZFIT0050.md new file mode 100644 index 0000000..251e09a --- /dev/null +++ b/wiki/tables/ZFIT0050.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0050" +description: "ZFIT0050 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0050" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0020](/programs/ZFIR0020.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0020](/programs/ZFIR0020.md) | SELECT_DATA | FORM | read | diff --git a/wiki/tables/ZFIT0060.md b/wiki/tables/ZFIT0060.md new file mode 100644 index 0000000..b73c740 --- /dev/null +++ b/wiki/tables/ZFIT0060.md @@ -0,0 +1,37 @@ +--- +type: abap-table +title: "ZFIT0060" +description: "ZFIT0060 — 읽기 4개 / 쓰기 2개 프로그램" +resource: "abap://table/ZFIT0060" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 4 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) + +## 읽기 (4개 프로그램) + +- [ZCOR1010](/programs/ZCOR1010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZCOR1010](/programs/ZCOR1010.md) | GET_FI_DAILY_SALES | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | POSTING_DOCUMENT | FORM | write | +| [ZFIR0030](/programs/ZFIR0030.md) | SEND_AR | FORM | write | +| [ZFIR0031](/programs/ZFIR0031.md) | SEND_AR | FORM | write | diff --git a/wiki/tables/ZFIT0070.md b/wiki/tables/ZFIT0070.md new file mode 100644 index 0000000..24ddbff --- /dev/null +++ b/wiki/tables/ZFIT0070.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0070" +description: "ZFIT0070 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0070" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0030](/programs/ZFIR0030.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_DATA | FORM | read | diff --git a/wiki/tables/ZFIT0080.md b/wiki/tables/ZFIT0080.md new file mode 100644 index 0000000..54c34d4 --- /dev/null +++ b/wiki/tables/ZFIT0080.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "ZFIT0080" +description: "ZFIT0080 — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0080" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0030](/programs/ZFIR0030.md) | CHECK_DATA | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_DOMAIN | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | GET_ZFIT0060 | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_DOMAIN | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | GET_ZFIT0060 | FORM | read | diff --git a/wiki/tables/ZFIT0090.md b/wiki/tables/ZFIT0090.md new file mode 100644 index 0000000..909d437 --- /dev/null +++ b/wiki/tables/ZFIT0090.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0090" +description: "ZFIT0090 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0090" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0040](/programs/ZFIR0040.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0040](/programs/ZFIR0040.md) | SELECT_DATA | FORM | read | diff --git a/wiki/tables/ZFIT0100.md b/wiki/tables/ZFIT0100.md new file mode 100644 index 0000000..7189ceb --- /dev/null +++ b/wiki/tables/ZFIT0100.md @@ -0,0 +1,33 @@ +--- +type: abap-table +title: "ZFIT0100" +description: "ZFIT0100 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0100" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 읽기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | GET_ZFIT0100 | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | CANCEL_CONFIRM_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | CONFIRM_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | CONFIRM_DATA_2 | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | DELETE_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | write | +| [ZFIR0050](/programs/ZFIR0050.md) | REJECT_DATA | FORM | write | diff --git a/wiki/tables/ZFIT0101.md b/wiki/tables/ZFIT0101.md new file mode 100644 index 0000000..a0c4a52 --- /dev/null +++ b/wiki/tables/ZFIT0101.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0101" +description: "ZFIT0101 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0101" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | write | diff --git a/wiki/tables/ZFIT0102.md b/wiki/tables/ZFIT0102.md new file mode 100644 index 0000000..9696c42 --- /dev/null +++ b/wiki/tables/ZFIT0102.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0102" +description: "ZFIT0102 — 읽기 0개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0102" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 0 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) + +## 읽기 (0개 프로그램) + +- (없음) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | PROCESSING_DATA | FORM | write | diff --git a/wiki/tables/ZFIT0110.md b/wiki/tables/ZFIT0110.md new file mode 100644 index 0000000..e739b91 --- /dev/null +++ b/wiki/tables/ZFIT0110.md @@ -0,0 +1,32 @@ +--- +type: abap-table +title: "ZFIT0110" +description: "ZFIT0110 — 읽기 2개 / 쓰기 2개 프로그램" +resource: "abap://table/ZFIT0110" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 2 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (2개 프로그램) + +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) + +## 읽기 (2개 프로그램) + +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0060](/programs/ZFIR0060.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | GET_ZFIT0110 | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | SEND_CLEARING_INFO | FORM | write | +| [ZFIR0061](/programs/ZFIR0061.md) | SEND_CLEARING_INFO | FORM | write | diff --git a/wiki/tables/ZFIT0120.md b/wiki/tables/ZFIT0120.md new file mode 100644 index 0000000..b6a0bfc --- /dev/null +++ b/wiki/tables/ZFIT0120.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0120" +description: "ZFIT0120 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0120" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0070](/programs/ZFIR0070.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0120 | FORM | read | diff --git a/wiki/tables/ZFIT0121.md b/wiki/tables/ZFIT0121.md new file mode 100644 index 0000000..0af9d87 --- /dev/null +++ b/wiki/tables/ZFIT0121.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0121" +description: "ZFIT0121 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0121" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0071](/programs/ZFIR0071.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0071](/programs/ZFIR0071.md) | GET_ZFIT0121 | FORM | read | diff --git a/wiki/tables/ZFIT0122.md b/wiki/tables/ZFIT0122.md new file mode 100644 index 0000000..7d47432 --- /dev/null +++ b/wiki/tables/ZFIT0122.md @@ -0,0 +1,29 @@ +--- +type: abap-table +title: "ZFIT0122" +description: "ZFIT0122 — 읽기 2개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0122" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 2 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (2개 프로그램) + +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0072](/programs/ZFIR0072.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0122 | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | GET_ZFIT0122 | FORM | read | diff --git a/wiki/tables/ZFIT0123.md b/wiki/tables/ZFIT0123.md new file mode 100644 index 0000000..44a7aad --- /dev/null +++ b/wiki/tables/ZFIT0123.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0123" +description: "ZFIT0123 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0123" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0070](/programs/ZFIR0070.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0070](/programs/ZFIR0070.md) | GET_ZFIT0123 | FORM | read | diff --git a/wiki/tables/ZFIT0130.md b/wiki/tables/ZFIT0130.md new file mode 100644 index 0000000..c593ccf --- /dev/null +++ b/wiki/tables/ZFIT0130.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "ZFIT0130" +description: "ZFIT0130 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0130" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0080](/programs/ZFIR0080.md) + +## 읽기 (1개 프로그램) + +- [ZFIR0080](/programs/ZFIR0080.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | POSTING_DOCUMET | FORM | write | diff --git a/wiki/tables/ZFIT0131.md b/wiki/tables/ZFIT0131.md new file mode 100644 index 0000000..b93857e --- /dev/null +++ b/wiki/tables/ZFIT0131.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0131" +description: "ZFIT0131 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0131" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0080](/programs/ZFIR0080.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0080](/programs/ZFIR0080.md) | GET_ZFIT0130 | FORM | read | diff --git a/wiki/tables/ZFIT0140.md b/wiki/tables/ZFIT0140.md new file mode 100644 index 0000000..df558f4 --- /dev/null +++ b/wiki/tables/ZFIT0140.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0140" +description: "ZFIT0140 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0140" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0090](/programs/ZFIR0090.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0090](/programs/ZFIR0090.md) | GET_DATA | FORM | read | diff --git a/wiki/tables/ZFIT0150.md b/wiki/tables/ZFIT0150.md new file mode 100644 index 0000000..e7b8a88 --- /dev/null +++ b/wiki/tables/ZFIT0150.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "ZFIT0150" +description: "ZFIT0150 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0150" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZFIT0150 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | DOCUMENT_POSTING | FORM | write | diff --git a/wiki/tables/ZFIT0151.md b/wiki/tables/ZFIT0151.md new file mode 100644 index 0000000..e892faa --- /dev/null +++ b/wiki/tables/ZFIT0151.md @@ -0,0 +1,28 @@ +--- +type: abap-table +title: "ZFIT0151" +description: "ZFIT0151 — 읽기 1개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0151" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZFIT0150 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | DOCUMENT_POSTING | FORM | write | diff --git a/wiki/tables/ZFIT0160.md b/wiki/tables/ZFIT0160.md new file mode 100644 index 0000000..c90345c --- /dev/null +++ b/wiki/tables/ZFIT0160.md @@ -0,0 +1,63 @@ +--- +type: abap-table +title: "ZFIT0160" +description: "ZFIT0160 — 읽기 18개 / 쓰기 1개 프로그램" +resource: "abap://table/ZFIT0160" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 18 +x-write-programs: 1 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (1개 프로그램) + +- [ZFIR0160](/programs/ZFIR0160.md) + +## 읽기 (18개 프로그램) + +- [ZFIC0010](/programs/ZFIC0010.md) +- [ZFIC0020](/programs/ZFIC0020.md) +- [ZFIR0010](/programs/ZFIR0010.md) +- [ZFIR0030](/programs/ZFIR0030.md) +- [ZFIR0031](/programs/ZFIR0031.md) +- [ZFIR0032](/programs/ZFIR0032.md) +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0060](/programs/ZFIR0060.md) +- [ZFIR0061](/programs/ZFIR0061.md) +- [ZFIR0070](/programs/ZFIR0070.md) +- [ZFIR0071](/programs/ZFIR0071.md) +- [ZFIR0072](/programs/ZFIR0072.md) +- [ZFIR0080](/programs/ZFIR0080.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0120](/programs/ZFIR0120.md) +- [ZFIR0130](/programs/ZFIR0130.md) +- [ZFIR0160](/programs/ZFIR0160.md) +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIC0010](/programs/ZFIC0010.md) | AUTHORITY_PG | FORM | read | +| [ZFIC0020](/programs/ZFIC0020.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0010](/programs/ZFIR0010.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0030](/programs/ZFIR0030.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0031](/programs/ZFIR0031.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0032](/programs/ZFIR0032.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0060](/programs/ZFIR0060.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0061](/programs/ZFIR0061.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0070](/programs/ZFIR0070.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0071](/programs/ZFIR0071.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0072](/programs/ZFIR0072.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0080](/programs/ZFIR0080.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0160](/programs/ZFIR0160.md) | ZFIT0160_PROCESS | FORM | read | +| [ZFIR0170](/programs/ZFIR0170.md) | AUTHORITY_PG | FORM | read | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_DELETE_ROWS | FORM | write | +| [ZFIR0160](/programs/ZFIR0160.md) | SET_SAVE | FORM | write | diff --git a/wiki/tables/ZFIT0170.md b/wiki/tables/ZFIT0170.md new file mode 100644 index 0000000..83c376f --- /dev/null +++ b/wiki/tables/ZFIT0170.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0170" +description: "ZFIT0170 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0170" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/ZFIT0171.md b/wiki/tables/ZFIT0171.md new file mode 100644 index 0000000..d9764e7 --- /dev/null +++ b/wiki/tables/ZFIT0171.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZFIT0171" +description: "ZFIT0171 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZFIT0171" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0170](/programs/ZFIR0170.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0170](/programs/ZFIR0170.md) | GET_ZFIT0170 | FORM | read | diff --git a/wiki/tables/ZIFT0010.md b/wiki/tables/ZIFT0010.md new file mode 100644 index 0000000..53b0abd --- /dev/null +++ b/wiki/tables/ZIFT0010.md @@ -0,0 +1,36 @@ +--- +type: abap-table +title: "ZIFT0010" +description: "ZIFT0010 — 읽기 3개 / 쓰기 3개 프로그램" +resource: "abap://table/ZIFT0010" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 3 +x-write-programs: 3 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (3개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 읽기 (3개 프로그램) + +- [ZFIR0050](/programs/ZFIR0050.md) +- [ZFIR0090](/programs/ZFIR0090.md) +- [ZFIR0130](/programs/ZFIR0130.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_PROCESSING_DATA | FORM | read | +| [ZFIR0090](/programs/ZFIR0090.md) | DISPLAY_PROCESSING_DATA | FORM | read | +| [ZFIR0130](/programs/ZFIR0130.md) | DISPLAY_PROCESSING_DATA | FORM | read | +| [ZFIR0050](/programs/ZFIR0050.md) | DISPLAY_PROCESSING_DATA | FORM | write | +| [ZFIR0090](/programs/ZFIR0090.md) | DISPLAY_PROCESSING_DATA | FORM | write | +| [ZFIR0130](/programs/ZFIR0130.md) | DISPLAY_PROCESSING_DATA | FORM | write | diff --git a/wiki/tables/ZUNICT1000.md b/wiki/tables/ZUNICT1000.md new file mode 100644 index 0000000..ca93445 --- /dev/null +++ b/wiki/tables/ZUNICT1000.md @@ -0,0 +1,30 @@ +--- +type: abap-table +title: "ZUNICT1000" +description: "ZUNICT1000 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZUNICT1000" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZFIT0150 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1001 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1002 | FORM | read | +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1003 | FORM | read | diff --git a/wiki/tables/ZUNICT1001.md b/wiki/tables/ZUNICT1001.md new file mode 100644 index 0000000..0b013b2 --- /dev/null +++ b/wiki/tables/ZUNICT1001.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZUNICT1001" +description: "ZUNICT1001 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZUNICT1001" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1001 | FORM | read | diff --git a/wiki/tables/ZUNICT1002.md b/wiki/tables/ZUNICT1002.md new file mode 100644 index 0000000..cdee7cf --- /dev/null +++ b/wiki/tables/ZUNICT1002.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZUNICT1002" +description: "ZUNICT1002 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZUNICT1002" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1002 | FORM | read | diff --git a/wiki/tables/ZUNICT1003.md b/wiki/tables/ZUNICT1003.md new file mode 100644 index 0000000..36532db --- /dev/null +++ b/wiki/tables/ZUNICT1003.md @@ -0,0 +1,27 @@ +--- +type: abap-table +title: "ZUNICT1003" +description: "ZUNICT1003 — 읽기 1개 / 쓰기 0개 프로그램" +resource: "abap://table/ZUNICT1003" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-read-programs: 1 +x-write-programs: 0 +--- + +> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다. + +## 쓰기 (0개 프로그램) + +- (없음) + +## 읽기 (1개 프로그램) + +- [ZFIR0120](/programs/ZFIR0120.md) + +## 사용 지점 (unit 단위) + +| 프로그램 | unit | 유형 | 모드 | +|---|---|---|---| +| [ZFIR0120](/programs/ZFIR0120.md) | GET_ZUNICT1003 | FORM | read | diff --git a/wiki/tcodes/ZFIC0010.md b/wiki/tcodes/ZFIC0010.md new file mode 100644 index 0000000..6d58826 --- /dev/null +++ b/wiki/tcodes/ZFIC0010.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIC0010 — 계정과목 대량생성" +description: "계정과목 대량생성" +resource: "abap://tcode/ZFIC0010" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIC0010 +--- + +## 프로그램 + +- [ZFIC0010](/programs/ZFIC0010.md) diff --git a/wiki/tcodes/ZFIC0020.md b/wiki/tcodes/ZFIC0020.md new file mode 100644 index 0000000..9fbbf23 --- /dev/null +++ b/wiki/tcodes/ZFIC0020.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIC0020 — 전표 대량 UPLOAD" +description: "전표 대량 UPLOAD" +resource: "abap://tcode/ZFIC0020" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIC0020 +--- + +## 프로그램 + +- [ZFIC0020](/programs/ZFIC0020.md) diff --git a/wiki/tcodes/ZFIR0010.md b/wiki/tcodes/ZFIR0010.md new file mode 100644 index 0000000..7464de1 --- /dev/null +++ b/wiki/tcodes/ZFIR0010.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0010 — 거래처마스터 I/F 이력조회" +description: "거래처마스터 I/F 이력조회" +resource: "abap://tcode/ZFIR0010" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0010 +--- + +## 프로그램 + +- [ZFIR0010](/programs/ZFIR0010.md) diff --git a/wiki/tcodes/ZFIR0030.md b/wiki/tcodes/ZFIR0030.md new file mode 100644 index 0000000..b1498ea --- /dev/null +++ b/wiki/tcodes/ZFIR0030.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0030 — 매출 및 입금내역 인터페이스" +description: "매출 및 입금내역 인터페이스" +resource: "abap://tcode/ZFIR0030" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0030 +--- + +## 프로그램 + +- [ZFIR0030](/programs/ZFIR0030.md) diff --git a/wiki/tcodes/ZFIR0031.md b/wiki/tcodes/ZFIR0031.md new file mode 100644 index 0000000..a4c08e7 --- /dev/null +++ b/wiki/tcodes/ZFIR0031.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0031 — 매출 및 입금내역 I/F 이력 조회" +description: "매출 및 입금내역 I/F 이력 조회" +resource: "abap://tcode/ZFIR0031" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0031 +--- + +## 프로그램 + +- [ZFIR0031](/programs/ZFIR0031.md) diff --git a/wiki/tcodes/ZFIR0032.md b/wiki/tcodes/ZFIR0032.md new file mode 100644 index 0000000..f93db7a --- /dev/null +++ b/wiki/tcodes/ZFIR0032.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0032 — 매출 및 입금내역 집계표" +description: "매출 및 입금내역 집계표" +resource: "abap://tcode/ZFIR0032" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0032 +--- + +## 프로그램 + +- [ZFIR0032](/programs/ZFIR0032.md) diff --git a/wiki/tcodes/ZFIR0050.md b/wiki/tcodes/ZFIR0050.md new file mode 100644 index 0000000..631ea77 --- /dev/null +++ b/wiki/tcodes/ZFIR0050.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0050 — 임시전표 관리" +description: "임시전표 관리" +resource: "abap://tcode/ZFIR0050" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0050 +--- + +## 프로그램 + +- [ZFIR0050](/programs/ZFIR0050.md) diff --git a/wiki/tcodes/ZFIR0060.md b/wiki/tcodes/ZFIR0060.md new file mode 100644 index 0000000..39827e3 --- /dev/null +++ b/wiki/tcodes/ZFIR0060.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0060 — 카드채권 반제내역 처리결과 IF" +description: "카드채권 반제내역 처리결과 IF" +resource: "abap://tcode/ZFIR0060" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0060 +--- + +## 프로그램 + +- [ZFIR0060](/programs/ZFIR0060.md) diff --git a/wiki/tcodes/ZFIR0061.md b/wiki/tcodes/ZFIR0061.md new file mode 100644 index 0000000..5f72ca9 --- /dev/null +++ b/wiki/tcodes/ZFIR0061.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0061 — 카드채권 반제내역 I/F 이력 조회" +description: "카드채권 반제내역 I/F 이력 조회" +resource: "abap://tcode/ZFIR0061" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0061 +--- + +## 프로그램 + +- [ZFIR0061](/programs/ZFIR0061.md) diff --git a/wiki/tcodes/ZFIR0070.md b/wiki/tcodes/ZFIR0070.md new file mode 100644 index 0000000..ba1fa53 --- /dev/null +++ b/wiki/tcodes/ZFIR0070.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0070 — 수불부-상품 I/F 이력 조회" +description: "수불부-상품 I/F 이력 조회" +resource: "abap://tcode/ZFIR0070" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0070 +--- + +## 프로그램 + +- [ZFIR0070](/programs/ZFIR0070.md) diff --git a/wiki/tcodes/ZFIR0071.md b/wiki/tcodes/ZFIR0071.md new file mode 100644 index 0000000..a1997b9 --- /dev/null +++ b/wiki/tcodes/ZFIR0071.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0071 — 수불부-물류/서비스 I/F 이력 조회" +description: "수불부-물류/서비스 I/F 이력 조회" +resource: "abap://tcode/ZFIR0071" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0071 +--- + +## 프로그램 + +- [ZFIR0071](/programs/ZFIR0071.md) diff --git a/wiki/tcodes/ZFIR0072.md b/wiki/tcodes/ZFIR0072.md new file mode 100644 index 0000000..3770ebd --- /dev/null +++ b/wiki/tcodes/ZFIR0072.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0072 — 수불부-자가소비내역 I/F 이력 조회" +description: "수불부-자가소비내역 I/F 이력 조회" +resource: "abap://tcode/ZFIR0072" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0072 +--- + +## 프로그램 + +- [ZFIR0072](/programs/ZFIR0072.md) diff --git a/wiki/tcodes/ZFIR0080.md b/wiki/tcodes/ZFIR0080.md new file mode 100644 index 0000000..10a0f23 --- /dev/null +++ b/wiki/tcodes/ZFIR0080.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0080 — 인사 정보 전표 생성" +description: "인사 정보 전표 생성" +resource: "abap://tcode/ZFIR0080" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0080 +--- + +## 프로그램 + +- [ZFIR0080](/programs/ZFIR0080.md) diff --git a/wiki/tcodes/ZFIR0090.md b/wiki/tcodes/ZFIR0090.md new file mode 100644 index 0000000..1c19b61 --- /dev/null +++ b/wiki/tcodes/ZFIR0090.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0090 — 전자결재 승인 자동기표 (출장비/교통비)" +description: "전자결재 승인 자동기표 (출장비/교통비)" +resource: "abap://tcode/ZFIR0090" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0090 +--- + +## 프로그램 + +- [ZFIR0090](/programs/ZFIR0090.md) diff --git a/wiki/tcodes/ZFIR0120.md b/wiki/tcodes/ZFIR0120.md new file mode 100644 index 0000000..81169b5 --- /dev/null +++ b/wiki/tcodes/ZFIR0120.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0120 — 법인카드 청구 정산" +description: "법인카드 청구 정산" +resource: "abap://tcode/ZFIR0120" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0120 +--- + +## 프로그램 + +- [ZFIR0120](/programs/ZFIR0120.md) diff --git a/wiki/tcodes/ZFIR0130.md b/wiki/tcodes/ZFIR0130.md new file mode 100644 index 0000000..b6ce495 --- /dev/null +++ b/wiki/tcodes/ZFIR0130.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0130 — 시뮬레이션" +description: "시뮬레이션" +resource: "abap://tcode/ZFIR0130" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0130 +--- + +## 프로그램 + +- [ZFIR0130](/programs/ZFIR0130.md) diff --git a/wiki/tcodes/ZFIR0170.md b/wiki/tcodes/ZFIR0170.md new file mode 100644 index 0000000..1dc8488 --- /dev/null +++ b/wiki/tcodes/ZFIR0170.md @@ -0,0 +1,14 @@ +--- +type: abap-tcode +title: "ZFIR0170 — 장려금 구매 정산" +description: "장려금 구매 정산" +resource: "abap://tcode/ZFIR0170" +tags: [] +generated: { by: "abap-indexing/wiki_out", at: "2026-09-20T15:36:24+00:00" } +status: stable +x-program: ZFIR0170 +--- + +## 프로그램 + +- [ZFIR0170](/programs/ZFIR0170.md) diff --git a/wiki_out/__init__.py b/wiki_out/__init__.py new file mode 100644 index 0000000..9255e26 --- /dev/null +++ b/wiki_out/__init__.py @@ -0,0 +1 @@ +"""Stage 3 → OKF v0.2 위키 출력 (계획서 v4 §5.7).""" diff --git a/wiki_out/entities.py b/wiki_out/entities.py new file mode 100644 index 0000000..fcfc743 --- /dev/null +++ b/wiki_out/entities.py @@ -0,0 +1,173 @@ +"""엔티티 위키 페이지 — tables/ functions/ tcodes/ (계획서 v4 §5.7, 수정사항 8번). + +`table_ref` / `call_edge` 에서 **LLM 없이 결정론적으로** 만든다. 에이전트가 +"이 테이블을 쓰는 프로그램 전부", "이 FM 을 호출하는 곳 전부" 를 한 문서에서 보게 하는 게 목적이다. + +프로그램당 파일이 아니라 **엔티티당 파일**이라 1만 본으로 늘어도 파일 수는 DDIC 테이블·FM 개수로 +묶인다 (구조 변경으로 없어진 units/ 의 70만 파일 문제가 재발하지 않는다). + +`type` 값: abap-table / abap-function / abap-tcode. +""" +from __future__ import annotations + +import re +import sqlite3 +from pathlib import Path + +from config.settings import settings +from parser.refs import FUNCTION_CALL_KINDS + +from .merge import merge_write +from .okf_writer import PIPELINE, _fm, _lst, _now, _q + +MAX_ROWS = 300 # 한 문서에 싣는 사용처 상한 + + +def _safe(name: str) -> str: + return re.sub(r"[^0-9A-Za-z가-힣_.\-]", "_", name or "_") + + +def _unit_name(unit_id: str | None) -> str: + if not unit_id: + return "" + return unit_id.split("#")[3] if unit_id.count("#") >= 3 else unit_id + + +# ------------------------------------------------------------------ tables/ + +def _render_table(con: sqlite3.Connection, name: str) -> str: + rows = con.execute( + "SELECT tr.program, tr.mode, tr.unit_id, u.name AS unit_name, u.unit_type, " + "p.title_ko, p.devclass " + "FROM table_ref tr LEFT JOIN unit u ON u.unit_id=tr.unit_id " + "LEFT JOIN program p ON p.name=tr.program " + "WHERE tr.table_name=? ORDER BY tr.mode, tr.program, u.name", + (name,), + ).fetchall() + readers = sorted({r["program"] for r in rows if r["mode"] == "read"}) + writers = sorted({r["program"] for r in rows if r["mode"] == "write"}) + ddic = con.execute("SELECT text_ko FROM ddic_table WHERE name=?", (name,)).fetchone() + text_ko = (ddic["text_ko"] if ddic else "") or "" + + desc = f"{name} — 읽기 {len(readers)}개 / 쓰기 {len(writers)}개 프로그램" + fm = [ + "type: abap-table", + f"title: {_q(name + (' — ' + text_ko if text_ko else ''))}", + f"description: {_q(text_ko or desc)}", + f"resource: {_q('abap://table/' + name)}", + f"tags: {_lst([t for t in ([text_ko] if text_ko else [])][:5])}", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + "status: stable", + f"x-read-programs: {len(readers)}", + f"x-write-programs: {len(writers)}", + ] + body: list[str] = [] + if not text_ko: + # DD02T 미확보 (ASSUMPTIONS.md §5) — 데이터가 들어오면 타이틀이 채워진다 + body += ["> DDIC 테이블 텍스트 미확보 — 이름·사용처만 제공한다.", ""] + body += [f"## 쓰기 ({len(writers)}개 프로그램)", ""] + body += ([f"- [{p}](/programs/{p}.md)" for p in writers] or ["- (없음)"]) + body += ["", f"## 읽기 ({len(readers)}개 프로그램)", ""] + body += ([f"- [{p}](/programs/{p}.md)" for p in readers] or ["- (없음)"]) + body += ["", "## 사용 지점 (unit 단위)", "", "| 프로그램 | unit | 유형 | 모드 |", "|---|---|---|---|"] + for r in rows[:MAX_ROWS]: + body.append(f"| [{r['program']}](/programs/{r['program']}.md) " + f"| {r['unit_name'] or _unit_name(r['unit_id'])} | {r['unit_type'] or ''} | {r['mode']} |") + if len(rows) > MAX_ROWS: + body.append(f"| … | {len(rows) - MAX_ROWS}건 더 | | |") + body.append("") + return _fm(fm) + "\n" + "\n".join(body) + + +# --------------------------------------------------------------- functions/ + +def _render_function(con: sqlite3.Connection, name: str) -> str: + ph = ",".join("?" * len(FUNCTION_CALL_KINDS)) + rows = con.execute( + f"SELECT e.program, e.from_unit, e.call_type, e.line, u.name AS unit_name, u.unit_type, p.title_ko " + f"FROM call_edge e LEFT JOIN unit u ON u.unit_id=e.from_unit " + f"LEFT JOIN program p ON p.name=e.program " + f"WHERE e.external_name=? AND e.call_type IN ({ph}) ORDER BY e.program, e.line", + (name, *FUNCTION_CALL_KINDS), + ).fetchall() + callers = sorted({r["program"] for r in rows}) + rfc = any(r["call_type"] == "call_function_rfc" for r in rows) + + fm = [ + "type: abap-function", + f"title: {_q(name)}", + f"description: {_q(f'{name} — 호출 프로그램 {len(callers)}개' + (' (RFC 호출 포함)' if rfc else ''))}", + f"resource: {_q('abap://function/' + name)}", + f"tags: {_lst(['RFC'] if rfc else [])}", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + "status: stable", + f"x-caller-programs: {len(callers)}", + f"x-call-sites: {len(rows)}", + ] + body = ["> 이 펑션모듈 자체의 소스는 수집 대상이 아니다 (ASSUMPTIONS.md §4) — 호출처만 제공한다.", "", + f"## 호출 프로그램 ({len(callers)}개)", ""] + body += ([f"- [{p}](/programs/{p}.md)" for p in callers] or ["- (없음)"]) + body += ["", "## 호출 지점", "", "| 프로그램 | unit | 종류 | 줄 |", "|---|---|---|---|"] + for r in rows[:MAX_ROWS]: + body.append(f"| [{r['program']}](/programs/{r['program']}.md) " + f"| {r['unit_name'] or _unit_name(r['from_unit'])} | {r['call_type']} | {r['line']} |") + if len(rows) > MAX_ROWS: + body.append(f"| … | {len(rows) - MAX_ROWS}건 더 | | |") + body.append("") + return _fm(fm) + "\n" + "\n".join(body) + + +# ------------------------------------------------------------------ tcodes/ + +def _render_tcode(con: sqlite3.Connection, code: str, program: str, text_ko: str) -> str: + fm = [ + "type: abap-tcode", + f"title: {_q(code + (' — ' + text_ko if text_ko else ''))}", + f"description: {_q(text_ko or code)}", + f"resource: {_q('abap://tcode/' + code)}", + "tags: []", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + "status: stable", + f"x-program: {program or ''}", + ] + body = ["## 프로그램", "", + f"- [{program}](/programs/{program}.md)" if program else "- (미확보)", ""] + return _fm(fm) + "\n" + "\n".join(body) + + +# ------------------------------------------------------------------ 진입점 + +def write_entity_wiki(con: sqlite3.Connection, wiki_dir: Path | None = None, + limit: int | None = None) -> dict: + """tables/ functions/ tcodes/ 를 (재)생성한다. 결정론적이라 프로그램 적재 후 언제든 호출 가능.""" + wiki_dir = wiki_dir or settings.wiki_dir + stats = {"tables": 0, "functions": 0, "tcodes": 0} + + names = [r["table_name"] for r in con.execute( + "SELECT DISTINCT table_name FROM table_ref WHERE table_name IS NOT NULL AND table_name!='' " + "ORDER BY table_name")] + for name in names[:limit] if limit else names: + rel = f"tables/{_safe(name)}.md" + merge_write(wiki_dir / rel, _render_table(con, name), code_hash=None, + wiki_dir=wiki_dir, doc_rel=rel) + stats["tables"] += 1 + + ph = ",".join("?" * len(FUNCTION_CALL_KINDS)) + fnames = [r["external_name"] for r in con.execute( + f"SELECT DISTINCT external_name FROM call_edge WHERE external_name IS NOT NULL " + f"AND external_name!='' AND call_type IN ({ph}) ORDER BY external_name", + FUNCTION_CALL_KINDS)] + for name in fnames[:limit] if limit else fnames: + rel = f"functions/{_safe(name)}.md" + merge_write(wiki_dir / rel, _render_function(con, name), code_hash=None, + wiki_dir=wiki_dir, doc_rel=rel) + stats["functions"] += 1 + + # TSTC 미확보 상태에서는 0건 — 데이터가 들어오면 그대로 생성된다 (ASSUMPTIONS.md §5) + for r in con.execute("SELECT tcode, program, text_ko FROM tcode ORDER BY tcode"): + rel = f"tcodes/{_safe(r['tcode'])}.md" + merge_write(wiki_dir / rel, _render_tcode(con, r["tcode"], r["program"] or "", r["text_ko"] or ""), + code_hash=None, wiki_dir=wiki_dir, doc_rel=rel) + stats["tcodes"] += 1 + + return stats diff --git a/wiki_out/merge.py b/wiki_out/merge.py new file mode 100644 index 0000000..57e3f14 --- /dev/null +++ b/wiki_out/merge.py @@ -0,0 +1,119 @@ +"""사람 교정 보존 병합 (계획서 v4 §5.7). + +대상은 git 에 커밋되는 program/package/concept 문서. units/ 는 재생성 산출물이라 +merge 없이 항상 덮어쓴다(호출부에서 결정). + +사람 교정 여부는 OKF v0.2 표준 필드로 판별한다 (docs/okf-version.md): + verified: { by: "human:", at: } ← 사람이 검토·수정 후 저장할 때 추가 +(구 계획서의 x-human-edited: true 규약도 하위호환으로 인식한다.) + +규칙: +- verified(human) 없는 문서 → 새 내용으로 덮어쓴다. +- verified(human) 있는 문서 → 본문을 보존하고 관리 대상 사실 필드만 갱신한다. + 코드 해시가 바뀐 경우에는 새 요약을 "## (자동 생성) 변경 후 요약" 섹션으로 덧붙이고 + status: draft 로 내린 뒤 wiki/_review.md 에 재검토 항목을 올린다. +""" +from __future__ import annotations + +import re +from datetime import date +from pathlib import Path + +FM_RE = re.compile(r"\A---\r?\n(.*?)\r?\n---\r?\n?", re.S) +AUTO_SECTION = "## (자동 생성) 변경 후 요약" + +# 배치가 항상 갱신하는 사실 필드 (모두 한 줄로 emit 됨 — okf_writer 참조) +MANAGED_KEYS = ( + "resource", "tags", "generated", + "x-lines", "x-tables-read", "x-tables-write", "x-calls", "x-outputs", + "x-code-hash", "x-prompt-version", "x-unit-count", "x-chunk-count", +) + + +def split_frontmatter(text: str) -> tuple[str | None, str]: + """(frontmatter 내용, 본문) — frontmatter 가 없으면 (None, 전체).""" + m = FM_RE.match(text) + if not m: + return None, text + return m.group(1), text[m.end():] + + +def is_human_verified(frontmatter: str | None) -> bool: + if not frontmatter: + return False + if re.search(r"""by:\s*['"]?human:""", frontmatter): + return True + return bool(re.search(r"^x-human-edited:\s*true\s*$", frontmatter, re.M)) # 하위호환 + + +def get_scalar(frontmatter: str, key: str) -> str | None: + m = re.search(rf"""^{re.escape(key)}:\s*['"]?(.*?)['"]?\s*$""", frontmatter, re.M) + return m.group(1) if m else None + + +def _replace_or_append_line(fm: str, key: str, line: str) -> str: + pattern = re.compile(rf"^{re.escape(key)}:.*$", re.M) + if pattern.search(fm): + return pattern.sub(line.replace("\\", "\\\\"), fm, count=1) + return fm.rstrip("\n") + "\n" + line + + +def _strip_auto_section(body: str) -> str: + idx = body.find(AUTO_SECTION) + return body if idx < 0 else body[:idx].rstrip("\n") + "\n" + + +def add_review_entry(wiki_dir: Path, doc_rel: str, reason: str) -> None: + review = wiki_dir / "_review.md" + lines = review.read_text(encoding="utf-8").splitlines() if review.exists() else [ + "# 재검토 필요 문서", "", + "코드가 바뀌어 사람 교정본과 어긋날 수 있는 문서 목록 (배치가 자동 추가).", "", + ] + entry = f"- [ ] {doc_rel} — {reason} ({date.today().isoformat()})" + if not any(doc_rel in ln for ln in lines): + lines.append(entry) + review.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def merge_write(path: Path, new_text: str, *, code_hash: str | None, + wiki_dir: Path, doc_rel: str) -> str: + """새로 생성한 문서(new_text)를 사람 교정 보존 규칙에 따라 path 에 쓴다. + + 반환: created | overwritten | facts_updated | draft_appended + """ + path.parent.mkdir(parents=True, exist_ok=True) + if not path.exists(): + path.write_text(new_text, encoding="utf-8") + return "created" + + old = path.read_text(encoding="utf-8") + fm_old, body_old = split_frontmatter(old) + if not is_human_verified(fm_old): + path.write_text(new_text, encoding="utf-8") + return "overwritten" + + # --- 사람 검토 문서: 본문 보존, 사실 필드만 갱신 --- + fm_new, body_new = split_frontmatter(new_text) + assert fm_new is not None + fm = fm_old or "" + for key in MANAGED_KEYS: + m = re.search(rf"^{re.escape(key)}:.*$", fm_new, re.M) + if m: + fm = _replace_or_append_line(fm, key, m.group(0)) + + old_hash = get_scalar(fm_old or "", "x-code-hash") + changed = bool(code_hash and old_hash and old_hash != code_hash) + if changed: + fm = _replace_or_append_line(fm, "status", "status: draft") + body = (_strip_auto_section(body_old).rstrip("\n") + + f"\n\n{AUTO_SECTION}\n\n" + + "> 코드가 변경되어 아래 요약을 새로 생성했습니다. 위 본문(사람 검토됨)과 대조해 반영해 주세요.\n\n" + + body_new.lstrip("\n")) + result = "draft_appended" + add_review_entry(wiki_dir, doc_rel, "코드 변경 — 사람 교정본과 대조 필요") + else: + body = body_old + result = "facts_updated" + + path.write_text(f"---\n{fm.strip()}\n---\n{body}", encoding="utf-8") + return result diff --git a/wiki_out/okf_writer.py b/wiki_out/okf_writer.py new file mode 100644 index 0000000..442024e --- /dev/null +++ b/wiki_out/okf_writer.py @@ -0,0 +1,460 @@ +"""OKF v0.2 마크다운 위키 출력 (계획서 v4 §5.7, docs/logic-chunk-design.md). + +- 문서 단위는 프로그램. LLM 이 골라낸 로직 조각(logic_chunk)은 프로그램 문서 안의 + `## 로직 조각` 섹션(조각마다 H3, resource 줄 범위)으로 들어간다. unit 별 개별 문서는 만들지 않는다 + (1만 프로그램 × 수십 unit 파일 문제 회피). +- 요약이 아직 없는 program 도 파서 구조 사실만으로 문서를 생성한다 + (원칙: 사실은 파서가, 해석은 LLM이 — 요약이 생기면 다음 실행에서 채워짐). +- 커밋·사람 교정 대상: programs/ packages/ concepts/ (merge 규칙 적용). +- OKF v0.2 필드 매핑(스펙 확인 2026-08-26, docs/okf-version.md): + generated: {by, at} = 생성 주체 / verified(human:) = 사람 교정 / status: draft = 재검토 필요. + x-* 는 스펙이 허용하는 확장 필드(소비자는 미지 키를 보존해야 함). +""" +from __future__ import annotations + +import re +import sqlite3 +from datetime import datetime, timezone +from pathlib import Path + +from config.settings import settings +from index import decls as decls_mod +from index.db import connect, loads +from parser.refs import EXTERNAL_CALL_KINDS + +from .merge import merge_write + +PIPELINE = "abap-indexing/wiki_out" + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat(timespec="seconds") + + +def _q(s: str) -> str: + """YAML 이중따옴표 스칼라.""" + return '"' + str(s).replace("\\", "\\\\").replace('"', '\\"') + '"' + + +def _lst(items) -> str: + """한 줄 YAML 리스트 — merge.py 가 줄 단위로 갱신할 수 있게 반드시 한 줄.""" + return "[" + ", ".join(_q(i) for i in items) + "]" + + +def _safe_name(name: str) -> str: + return re.sub(r"[^0-9A-Za-z_.\-#]", "_", name or "_") + + +def _fm(lines: list[str]) -> str: + return "---\n" + "\n".join(lines) + "\n---\n" + + +def _anchor(text: str) -> str: + """H3 제목 → 마크다운 링크용 앵커 (영문·숫자·한글·하이픈만).""" + return re.sub(r"[^0-9a-z가-힣\-]", "", text.lower().replace(" ", "-")) + + +# ------------------------------------------------------------- 로직 조각 섹션 + +MAX_CHUNK_CODE_LINES = 120 # 이보다 긴 조각은 앞부분만 싣고 나머지는 API 로 안내 + + +def _chunk_code(lines: list[str], line_start: int, line_end: int) -> tuple[list[str], int]: + """조각의 소스 원문을 '줄번호| 코드' 형태로. (표시 줄, 생략된 줄 수)""" + out: list[str] = [] + end = min(line_end, line_start + MAX_CHUNK_CODE_LINES - 1) + for no in range(line_start, end + 1): + if 1 <= no <= len(lines): + out.append(f"{no:6d}| {lines[no - 1]}") + return out, max(0, line_end - end) + + +def _render_chunks(con: sqlite3.Connection, program: str, + unit_by_id: dict[str, sqlite3.Row]) -> tuple[list[str], dict[tuple, dict]]: + """프로그램 문서의 `## 로직 조각` 섹션 — **소스 원문 + 자연어 설명**을 한 쌍으로 싣는다. + + 조각의 핵심은 "이 코드가 업무적으로 무엇을 하는가" 이므로 설명만 있으면 검증할 수 없다. + 코드 원문을 함께 실어 읽는 사람이 설명이 맞는지 바로 대조하게 한다. + + 순서는 **실행 순서(topo)** 를 따른다. include 이름 순으로 놓으면 공용 인클루드(ZFIALV·ZFICOM)의 + 유틸 조각이 프로그램 고유 업무 로직보다 앞에 나와 문서가 엉뚱해 보인다. + """ + needed: dict[tuple, dict] = {} # 조각들이 실제로 쓰는 선언 (정의부 섹션이 링크 대상으로 쓴다) + chunks = con.execute("SELECT * FROM logic_chunk WHERE program=?", (program,)).fetchall() + if not chunks: + return (["## 로직 조각", "", + "(아직 추출된 로직 조각이 없다 — LLM 조각 추출 전. `python -m summarize.runner` 참고)", ""], + needed) + + topo = {r["unit_id"]: r["ord"] for r in + con.execute("SELECT unit_id, ord FROM topo WHERE program=?", (program,))} + code_by_inc = {r["include"]: (r["code"] or "").split("\n") for r in + con.execute("SELECT include, code FROM include WHERE program=?", (program,))} + + ordered = sorted(chunks, key=lambda c: (topo.get(c["unit_id"], 9_999), c["include"], + c["line_start"])) + n_units = len({c["unit_id"] for c in chunks}) + body = [ + f"## 로직 조각 ({len(chunks)}건 / unit {n_units}개)", "", + "LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — " + "설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다.", + "테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.", + "", + ] + current_unit = None + for c in ordered: + u = unit_by_id.get(c["unit_id"]) + if c["unit_id"] != current_unit: + current_unit = c["unit_id"] + label = f"{u['unit_type']} {u['name']}" if u else c["unit_id"] + head = f"### {label}" + if u: + head += f" — `{c['include']}` L{u['line_start']}-L{u['line_end']} ({u['loc']}줄)" + body += [head, ""] + if u: + us = loads(u["summary_json"]) or {} + if us.get("purpose_ko"): + body += [f"*{us['purpose_ko']}*", ""] + cov = us.get("coverage") + if cov is not None: + body += [f"> 이 unit 의 조각 {us.get('chunk_count', 0)}개가 " + f"{us.get('covered_lines', 0)}/{u['loc']}줄({cov:.0%})을 덮는다. " + f"나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.", ""] + + body += [f"#### [{c['kind']}] {c['purpose_ko']}", ""] + + # --- 소스 원문 --- + lines = code_by_inc.get(c["include"], []) + chunk_code = "\n".join(lines[c["line_start"] - 1 : c["line_end"]]) + need = decls_mod.for_chunk(con, c, chunk_code) + shown, omitted = _chunk_code(lines, c["line_start"], c["line_end"]) + if shown: + body += [f"```abap", *shown] + if omitted: + body.append(f" … ({omitted}줄 생략 — 전체는 " + f"GET /chunks/{c['chunk_id'].replace('#', '%23')})") + body += ["```", ""] + + # --- 설명·사실 --- + if c["purpose_en"]: + body.append(f"- **EN**: {c['purpose_en']}") + tr, tw = loads(c["tables_read"]) or [], loads(c["tables_write"]) or [] + calls, objs = loads(c["calls"]) or [], loads(c["sap_objects"]) or [] + kw_ko = loads(c["keywords_ko"]) or [] + kw_en = loads(c["keywords_en"]) or [] + if tr or tw: + read_links = ", ".join(f"[{t}](/tables/{t}.md)" for t in tr) or "-" + write_links = ", ".join(f"[{t}](/tables/{t}.md)" for t in tw) or "-" + body.append(f"- 테이블(파서): read {read_links} / write {write_links}") + if calls: + body.append(f"- 호출(파서): {', '.join(calls)}") + if objs: + body.append(f"- SAP 객체: {', '.join(objs)}") + if kw_ko: + body.append(f"- 업무 키워드: {', '.join(kw_ko)}") + if kw_en: + body.append(f"- English: {', '.join(kw_en)}") + # 정의부 — 이 조각을 복사해 갈 때 함께 필요한 선언. 원문은 아래 `## 정의부` 에 한 번만 싣고 + # 여기서는 **이름 + 그 선언으로 가는 링크**만 둔다 (같은 구조 선언이 조각마다 반복되면 + # 문서를 읽을 수 없다). 링크는 문서 안 앵커라 뷰어에서는 눌러서 이동하고, + # LLM 이 읽을 때는 그냥 이름으로 읽힌다. + if need["declarations"]: + needed.update({_decl_key(d): d for d in need["declarations"]}) + names = ", ".join(f"[`{d['name']}`](#{_decl_anchor(d)})" for d in need["declarations"][:12]) + more = f" 외 {len(need['declarations']) - 12}건" if len(need["declarations"]) > 12 else "" + body.append(f"- 정의부(복사 시 함께 필요): {names}{more}") + if need["unresolved"]: + body.append(f"- 선언을 못 찾은 이름: {', '.join(need['unresolved'][:8])} " + f"(수집 안 된 인클루드·함수 인터페이스일 수 있다)") + body.append(f"- 위치: `abap://{program}/{c['include']}#L{c['line_start']}-L{c['line_end']}` " + f"· confidence {c['confidence']} · `{c['chunk_id']}`") + body.append("") + return body, needed + + +# ------------------------------------------------------------- 정의부 섹션 + +MAX_DECL_CODE_LINES = 60 # 한 선언이 이보다 길면 앞부분만 (구조체 수백 줄짜리가 있다) + + +def _decl_key(d: dict) -> tuple[str, str, int]: + """선언 한 건을 가리키는 키. 같은 이름이 인클루드·unit 마다 따로 있을 수 있어 위치까지 쓴다.""" + return (d["include"], d["name"], d["line_start"]) + + +def _decl_anchor(d: dict) -> str: + """조각 → 정의부 항목으로 가는 문서 내 앵커 id.""" + inc, name, line = _decl_key(d) + return re.sub(r"[^0-9a-z가-힣_-]", "-", f"decl-{inc}-{line}-{name}".lower()) + + +def _render_declarations(con: sqlite3.Connection, program: str, + needed: dict[tuple, dict]) -> list[str]: + """`## 정의부` — 이 프로그램이 선언한 내부테이블·스트럭처·상수·필드심볼의 **원문**. + + 조각 코드는 로직만이라 그대로 붙여넣으면 컴파일되지 않는다. 조각마다 필요한 선언은 위에서 + 이름으로 가리키고(앵커 링크), 원문은 여기 한 번만 싣는다. 붙여넣기용 조립본은 + `GET /chunks/` 의 `declaration_code` 다 (index/decls.py). + + 싣는 것: 전역 선언 전체 + **조각이 실제로 쓰는 unit 로컬 선언**. 후자를 빼면 조각의 + 정의부 링크가 갈 곳이 없어진다(FORM 머리에서 선언된 작업영역이 그렇다). + """ + rows = decls_mod.program_declarations(con, program, scope="global") + seen = {_decl_key(r) for r in rows} + rows += [d for k, d in needed.items() if k not in seen] + if not rows: + return [] + body = [ + f"## 정의부 ({len(rows)}건)", "", + "로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. " + "조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), " + "붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다.", "", + ] + by_include: dict[str, list[dict]] = {} + for r in rows: + by_include.setdefault(r["include"], []).append(r) + for include, items in by_include.items(): + items.sort(key=lambda d: d["line_start"]) + body += [f"### `{include}` ({len(items)}건)", ""] + for d in items: + code_lines = d["code"].split("\n") + shown = code_lines[:MAX_DECL_CODE_LINES] + scope_note = " · unit 로컬" if d["scope"] == "unit" else "" + # `{#id}` 는 제목에 앵커를 다는 표기다 — 뷰어가 이걸 id 로 바꿔 링크가 걸린다. + body += [f"#### {d['name']} — {d['kind']}{scope_note} · " + f"L{d['line_start']}-L{d['line_end']} {{#{_decl_anchor(d)}}}", "", + "```abap", *shown] + if len(code_lines) > MAX_DECL_CODE_LINES: + body.append(f"* … ({len(code_lines) - MAX_DECL_CODE_LINES}줄 생략)") + body += ["```", ""] + return body + + +# ------------------------------------------------------------- program 문서 + +def _render_program(con: sqlite3.Connection, p: sqlite3.Row) -> tuple[str, str | None]: + program = p["name"] + summary = loads(p["summary_json"]) or {} + units = con.execute( + "SELECT * FROM unit WHERE program=? ORDER BY include, line_start", (program,) + ).fetchall() + # call_type 을 걸러야 한다 — 걸르지 않으면 CL_GUI_ALV_GRID=>MC_FC_* 상수 읽기와 + # CALL SCREEN 의 화면번호('100')가 외부 호출 목록을 다 차지하고 정작 FM 호출이 상한에 밀린다. + ph = ",".join("?" * len(EXTERNAL_CALL_KINDS)) + ext_calls = [r["external_name"] for r in con.execute( + f"SELECT DISTINCT external_name FROM call_edge WHERE program=? AND external_name IS NOT NULL " + f"AND call_type IN ({ph}) ORDER BY external_name LIMIT 40", (program, *EXTERNAL_CALL_KINDS))] + t_read = [r["table_name"] for r in con.execute( + "SELECT DISTINCT table_name FROM table_ref WHERE program=? AND mode='read' ORDER BY table_name", + (program,))] + t_write = [r["table_name"] for r in con.execute( + "SELECT DISTINCT table_name FROM table_ref WHERE program=? AND mode='write' ORDER BY table_name", + (program,))] + chunk_count = con.execute( + "SELECT COUNT(*) AS c FROM logic_chunk WHERE program=?", (program,)).fetchone()["c"] + decl_count = con.execute( + "SELECT COUNT(*) AS c FROM declaration WHERE program=? AND scope='global'", + (program,)).fetchone()["c"] + chunk_keywords = [] + for r in con.execute("SELECT keywords_ko FROM logic_chunk WHERE program=?", (program,)): + chunk_keywords += loads(r["keywords_ko"]) or [] + tags = list(dict.fromkeys( + (summary.get("business_tags") or []) + + ([summary.get("sap_module")] if summary.get("sap_module") else []) + + chunk_keywords + ))[:20] + purpose = summary.get("business_purpose_ko") or "" + generated_by = f"abap-indexing/{settings.llm_model}" if (summary or chunk_count) else "abap-indexing/parser" + + title = "{} — {}".format(program, p["title_ko"] or "").rstrip(" —") + fm = [ + "type: abap-program", + f"title: {_q(title)}", + f"description: {_q(purpose or p['title_ko'] or program)}", + f"resource: {_q('abap://' + program)}", + f"tags: {_lst(tags)}", + f"generated: {{ by: {_q(generated_by)}, at: {_q(_now())} }}", + "status: stable" if summary else "status: draft", + f"x-package: {p['devclass'] or ''}", + f"x-changed-on: {p['changed_on'] or ''}", + f"x-tables-read: {_lst(t_read[:40])}", + f"x-tables-write: {_lst(t_write[:40])}", + f"x-calls: {_lst(ext_calls)}", + f"x-code-hash: {_q(p['source_hash'] or '')}", + f"x-unit-count: {len(units)}", + f"x-chunk-count: {chunk_count}", + f"x-declaration-count: {decl_count}", + ] + + body: list[str] = ["## 업무 목적", "", purpose or p["title_ko"] or "(LLM 요약 전)", ""] + flow = summary.get("main_flow") or [ + f"{u['name']} ({u['include']} L{u['line_start']})" + for u in units if u["unit_type"] == "EVENT" + ] + if flow: + body += ["## 주 흐름", ""] + [f"{i}. {s}" for i, s in enumerate(flow, 1)] + [""] + if summary.get("key_internal_tables"): + body += ["## 핵심 내부테이블", ""] + for t in summary["key_internal_tables"]: + body.append(f"- `{t.get('name')}` — {t.get('desc_ko','')} " + f"(채움: {', '.join(t.get('filled_by', [])) or '?'} / " + f"소비: {', '.join(t.get('consumed_by', [])) or '?'})") + body.append("") + body += ["## 테이블 / 외부 호출", "", + f"- read: {', '.join(t_read[:30]) or '-'}", + f"- write: {', '.join(t_write[:30]) or '-'}", + f"- 외부 호출: {', '.join(ext_calls[:30]) or '-'}", ""] + unit_by_id = {u["unit_id"]: u for u in units} + chunk_body, needed_decls = _render_chunks(con, program, unit_by_id) + body += chunk_body + body += _render_declarations(con, program, needed_decls) + body += ["## Unit 목록 (컨테이너)", "", "| unit | 유형 | 위치 | 조각 | 한 줄 요약 |", "|---|---|---|---|---|"] + for u in units: + if u["unit_type"] not in ("FORM", "METHOD", "FUNCTION", "MODULE", "EVENT"): + continue + us = loads(u["summary_json"]) or {} + body.append(f"| {u['name']} | {u['unit_type']} | {u['include']} " + f"L{u['line_start']}-{u['line_end']} | {u['chunk_count'] or 0} | {us.get('purpose_ko','')} |") + body.append("") + return _fm(fm) + "\n" + "\n".join(body), p["source_hash"] + + +# ------------------------------------------------------------- package 문서 + +def _render_package(con: sqlite3.Connection, devclass: str, text_ko: str) -> str: + progs = con.execute( + "SELECT name, title_ko, has_source FROM program WHERE devclass=? ORDER BY name", (devclass,) + ).fetchall() + title = "{} — {}".format(devclass, text_ko or "").rstrip(" —") + fm = [ + "type: abap-package", + f"title: {_q(title)}", + f"description: {_q(text_ko or devclass)}", + f"resource: {_q('abap://package/' + devclass)}", + "tags: []", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + f"x-program-count: {len(progs)}", + ] + body = [f"## 프로그램 목록 ({len(progs)}건)", "", "| 프로그램 | 타이틀 | 소스 |", "|---|---|---|"] + body += [f"| [{r['name']}](/programs/{r['name']}.md) | {r['title_ko'] or ''} " + f"| {'O' if r['has_source'] else '-'} |" for r in progs] + body.append("") + return _fm(fm) + "\n" + "\n".join(body) + + +# ---------------------------------------------------------------- 매니페스트 + +def write_manifest(wiki_dir: Path, con: sqlite3.Connection | None = None) -> None: + """OKF v0.2 예약 파일 index.md — 번들 루트 매니페스트 (구 계획의 okf.yaml 대체). + + 단순 디렉토리 나열이 아니라 **계층 진입점**이다 (수정사항 8번): SAP 모듈 → 패키지 → + 프로그램으로 내려갈 수 있어야 에이전트가 위키를 따라 탐색할 수 있다. + """ + counts = {} + for sub in ("programs", "packages", "concepts", "tables", "functions", "tcodes"): + d = wiki_dir / sub + counts[sub] = sum(1 for _ in d.rglob("*.md")) if d.exists() else 0 + chunk_re = re.compile(r"^x-chunk-count: (\d+)$", re.M) + counts["chunks"] = 0 + if (wiki_dir / "programs").exists(): + for f in (wiki_dir / "programs").glob("*.md"): + m = chunk_re.search(f.read_text(encoding="utf-8")[:4000]) + counts["chunks"] += int(m.group(1)) if m else 0 + fm = [ + "type: index", + 'okf_version: "0.2"', + f"title: {_q('ABAP 소스 위키')}", + f"description: {_q('ABAP 프로그램·로직 조각·엔티티(테이블/FM)의 위키 — 모듈에서 프로그램으로 내려가는 진입점')}", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + ] + body = [ + "## 구성", "", + f"- [programs/](/programs/) — 프로그램 문서 {counts['programs']}건, 로직 조각 {counts['chunks']}건 포함 (커밋·교정 대상)", + f"- [packages/](/packages/) — 패키지 문서 {counts['packages']}건 (커밋·교정 대상)", + f"- [concepts/](/concepts/) — 도메인 개념 {counts['concepts']}건 (질의 확장 사전과 같은 원본)", + f"- [tables/](/tables/) — 테이블 엔티티 {counts['tables']}건 (이 테이블을 읽고 쓰는 프로그램 전부)", + f"- [functions/](/functions/) — 펑션모듈·BAPI·RFC {counts['functions']}건 (호출처 전부)", + f"- [tcodes/](/tcodes/) — T-Code {counts['tcodes']}건", + "", + "프로그램 문서의 `## 로직 조각` 섹션이 검색의 1차 단위다 (LLM 이 코드에서 골라낸 업무 로직).", + "위키 본문은 LLM 이 쓴 **해석**이다. \"어디서 채워지나/누가 호출하나\" 같은 사실은", + "index-api 의 trace/graph/usage 도구로 확인한다.", + "", + ] + if con is not None: + body += _hierarchy_section(con) + wiki_dir.mkdir(parents=True, exist_ok=True) + (wiki_dir / "index.md").write_text(_fm(fm) + "\n" + "\n".join(body), encoding="utf-8") + + +def _hierarchy_section(con: sqlite3.Connection) -> list[str]: + """SAP 모듈 → 패키지 → 프로그램 계층. 모듈은 요약의 sap_module, 없으면 이름 접두로 추정.""" + rows = con.execute( + "SELECT p.name, p.devclass, p.title_ko, p.summary_json, p.has_source, " + "COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass=p.devclass WHERE p.has_source=1 ORDER BY p.name" + ).fetchall() + tree: dict[str, dict[str, list[sqlite3.Row]]] = {} + for r in rows: + module = ((loads(r["summary_json"]) or {}).get("sap_module") or "").strip().upper() + if not module: + # 요약 전에도 계층이 서야 한다 — Z<모듈><번호> 관행에서 2글자 모듈 코드를 추정 + m = re.match(r"^[YZ]([A-Z]{2})", r["name"] or "") + module = m.group(1) if m else "기타" + tree.setdefault(module, {}).setdefault(r["devclass"] or "(패키지 미지정)", []).append(r) + + out = ["## 계층 — 모듈 → 패키지 → 프로그램", ""] + for module in sorted(tree): + n = sum(len(v) for v in tree[module].values()) + out.append(f"### {module} ({n}본)") + out.append("") + for devclass, progs in sorted(tree[module].items()): + link = f"[{devclass}](/packages/{devclass}.md)" if devclass != "(패키지 미지정)" else devclass + out.append(f"- {link}") + for p in progs: + title = p["title_ko"] or "" + out.append(f" - [{p['name']}](/programs/{p['name']}.md)" + + (f" — {title}" if title else "")) + out.append("") + return out + + +# ------------------------------------------------------------------ 진입점 + +def write_program_wiki(program: str, con: sqlite3.Connection | None = None, + wiki_dir: Path | None = None) -> dict: + """프로그램 하나의 program(로직 조각 포함)/package 문서를 생성·병합한다. 조각 추출 후 호출.""" + own = con is None + con = con or connect() + wiki_dir = wiki_dir or settings.wiki_dir + stats: dict[str, int] = {"chunks": 0, "programs": 0, "packages": 0} + try: + p = con.execute( + "SELECT p.*, COALESCE(k.text_ko,'') AS pkg_text FROM program p " + "LEFT JOIN package k ON k.devclass=p.devclass WHERE p.name=?", + (program.upper(),), + ).fetchone() + if not p: + raise ValueError(f"프로그램 '{program}' 이(가) 인덱스에 없습니다") + program = p["name"] + stats["chunks"] = con.execute( + "SELECT COUNT(*) AS c FROM logic_chunk WHERE program=?", (program,)).fetchone()["c"] + + # program 문서 — 사람 교정 보존 병합 + text, source_hash = _render_program(con, p) + rel = f"programs/{program}.md" + merge_write(wiki_dir / rel, text, code_hash=source_hash, wiki_dir=wiki_dir, doc_rel=rel) + stats["programs"] += 1 + + # package 문서 — 사람 교정 보존 병합 (해시 개념 없음 → 본문 보존만) + if p["devclass"]: + rel = f"packages/{p['devclass']}.md" + merge_write(wiki_dir / rel, _render_package(con, p["devclass"], p["pkg_text"]), + code_hash=None, wiki_dir=wiki_dir, doc_rel=rel) + stats["packages"] += 1 + + write_manifest(wiki_dir, con) + return stats + finally: + if own: + con.close() diff --git a/wiki_out/run.py b/wiki_out/run.py new file mode 100644 index 0000000..de6ed9d --- /dev/null +++ b/wiki_out/run.py @@ -0,0 +1,96 @@ +"""위키 생성 CLI (계획서 v4 §5.7, §11.6). + +python -m wiki_out.run [--program X] [--all] [--limit N] [--dry-run] + +- 요약(Stage 3) 이 없어도 파서 구조 사실만으로 문서를 만든다(조각이 생기면 재실행 시 채워짐). +- programs/packages/concepts 는 사람 교정 보존 병합(merge.py). 로직 조각은 프로그램 문서 안의 섹션. +""" +from __future__ import annotations + +import argparse +import json +import re + +from config.glossary import load_glossary +from config.settings import settings +from index.db import connect + +from .entities import write_entity_wiki +from .merge import merge_write +from .okf_writer import PIPELINE, _fm, _lst, _now, _q, write_manifest, write_program_wiki + + +def write_concepts() -> int: + """도메인 용어 사전을 concepts/ 문서로 출력. + + 사전 로딩은 config.glossary 로 옮겼다 — 질의 확장(query/expand.py)이 같은 사전을 써야 하고, + 파싱 규칙이 두 곳에 있으면 갈라진다. + """ + glossary = load_glossary() + count = 0 + for concept, related in glossary.items(): + fm = [ + "type: concept", + f"title: {_q(concept)}", + f"description: {_q(concept + ' — 도메인 개념 (질의 확장용)')}", + f"tags: {_lst(related[:10])}", + f"generated: {{ by: {_q(PIPELINE)}, at: {_q(_now())} }}", + ] + body = ["## 관련 용어", "", + "이 목록은 검색 질의 확장에도 쓰인다 — `/search/logic?q=` 에 아래 어느 말로 물어도 걸린다.", + ""] + [f"- {t}" for t in related] + [""] + rel = f"concepts/{re.sub(r'[^0-9A-Za-z가-힣_.-]', '_', concept)}.md" + merge_write(settings.wiki_dir / rel, _fm(fm) + "\n" + "\n".join(body), + code_hash=None, wiki_dir=settings.wiki_dir, doc_rel=rel) + count += 1 + return count + + +def main() -> None: + ap = argparse.ArgumentParser(description="OKF 위키 생성") + ap.add_argument("--program", default=None, help="프로그램 하나만") + ap.add_argument("--all", action="store_true", help="소스 있는 전체 프로그램") + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--no-entities", action="store_true", + help="tables/ functions/ tcodes/ 엔티티 페이지를 만들지 않는다") + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + + con = connect() + try: + if args.program: + names = [args.program.upper()] + elif args.all: + rows = con.execute( + "SELECT name FROM program WHERE has_source=1 ORDER BY name").fetchall() + names = [r["name"] for r in rows] + else: + ap.error("--program 또는 --all 필요") + if args.limit: + names = names[: args.limit] + if args.dry_run: + print(json.dumps({"would_process": len(names)}, ensure_ascii=False)) + return + + totals = {"programs": 0, "chunks": 0, "packages": 0, "failed": 0} + for name in names: + try: + s = write_program_wiki(name, con=con) + totals["programs"] += s["programs"] + totals["chunks"] += s["chunks"] + totals["packages"] += s["packages"] + except Exception as e: # noqa: BLE001 + totals["failed"] += 1 + print(f"[FAIL] {name}: {type(e).__name__}: {e}") + totals["concepts"] = write_concepts() + if not args.no_entities: + # tables/ functions/ tcodes/ — 파서 사실만으로 만들어진다 (수정사항 8번) + totals.update(write_entity_wiki(con, settings.wiki_dir)) + write_manifest(settings.wiki_dir, con) + print(json.dumps(totals, ensure_ascii=False)) + finally: + con.close() + + +if __name__ == "__main__": + main() diff --git a/wiki_out/validate.py b/wiki_out/validate.py new file mode 100644 index 0000000..8cf807a --- /dev/null +++ b/wiki_out/validate.py @@ -0,0 +1,54 @@ +"""위키 frontmatter 검증 (계획서 v4 §5.7 validate_wiki — CI/훅용). + +python -m wiki_out.validate [--dir wiki] + +규칙 (OKF v0.2 conformance): +- 예약 파일(index.md, log.md)과 _review.md 를 제외한 모든 .md 는 frontmatter 를 갖는다. +- frontmatter 에 비어 있지 않은 type 필드가 있어야 한다. +실패 목록을 출력하고 exit 1. +""" +from __future__ import annotations + +import argparse +import sys +from pathlib import Path + +from config.settings import settings + +from .merge import get_scalar, split_frontmatter + +RESERVED = {"index.md", "log.md", "_review.md"} + + +def validate(wiki_dir: Path) -> list[str]: + errors: list[str] = [] + if not wiki_dir.exists(): + return [f"위키 디렉토리 없음: {wiki_dir}"] + for path in sorted(wiki_dir.rglob("*.md")): + rel = path.relative_to(wiki_dir).as_posix() + if path.name in RESERVED: + continue + fm, _ = split_frontmatter(path.read_text(encoding="utf-8")) + if fm is None: + errors.append(f"{rel}: frontmatter 없음") + continue + if not (get_scalar(fm, "type") or "").strip(): + errors.append(f"{rel}: type 필드 없음/비어 있음") + return errors + + +def main() -> None: + ap = argparse.ArgumentParser(description="OKF 위키 검증") + ap.add_argument("--dir", default=None) + args = ap.parse_args() + wiki_dir = Path(args.dir) if args.dir else settings.wiki_dir + errors = validate(wiki_dir) + for e in errors: + print(f"[INVALID] {e}") + total = sum(1 for _ in wiki_dir.rglob("*.md")) if wiki_dir.exists() else 0 + print(f"검사 {total}건, 오류 {len(errors)}건") + sys.exit(1 if errors else 0) + + +if __name__ == "__main__": + main() diff --git a/wiki_out/viewer.html b/wiki_out/viewer.html new file mode 100644 index 0000000..914fa90 --- /dev/null +++ b/wiki_out/viewer.html @@ -0,0 +1,482 @@ + +ABAP LLM 위키 + + + + +
+

+ 스냅샷 __GENERATED_AT__ + +
+
+ +
+
+ + + diff --git a/wiki_out/viewer.py b/wiki_out/viewer.py new file mode 100644 index 0000000..c62d162 --- /dev/null +++ b/wiki_out/viewer.py @@ -0,0 +1,194 @@ +"""위키 뷰어 빌더 — wiki/ 를 스캔해 단일 HTML(뷰어)로 만든다. + +- 템플릿: wiki_out/viewer.html (플레이스홀더 __DATA_JSON__, __GENERATED_AT__) +- 빌드: python -m wiki_out.viewer [--out PATH] (기본 data/wiki-viewer.html) +- 라이브: query/api.py 의 GET /wiki-viewer 가 요청마다 build_html() 호출 +- 공유용 스냅샷은 이 출력을 Claude 아티팩트로 게시 (index.db 관측소와 같은 패턴) +""" +from __future__ import annotations + +import argparse +import json +import re +from datetime import datetime +from pathlib import Path + +from config.settings import settings + +from .merge import is_human_verified, split_frontmatter + +TEMPLATE = Path(__file__).parent / "viewer.html" + + +def _fm_get(fm: str, key: str) -> str | None: + m = re.search(rf"^{re.escape(key)}: (.*)$", fm, re.M) + return m.group(1).strip() if m else None + + +def _unquote(v: str | None) -> str: + if not v: + return "" + if v.startswith('"'): + try: + return json.loads(v) + except ValueError: + return v.strip('"') + return v + + +def _list(v: str | None) -> list: + if not v or not v.startswith("["): + return [] + try: + return json.loads(v) + except ValueError: + return [] + + +# 프로그램 문서의 조각 섹션을 읽어 사이드바 내비게이션을 만든다. +# okf_writer 가 생성하는 모양에 의존한다: +# ### FORM SELECT_DATA — `ZFIR0030F01` L64-L80 (17줄) +# #### [sql_select] 미처리 건을 읽는다 +_UNIT_H = re.compile(r"^### (\w+) (.+?) — `([^`]+)` L(\d+)-L(\d+)", re.M) +_CHUNK_H = re.compile(r"^#### \[(\w+)\] (.+)$", re.M) + + +def _chunk_nav(body: str) -> list[dict]: + """프로그램 문서 본문 → [{unit, unit_type, include, kind, purpose}] (문서 순서 유지). + + 구조 변경(2026-09-16)으로 units/ 문서가 없어졌으므로, 내비게이션은 프로그램 문서 안의 + 조각 섹션에서 뽑는다. 예전 x-unit-* frontmatter 기반 코드는 항상 빈 목록을 돌려줬다. + """ + out: list[dict] = [] + cur = {"unit": "", "unit_type": "", "include": ""} + for m in re.finditer(r"^(###|####) (.*)$", body, re.M): + level, text = m.group(1), m.group(2) + if level == "###": + um = _UNIT_H.match(m.group(0)) + if um: + cur = {"unit": um.group(2), "unit_type": um.group(1), "include": um.group(3)} + else: + cur = {"unit": text, "unit_type": "", "include": ""} + else: + cm = _CHUNK_H.match(m.group(0)) + if cm: + out.append({**cur, "kind": cm.group(1), "purpose": cm.group(2)}) + return out + + +def build_data(wiki_dir: Path | None = None) -> dict: + wiki_dir = wiki_dir or settings.wiki_dir + docs: dict[str, dict] = {} + chunk_nav: dict[str, list[dict]] = {} # program → 조각 목록 + + for path in sorted(wiki_dir.rglob("*.md")): + rel = path.relative_to(wiki_dir).as_posix() + if path.name in ("index.md", "log.md", "_review.md"): + continue + fm, body = split_frontmatter(path.read_text(encoding="utf-8")) + if fm is None: + continue + gen = "" + m = re.search(r'generated:.*?by:\s*"([^"]+)".*?at:\s*"([^"]+)"', fm) + if m: + gen = f"{m.group(1)} · {m.group(2)}" + doc = { + "t": _fm_get(fm, "type") or "?", + "title": _unquote(_fm_get(fm, "title")) or rel, + "d": _unquote(_fm_get(fm, "description")), + "tags": _list(_fm_get(fm, "tags")), + "st": _fm_get(fm, "status") or "stable", + "gen": gen, + "res": _unquote(_fm_get(fm, "resource")), + "ver": is_human_verified(fm), + "body": body.strip(), + } + docs[rel] = doc + if doc["t"] == "abap-program": + name = rel.rsplit("/", 1)[-1][:-3] + chunk_nav[name] = _chunk_nav(doc["body"]) + doc["chunk_count"] = len(chunk_nav[name]) + + programs = [] + for rel, d in docs.items(): + if d["t"] != "abap-program": + continue + name = rel.rsplit("/", 1)[-1][:-3] + chunks = chunk_nav.get(name, []) + # unit 단위로 묶어 사이드바에 접히는 목록으로 준다 + by_unit: list[dict] = [] + for c in chunks: + if not by_unit or by_unit[-1]["name"] != c["unit"]: + by_unit.append({"name": c["unit"], "type": c["unit_type"], + "include": c["include"], "chunks": []}) + by_unit[-1]["chunks"].append({"kind": c["kind"], "purpose": c["purpose"]}) + # 개요 표에는 짧은 타이틀(frontmatter title 의 "NAME — " 뒤)만 싣고, 긴 LLM 설명은 desc 로 따로 준다 + short = re.sub(rf"^{re.escape(name)}\s*[—-]\s*", "", d["title"]).strip() or name + programs.append({ + "name": name, "path": rel, "title": short, "desc": d["d"] or "", + "status": d["st"], "verified": d["ver"], + "units": by_unit, + "chunks": len(chunks), + "done": len(by_unit), "total": len(by_unit), + }) + programs.sort(key=lambda p: p["name"]) + + packages = sorted( + ({"name": rel.rsplit("/", 1)[-1][:-3], "path": rel, + "count": len([1 for ln in d["body"].splitlines() if ln.startswith("| [")])} + for rel, d in docs.items() if d["t"] == "abap-package"), + key=lambda p: p["name"]) + concepts = sorted( + ({"name": d["title"], "path": rel} for rel, d in docs.items() if d["t"] == "concept"), + key=lambda c: c["name"]) + + review_path = wiki_dir / "_review.md" + review = (sum(1 for ln in review_path.read_text(encoding="utf-8").splitlines() + if ln.startswith("- [ ]")) if review_path.exists() else 0) + + tables = sorted( + ({"name": rel.rsplit("/", 1)[-1][:-3], "path": rel} + for rel, d in docs.items() if d["t"] == "abap-table"), + key=lambda c: c["name"]) + functions = sorted( + ({"name": rel.rsplit("/", 1)[-1][:-3], "path": rel} + for rel, d in docs.items() if d["t"] == "abap-function"), + key=lambda c: c["name"]) + + n_chunks = sum(p["chunks"] for p in programs) + units_total = sum(p["total"] for p in programs) + return { + "stats": { + "programs": len(programs), + "chunks": n_chunks, + "units_total": units_total, "units_done": units_total, + "tables": len(tables), "functions": len(functions), + "human_verified": sum(1 for d in docs.values() if d["ver"]), + "review": review, + }, + "docs": docs, "programs": programs, "packages": packages, "concepts": concepts, + "tables": tables, "functions": functions, + } + + +def build_html(wiki_dir: Path | None = None) -> str: + data = build_data(wiki_dir) + payload = json.dumps(data, ensure_ascii=False, separators=(",", ":")).replace(" None: + ap = argparse.ArgumentParser(description="위키 뷰어 HTML 빌드") + ap.add_argument("--out", default=None) + args = ap.parse_args() + out = Path(args.out) if args.out else settings.wiki_dir.parent / "data" / "wiki-viewer.html" + out.parent.mkdir(parents=True, exist_ok=True) + html = build_html() + out.write_text(html, encoding="utf-8") + print(f"{out} ({len(html) / 1024:.0f} KB)") + + +if __name__ == "__main__": + main() diff --git a/스크린샷 2026-09-17 125352.png b/스크린샷 2026-09-17 125352.png new file mode 100644 index 0000000..b628e5c Binary files /dev/null and b/스크린샷 2026-09-17 125352.png differ